Xiph logo
—The CELT codec has been merged into the IETF Opus codec and is now obsolete—

The CELT ultra-low delay audio codec


The CELT codec is a compression algorithm for audio. Like MP3, Vorbis, and AAC it is suitable for transmitting music with high quality. Unlike these formats CELT imposes very little delay on the signal, even less than is typical for speech centric formats like Speex, GSM, or G.729.

Using CELT application developers can build software that allows musicians to perform together across the Internet, or simply build great sounding telephony systems. Why shouldn't your telephone sound as good as your stereo?

Like other open and unencumbered technology from the Xiph.Org Foundation CELT requires no royalties and no complicated licensing.

The Technology

CELT stands for "Constrained Energy Lapped Transform". It applies some of the CELP principles, but does everything in the frequency domain, which removes some of the limitations of CELP. CELT is suitable for both speech and music and currently features:

  • Ultra-low latency (typically from 5 to 22.5 ms)
  • Full audio bandwidth (≥20kHz; sample rates from 8 kHz to 48 kHz)
  • Support for both speech and music
  • A quality/bitrate trade-off competitive with widely used high delay codecs
  • Stereo support
  • Packet loss concealment
  • Constant bit-rates from 32 kbps to 128 kbps and above
  • A fixed-point version of the encoder and decoder

The CELT codec is meant to bridge the gap between Vorbis and Speex for applications where both high quality audio and low delay are desired.

Getting Involved

CELT is still in an early state of development. At this point, two ways of getting involved are: helping design the algorithm (requires strong DSP knowledge) or building applications using CELT. Your feedback can help define the future direction the codec will take.

Since CELT is still in development, most new releases (even minor ones) change the bit-stream, so compatibility is not preserved. This instability is why CELT is currently called experimental. The ability to change the format is important in allowing us to make quality improvements while we develop CELT. Once version 1.0 is released the bitstream will be frozen and future revisions will be compatible.

If you are interested in using CELT privately, among people who can coordinate CELT versions, in non-interoperable embedded applications, or are doing software development in preparation for the final version then the instability of the bitstream should not be a problem for you and we'd like your feedback. However, for major public adoption CELT will need to reach 1.0.

If you have questions or are interested in contributing to the project, you can join the mailing list. You can also contact the Project Lead, Jean-Marc Valin (the mailing list is usually preferable).


  • Version 0.11.0 and 0.11.1 released

    15 February, 2011

    CELT 0.11.0 (originally not announced) and 0.11.1 has been released with a focus on freezing the bit-stream and updating the API. The bit-stream is now in "soft-freeze" state meaning there is an attempt to keep it fixed, but some bugs may force changes. Version 0.11 includes some minor quality improvements, mostly at high bit-rate. In version 0.11.1, some minor changes to the bit-stream were necessary to address two minor bugs in 0.11. The quality should improve (very) slightly, but not enough to be noticeable in most cases. Several Opus-related bugs have also been fixed.

  • Version 0.10.0 released

    21 December, 2010

    CELT 0.10.0 has been released with a focus on quality improvements. The bit-stream is not compatible with version 0.9.x. See Monty's CELT demo page for more details on recent (and less recent) CELT development.

  • Version 0.9.1 released

    8 November, 2010

    CELT 0.9.1 greatly improves the packet loss concealment. This change is especially dramatic in fixed point mode. The bit-stream is compatible with 0.9.0.

—The CELT codec has been merged into the IETF Opus codec and is now obsolete—