// the find
pion/webrtc
Pure Go implementation of the WebRTC API
Pion WebRTC is a pure Go implementation of the WebRTC API — no CGo, no native bindings. It targets server-side WebRTC use cases: SFUs, bots, recording servers, P2P relays, and anything where you want WebRTC without a browser. If you're building a media server or real-time streaming backend in Go, this is the only serious option.
Full ICE/DTLS/SRTP stack implemented from scratch in Go — you get direct RTP/RTCP access, which means you can actually inspect and manipulate packets rather than treating the stack as a black box. WASM target works, so the same codebase can run in a browser via compilation. The interceptor system is the right abstraction: NACK, TWCC, sender/receiver reports are all pluggable rather than hardcoded. Active maintenance with a v4 release in 2026 and browser E2E tests in CI means it doesn't just claim spec compliance.
getUserMedia requires CGo via pion/mediadevices, which breaks the 'pure Go' story the moment you want to capture local audio/video — you're back to platform dependencies. AV1 is listed as an example target but codec support is patchwork; H265 readers exist but no H265 packetizer. The SettingEngine escape hatch for Pion-specific config is a grab-bag of undocumented knobs that you'll only discover by reading source. SFU-specific concerns like selective forwarding logic, routing tables, and room management are entirely your problem — the library gives you plumbing but no scaffold.