HomeBlog › VoIP Codec Comparison

VoIP Codec Comparison 2026: G.711 vs G.729 vs Opus

VoIPApril 3, 20269 min read
TL;DR — Use G.711 for PSTN-quality narrowband voice when bandwidth isn't tight (the default for most SIP trunks). Use Opus for internet/WebRTC calls — it's vastly superior audio quality, adapts to network conditions, and is the clear winner for anything new. Use G.729 only when bandwidth is severely constrained and you must have narrowband. Use AMR-WB or EVS for VoLTE/VoNR. Nobody should deploy G.726, iLBC, or Speex in 2026.

What a Codec Actually Does

A codec (coder-decoder) takes raw audio samples and compresses them into a smaller bitstream for transmission over the network, then decompresses on the receiving end. The trade-off is quality vs bitrate vs CPU vs latency. A good codec balances these four for its target use case.

The quality benchmark is usually MOS (Mean Opinion Score), a 1–5 scale where 4.0+ is considered "toll quality" and matches PSTN. The gold standard is uncompressed audio (~4.5); G.711 hits ~4.2; G.729 hits ~3.9; Opus at 32 kbps hits ~4.5 (better than G.711 at 1/2 the bitrate).

The Main Players

G.711 (PCMU / PCMA)

  • Year: ITU-T standard since 1972 — by far the oldest
  • Bitrate: 64 kbps (uncompressed PCM with logarithmic encoding)
  • Sample rate: 8 kHz (narrowband, 300–3400 Hz passband)
  • MOS: ~4.2
  • CPU: trivial (it's basically a table lookup)
  • Two flavors: PCMU (μ-law, North America / Japan) and PCMA (A-law, rest of the world)
  • Licensing: royalty-free

G.711 is the default codec on virtually every SIP trunk on the planet. It's uncompressed 8 kHz audio with a tiny bit of companding — which means zero computational cost, zero latency added by the codec itself, and PSTN-quality voice. The only downside is that it uses 64 kbps + ~16 kbps of headers = ~80 kbps per direction per call.

G.729

  • Year: ITU-T since 1995
  • Bitrate: 8 kbps (~8× smaller than G.711)
  • Sample rate: 8 kHz narrowband
  • MOS: ~3.9 (noticeably worse than G.711, especially on music-on-hold and voicemail beeps)
  • CPU: moderate — uses CELP compression
  • Latency: ~15 ms algorithmic delay
  • Licensing: formerly royalty-bearing; patents expired in 2017, now royalty-free

G.729 was the go-to for bandwidth-constrained VoIP in the 2000s, especially on slow DSL lines or satellite links. It's still supported everywhere but has largely been displaced by G.711 (when bandwidth isn't an issue) and Opus (when modern clients are involved).

G.722

  • Year: ITU-T since 1988
  • Bitrate: 64 kbps (same as G.711!)
  • Sample rate: 16 kHz wideband (50–7000 Hz)
  • MOS: ~4.4 (wideband HD voice)
  • CPU: low
  • Licensing: royalty-free

G.722 is "HD voice over G.711 bandwidth" — same 64 kbps but sampled at 16 kHz, giving you noticeably better speech clarity. Used by Polycom/Cisco enterprise phones and supported by most modern SIP endpoints. If your network already supports G.711 bandwidth, you can use G.722 for free quality improvement.

Opus

  • Year: IETF RFC 6716, standardized 2012
  • Bitrate: 6 to 510 kbps (variable, adapts dynamically)
  • Sample rate: 8, 12, 16, 24, or 48 kHz (narrowband to fullband)
  • MOS: ~4.5 at 32 kbps (beats G.711 at half the bitrate)
  • CPU: low to moderate (very well optimized)
  • Latency: 5–20 ms (configurable)
  • Licensing: royalty-free, open source

Opus is the best VoIP codec in existence. Developed jointly by Skype (SILK) and Xiph.Org (CELT), standardized by the IETF, and now the mandatory codec for WebRTC. It dynamically switches between speech mode and music mode, adapts bitrate to network conditions, and supports everything from narrowband phone calls to fullband music. Opus at 24 kbps sounds better than G.729 at 8 kbps AND better than G.711 at 64 kbps simultaneously.

If you're building anything new — WebRTC, OTT voice app, softphone — use Opus. Period.

AMR-WB (Adaptive Multi-Rate Wideband, G.722.2)

  • Year: 3GPP since 2002, ITU-T G.722.2 since 2003
  • Bitrate: 6.6–23.85 kbps (9 adaptive modes)
  • Sample rate: 16 kHz wideband
  • MOS: ~4.2 at 12.65 kbps
  • CPU: moderate

