What Is Opus? The Modern Audio Codec Explained
Opus is an IETF-standard, royalty-free audio codec that handles speech and music in one design. Learn how it works, where it is used, and how to convert.
The Short Answer
Opus is an open, royalty-free audio codec standardized by the Internet Engineering Task Force as RFC 6716 in September 2012. It is designed as a single codec that covers everything from 6 kbps narrowband speech to 510 kbps high-resolution stereo music, with latency low enough for real-time communication. By any objective measurement Opus is the best lossy audio codec currently available — it outperforms MP3, AAC, and Vorbis at every bitrate where they overlap, and it is the codec inside almost every modern voice and video call you make: Discord, WhatsApp, Zoom, Microsoft Teams, Google Meet, Signal, and the WebRTC stack underneath all of them.
What makes Opus unusual is that it solved two normally separate problems in one design: low-bitrate speech (where you want a vocal-tract model) and music (where you want a transform codec). Most codecs pick one and do the other badly. Opus does both, and switches between them automatically inside a single stream.
A Brief History
Opus was developed jointly between 2010 and 2012 by an unusually broad coalition: Xiph.Org Foundation (Vorbis, FLAC, Theora), Skype (which Microsoft acquired during development), Mozilla, Broadcom, the Octasic semiconductor company, Google, and Microsoft itself. The IETF's codec working group was specifically chartered to produce a royalty-free codec suitable for WebRTC, and the resulting RFC 6716 was published in September 2012.
The codec was assembled from two existing designs. SILK, originally developed by Skype for its voice client and previously deployed in millions of Skype calls, contributed the speech coding engine. CELT (Constrained Energy Lapped Transform), developed at Xiph by Jean-Marc Valin, contributed the music coding engine. The two designs were merged into a single bitstream specification with a hybrid mode that runs both engines simultaneously for medium-bitrate audio. Subsequent revisions — Opus 1.1 (2013), 1.2 (2017), 1.3 (2018), 1.4 (2023), and 1.5 (2024) — improved the encoder without changing the bitstream, so old Opus files keep decoding cleanly while new files benefit from better encoder analysis.
The IETF mandate was important politically: Opus was specifically designed and licensed so that no patent claim could be brought against it. The reference encoder, decoder, and specification are all under BSD-style licenses, and the included patents from the contributing companies are royalty-free. This is what allowed the entire WebRTC ecosystem — the audio side of every browser-based voice and video call — to standardize on a single codec without licensing negotiations.
Hybrid Codec Design
Opus is genuinely two codecs in one bitstream:
SILK is a linear predictive coder optimized for the human voice. It models the vocal tract as a time-varying filter and encodes the residual after that model is subtracted, similar in concept to AMR-WB and the speech codecs in mobile phones. SILK is what makes Opus exceptional at very low bitrates for speech — at 16 kbps a SILK-mode Opus stream sounds noticeably better than an AMR-WB stream at the same bitrate, and far better than MP3 at 32 kbps.
CELT is a transform codec like AAC or Vorbis, but using a modified discrete cosine transform with much shorter analysis windows (2.5–20 ms) than typical music codecs. The short windows are what enable low-latency operation. CELT is what makes Opus excellent for music: at 96 kbps it matches HE-AAC and at 128 kbps it is transparent for most listeners on most material.
Hybrid mode runs SILK on the lower frequencies and CELT on the higher frequencies for the same audio block. This is used at medium bitrates (around 24–40 kbps for wideband and superwideband content) where pure SILK starts to lose musical detail and pure CELT struggles with vocal clarity.
The encoder picks the mode automatically based on signal analysis and target bitrate. When someone on a Discord call holds their phone up to play a song, the Opus encoder transparently switches from SILK-mode speech to CELT-mode music mid-stream. No other widely deployed codec does this — AAC, MP3, and Vorbis are music codecs that handle speech adequately; AMR and Speex are speech codecs that handle music badly.
Bitrate Range
Opus supports an unusually wide range:
- 6 kbps — narrowband speech (8 kHz sample rate). Usable for very low bandwidth, comparable to older mobile codecs.
- 12 kbps — wideband speech, intelligible.
- 16 kbps — wideband speech, clear and natural sounding. This is roughly Discord's voice quality.
- 24–32 kbps — fullband speech, near-broadcast quality. Hybrid mode kicks in here.
- 48 kbps — usable music. Better than MP3 at 96 kbps on most material.
- 64 kbps — competent music. Roughly equivalent to 128 kbps MP3 LAME.
- 96 kbps — very good music. Equivalent to AAC LC at 96 kbps and to 192–256 kbps MP3.
- 128 kbps — transparent for most listeners on most material. Spotify HiFi delivers Opus at this rate to some platforms.
- 256 kbps — diminishing returns; useful for critical listening or highly demanding stereo content.
- 510 kbps — the maximum. Stereo high-resolution audio with no audible difference from lossless.
For a deeper look at the bitrate-versus-quality curve see audio bitrate explained and the codec comparisons in Opus vs MP3 and Opus vs AAC.
Frame Sizes and Latency
Opus supports six configurable frame durations per packet: 2.5, 5, 10, 20, 40, and 60 ms. Most real-time applications use 20 ms (the WebRTC default), which gives the encoder enough audio to model intelligently while keeping latency low. Voice messaging tools that prioritize storage over latency typically use 60 ms.
Algorithmic latency — the minimum delay introduced by encoding plus decoding, before any network or buffering effects — is 5 to 66.5 ms depending on frame size and lookahead. At 5 ms you can run a full-duplex voice call without the kind of perceptible echo that derails conversation. By comparison, MP3 has algorithmic latency around 60–100 ms and AAC LC sits around 20–40 ms. This is why Opus, not MP3 or AAC, is the codec inside WebRTC: only Opus can keep two-way conversation under the 150 ms total delay budget that humans tolerate before the back-and-forth feels broken.
CBR vs VBR
Opus supports three rate-control modes:
- VBR (variable bitrate) — the default. The encoder spends more bits on complex content and fewer on simple content. Average bitrate matches the configured target; instantaneous bitrate varies. Best quality at a given file size.
- CVBR (constrained VBR) — VBR with a maximum-bitrate cap. Used for situations where the network has a fixed peak rate (some VoIP gateways, some streaming pipelines).
- CBR (constant bitrate) — every packet exactly the same size. Used in WebRTC and other real-time protocols where consistent network load matters more than per-frame efficiency.
For stored files, VBR is correct in essentially every case. CBR exists for streaming network protocols where packet rate predictability is the constraint.
Channel Layouts
Opus officially specifies channel layouts for mono, stereo, and surround up to 7.1 (and ambisonics in newer extensions). The stereo coding is "joint stereo with intensity coding" — the encoder can use mid/side coding when the two channels are correlated and full dual-mono when they are not. For surround content, channel families 1 and 2 cover the standard ITU surround layouts and channel mapping family 3 (added in RFC 8486) covers ambisonics for VR/360-degree audio.
File Extension and Container
A standalone Opus file uses the '.opus' extension and is stored as Opus inside an Ogg container. The Ogg framing is what gives the file seek tables, embedded Vorbis Comments metadata, and per-page CRC32 protection.
Opus inside MP4 also exists (signaled as codec ID 'opus' in the MP4 sample description). YouTube uses Opus inside the WebM container for many video streams. WebRTC streams Opus packets directly without any file container. So in practice you encounter Opus as:
- '.opus' (Ogg) — standalone audio files. The extension you download from Wikipedia.
- '.ogg' (Ogg Vorbis or Ogg Opus) — ambiguous. Verify with ffprobe; see What is OGG.
- WebM streams — YouTube, Wikimedia Commons, HTML5 audio.
- WebRTC RTP packets — Discord, Zoom, Teams, browser-based calls.
Where Opus Is Actually Used
In 2026, Opus is the audio plumbing of the modern internet:
- WebRTC — the codec everyone agreed on. Mandatory in the spec. Powers every browser-based voice and video call.
- Discord — voice channels, video calls, and screen-share audio. Discord's official client has used Opus since 2015.
- WhatsApp — voice messages and voice/video calls. The 'voice note' files are .opus inside Ogg.
- Zoom, Microsoft Teams, Google Meet — all use Opus for audio when running over WebRTC, which is the modern default.
- FaceTime — Apple uses AAC-LD/AAC-ELD historically but has been adding Opus support in recent iOS/macOS builds for cross-platform interoperability.
- YouTube — Opus is the audio codec for many WebM video streams (the 'opus' adaptive audio tracks visible in YouTube's quality menu) and for music videos at higher bitrates.
- Wikimedia Commons — Wikipedia pronunciations and free music are Ogg Opus.
- Telegram — voice messages.
- Signal — voice and video calls.
- PlayStation 5 and Xbox Series X — game voice chat uses Opus internally.
That list covers approximately every two-way audio stream a typical user generates in a week.
Browser Support
Opus playback support in modern browsers:
- Chrome / Edge / Opera — full support since 2013.
- Firefox — full support since 2012.
- Safari (macOS) — Opus in WebM was supported from Safari 14 (2020); Opus in CAF and Opus in Ogg landed in Safari 14.1 / iOS 14.5 (2021). Modern Safari decodes all three containers.
- Safari (iOS) — same as macOS since 14.5. The historical iOS Opus gap is closed.
- Mobile Chrome / Firefox — full support, all platforms.
Practically speaking, every browser and every operating system shipped after roughly 2021 handles Opus natively in HTML5 'audio' tags, WebRTC, and standalone files.
iOS Support History
iOS support for Opus has improved unevenly:
- iOS 11 (2017) — added Opus decoding support to AVFoundation, but only inside CAF containers.
- iOS 14 (2020) — full system-level support for Opus in Ogg and Opus inside MP4.
- iOS 14.5 (2021) — Safari supports Opus in HTML5 audio.
- WhatsApp voice notes (.opus inside Ogg) play directly in the Files app on modern iOS.
Older iPhones still on iOS 13 or earlier will struggle with bare '.opus' files. For those cases, convert Opus to MP3 or convert Opus to WAV for universal playback.
Limitations
Opus is technically excellent but not without weaknesses:
- Hardware decoders are uncommon. Bluetooth speakers, car stereos, hi-fi receivers, and dedicated music players almost universally lack Opus hardware decoding. Anything that decodes audio in software handles it; anything tied to a specific DSP usually does not. Modern Bluetooth still negotiates SBC, AAC, or aptX rather than Opus over the air.
- Music distribution is still AAC / FLAC. Apple Music, Spotify Premium, and most other paid services use AAC for lossy and ALAC/FLAC for lossless. Opus is used in some Spotify mobile streams and YouTube Music but is not the dominant download/sync format.
- Metadata tooling is thinner. Vorbis Comments work in Opus, and Mp3tag, Picard, and Kid3 all handle it, but the tagging ecosystem has fewer integrations than MP3's ID3v2 or FLAC's Vorbis Comments.
- Some legacy DAWs and editors still treat Opus as a second-class import. Re-importing a recorded Opus stream into Pro Tools or Logic typically requires converting to WAV first.
Working with Opus Files
For everyday tasks: the Opus to MP3 converter is the right tool when you have a WhatsApp voice note or downloaded '.opus' file and need to play it on hardware that does not understand Opus. The Opus to WAV converter gives you an editable uncompressed file for DAWs. Going the other direction, MP3 to Opus and WAV to Opus produce small, high-quality files for web apps or your own voice messages. The Opus converter covers all combinations.
A practical caveat: re-encoding from a lossy source (MP3, AAC) to Opus does not improve quality — you can never recover what the first encoder threw away. If you have the original WAV or FLAC, encode straight to Opus from that source for the best result.
For the format context, see What is OGG (the container Opus rides inside) and the codec comparisons in Opus vs MP3 and Opus vs AAC.
Opus is not yet as widely recognized as MP3, but it is more widely deployed: every WebRTC call, every WhatsApp voice note, every Discord voice channel runs through Opus packets, and most users have never seen the codec name. That is the sign of a successful infrastructure technology — invisible, royalty-free, and good enough that nobody has reason to replace it.