WebRTC troubleshooting: diagnose the symptom, not the tool
When a WebRTC call goes wrong, you search the symptom. These guides take each common symptom, explain what causes it, and show which metrics tell you what actually happened.
A user complains the call sounded bad, or the video froze, or it would not connect at all. You do not have a stack trace. You have a vague sentence and a webrtc-internals dump with thousands of metrics in it.
These guides are organized the way you actually debug: by the symptom. Each one takes a single symptom, explains what causes it, tells you which getStats() metrics to read and what healthy versus unhealthy looks like, and shows how rtcStats surfaces the answer so you are not scrolling timelines by hand.
| Symptom | You hear or see | Start here |
|---|---|---|
| Jitter | Audio warbling, choppy speech | WebRTC jitter |
| Packet loss | Gaps, artifacts, dropouts | WebRTC packet loss |
| ICE failure | Call never connects | WebRTC ICE failed |
| Freeze | Video stalls or sticks | WebRTC video freezing |
| Choppy audio | Robotic, breaking speech | WebRTC choppy audio |
Let rtcStats do this for you
Every guide here is a manual playbook: pull the dump, find the right metrics, line up the timelines, and reason about the cause. rtcStats does all of that for you. Upload a webrtc-internals or rtcstats dump and it reads the whole call, flags the moments that mattered as Observations, tells you what they mean for the user as Deductions, scores how the call actually felt with an Experience Score, and writes the plain-English story as an AI Summary, in under 30 seconds.
Stop scrolling getStats output looking for the one number that explains the bad call. Upload a dump and get the answer, free.