webrtc-internals is Chrome’s built-in debugging tool for WebRTC sessions. Accessible at chrome://webrtc-internals in the browser address bar, it provides detailed real-time visibility into every active PeerConnection.
What webrtc-internals shows
The tool displays comprehensive information about WebRTC sessions:
- PeerConnection lifecycle: Creation, SDP offers/answers, ICE candidate gathering, and connection state changes
- SDP details: Full SDP offer and answer text, making it easy to inspect negotiated codecs, media lines, and ICE candidates
- Statistics graphs: Real-time charts showing bitrate, packet loss, jitter, frame rate, resolution, and many more metrics
- ICE candidate pairs: Which candidates were gathered, tested, and selected
- getStats data: The raw statistics collected from the WebRTC engine
How to use webrtc-internals
- Open
chrome://webrtc-internalsin a Chrome tab - Start your WebRTC session in another tab
- The tool automatically detects and displays active PeerConnections
- Use “Create Dump” to export session data for offline analysis
Other Chromium-based browsers (Edge, Brave, Opera) have equivalent tools at the same URL. Firefox offers similar functionality at about:webrtc.
The catch with Create Dump is what it hands you. A single session export can run to tens of thousands of lines of raw getStats data. That is the ground truth, but reading it by hand is slow and easy to get wrong. Tools like rtcStats can analyze the webrtc-internals dump for you and surface what actually went wrong in the call - which is usually what you opened webrtc-internals to find out in the first place.
Tips for debugging
- Watch the ICE connection state progression – if it stays at “checking” for too long, there may be NAT/firewall issues requiring a TURN server
- Monitor the “bytesReceived” and “bytesSent” stats to verify media is actually flowing
- Check “framesDecoded” increasing to confirm video is being rendered
- Look at RTT and jitter graphs to assess network quality
