Welcome to Pion WebRTC
Pion WebRTC is a pure Go implementation of the WebRTC API. Build real-time communication applications with the power and simplicity of Go.Installation
Get started with Pion WebRTC in minutes using Go modules
Quick Start
Build your first WebRTC data channel application
Examples
Explore 30+ working examples from simple to advanced
API Reference
Complete API documentation with detailed comments
Why Pion WebRTC?
Pion WebRTC enables you to build WebRTC applications outside the browser with the reliability and performance of Go.Pure Go Implementation
No CGo Required
Written entirely in Go with zero C dependencies. Build once, run anywhere.
Cross-Platform
Supports Windows, macOS, Linux, FreeBSD, iOS, Android, and WebAssembly.
Fast Builds
Build the entire library in under 1 second. Run full test suite in ~77 seconds.
Standards Compliant
Pion implements the official W3C webrtc-pc and webrtc-stats specifications.
Key Features
PeerConnection API
- Full WebRTC API - Complete implementation of PeerConnection, DataChannels, and Media APIs
- Send/Receive Media - Audio and video streaming with codec support for Opus, VP8, VP9, H264, AV1
- Data Channels - Ordered/unordered, reliable/unreliable messaging
- Renegotiation - Dynamic track and data channel management
- Plan-B & Unified Plan - Support for both SDP semantics
- SettingEngine - Pion-specific extensions for advanced control
Connectivity
Full ICE Agent
Complete Interactive Connectivity Establishment with ICE restart and Trickle ICE support
Media Capabilities
- Codec Support - Opus, PCM, H264, VP8, VP9, AV1 packetizers
- Container Formats - IVF, Ogg, H264, and Matroska readers/writers
- Advanced Features - Simulcast, SVC, NACK, Sender/Receiver Reports, TWCC
- Easy Integration - Works with x264, libvpx, GStreamer, and FFmpeg
Security
- DTLS v1.2 - TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 and TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
- SRTP - SRTP_AEAD_AES_256_GCM and SRTP_AES128_CM_HMAC_SHA1_80
- Hardware Acceleration - Available for GCM cipher suites
Design Principles
Portable
Written in pure Go with no C dependencies. If Go runs on your platform, Pion WebRTC will too. Cross-compile with a singlego build command.
Flexible
Pion leaves decisions to you. Choose your own logging library, media sources, and signaling mechanism. We provide the transport layer, you provide everything else.Simple API
The API mirrors the browser WebRTC API. Your WebRTC knowledge transfers directly from browser to server.Bring Your Own Media
Pion doesn’t make assumptions about your media sources. Use FFmpeg, GStreamer, camera devices, files, or anything else. Pion handles the transport.Safe & Tested
Built with Go’s safety guarantees and concurrency primitives. Every commit is tested, and the codebase maintains high test coverage.Readable
Code references RFCs with links to specifications. Learn WebRTC internals while using the library.Use Cases
- Video Conferencing - Build scalable conferencing platforms with server-side processing
- IoT & Robotics - Stream camera feeds from embedded devices directly to browsers
- Broadcasting - Send video files to multiple browsers with perfect synchronization
- Secure Communications - Create peer-to-peer encrypted data channels between servers
- Recording & Processing - Capture and process audio/video streams server-side
- Remote Control - Control robots and stream telemetry in real-time
Getting Help
WebRTC for the Curious
Deep dive into WebRTC protocols: ICE, SCTP, DTLS, SRTP, and more
Discord Community
Active community ready to help with any WebRTC questions
FAQ
Common questions and answers about Pion WebRTC
GitHub Issues
Report bugs, request features, and track development
What’s New in v4
Pion WebRTC v4.0.0 brings performance improvements, new features, and API refinements.
Community & Support
Pion exists because of individual contributions from developers worldwide. Join our community:- Discord - discord.gg/PngbdqpFbt
- Bluesky - @pion.ly
- GitHub - github.com/pion/webrtc
Ready to Build?
Install Pion WebRTC and create your first application