Skip to main content
Pion WebRTC Hero Light

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.
If you know how to use WebRTC in the browser, you already know how to use Pion WebRTC. The API mirrors the JavaScript WebRTC API for a familiar developer experience.

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

1

Full ICE Agent

Complete Interactive Connectivity Establishment with ICE restart and Trickle ICE support
2

STUN/TURN Support

Built-in STUN support and TURN support via UDP, TCP, DTLS, and TLS
3

mDNS Candidates

Local network discovery without STUN servers

Media Capabilities

// Direct RTP/RTCP access for custom processing
track, err := webrtc.NewTrackLocalStaticRTP(
    webrtc.RTPCodecCapability{MimeType: webrtc.MimeTypeVP8},
    "video",
    "pion",
)
  • 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

All connections are encrypted by default using industry-standard protocols.
  • 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 single go 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

Pion WebRTC powers real-world applications across industries:
  • 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.
Check the release notes for details on new features and breaking changes. If you’re not ready to upgrade, v3 releases are still available via tags.

Community & Support

Pion exists because of individual contributions from developers worldwide. Join our community: Need commercial support? Contact us at team@pion.ly

Ready to Build?

Install Pion WebRTC and create your first application

Build docs developers (and LLMs) love