AMR-WB is the HD Voice codec for VoLTE and 3G circuit-switched. It's what powers "HD Voice" calls between mobile subscribers on compatible networks. Branded simply as "HD Voice" in operator marketing. Still in widespread use and will remain so for years.

EVS (Enhanced Voice Services)

  • Year: 3GPP Release 12 (2014)
  • Bitrate: 5.9–128 kbps adaptive
  • Sample rate: 8, 16, 32, 48 kHz (NB to fullband)
  • MOS: better than AMR-WB at every bitrate

EVS is the next-generation codec for VoLTE and VoNR (5G). Super-wideband/fullband support, better packet-loss concealment, lower latency. Now supported by all major 5G smartphones. This is what replaces AMR-WB as operators upgrade their IMS cores.

Legacy / Avoid in 2026

  • G.723.1 — 5.3/6.3 kbps, very low bitrate but poor quality and high latency (30 ms). Was used in old teleconferencing. Avoid.
  • G.726 (ADPCM) — 16/24/32/40 kbps. Used in DECT cordless phones. Niche.
  • iLBC (Internet Low Bitrate Codec) — 13.33/15.2 kbps. Designed for lossy networks. Superseded by Opus.
  • Speex — open source, 2.15–44.2 kbps. Also superseded by Opus (same authors).
  • GSM-FR (Full Rate) — 13 kbps, the original 2G GSM codec. Still used for 2G circuit-switched calls but nothing new.
  • AMR-NB (Narrowband) — 4.75–12.2 kbps. Default codec for 3G circuit-switched. Legacy.

Full Comparison Table

CodecBitrateSample RateMOSCPUUse Case
G.711 (PCMU/PCMA)64 kbps8 kHz NB4.2NoneSIP trunks, PSTN interop
G.72264 kbps16 kHz WB4.4LowHD voice on enterprise phones
G.7298 kbps8 kHz NB3.9ModerateLow-bandwidth SIP trunks
Opus (speech, 24k)6–510 kbps VBR8–48 kHz4.5+Low-ModWebRTC, OTT apps, new deployments
AMR-WB6.6–23.85 kbps16 kHz WB4.2ModerateVoLTE HD voice
EVS5.9–128 kbps8–48 kHz4.5ModerateVoLTE / VoNR (5G)
iLBC13.33–15.2 kbps8 kHz NB4.1LowLegacy only
Speex2.15–44.2 kbps8–32 kHz3.9LowLegacy only

Bandwidth Math

Remember that the codec's bitrate is just the payload. Total IP bandwidth per direction = codec bitrate + RTP/UDP/IP headers + RTCP. Rough numbers assuming 20 ms packetization and no header compression:

CodecPayloadHeader overheadTotal IP BW
G.71164 kbps+16 kbps~80 kbps
G.7298 kbps+16 kbps~24 kbps
Opus @ 24 kbps24 kbps+16 kbps~40 kbps
AMR-WB @ 12.6512.65 kbps+16 kbps~29 kbps

Note that headers dominate at low bitrates. RTP header compression (cRTP or ROHC) can cut headers from 40 bytes to 2–4 bytes per packet, saving 15+ kbps per call, but is only practical on point-to-point links (not the public internet).

How to Choose

Quick decision matrix:

  • SIP trunk from your PBX to a carrier → G.711 (default), fallback to G.729 only if the carrier won't offer enough bandwidth.
  • SIP softphone ↔ softphone over the internet → Opus if both sides support it, otherwise G.711.
  • WebRTC call → Opus (it's mandatory per spec).
  • Mobile-to-mobile HD voice on the same network → AMR-WB (VoLTE) or EVS (VoNR).
  • Enterprise IP phone ↔ IP phone → G.722 for HD voice.
  • Satellite link → Opus @ low bitrate or G.729.
  • Voicemail / music on hold / announcements → G.711 (avoid G.729 which mangles non-speech audio).

Key Takeaways

  1. G.711 is the universal fallback — deploy it always.
  2. Opus wins for anything internet-based or WebRTC — vastly better quality, royalty-free.
  3. G.729 is for bandwidth-constrained links only; with Opus available, it's rarely the best choice.
  4. AMR-WB and EVS power HD voice on VoLTE and 5G VoNR — you don't choose them, the network does.
  5. Avoid G.723.1, G.726, iLBC, Speex, GSM-FR in new deployments.
← Back to Blog