Why Your Stream Drops Frames: Bitrate, Keyframes, and the 6 Mbps Ceiling
Dropped frames blamed on 'the internet' are usually encoder overload or an upstream ceiling you never measured. Here's the math and the diagnostics.
“Dropped frames” is the most misdiagnosed complaint in livestreaming. OBS reports three different failure modes in one stats window, and they have completely different causes. Before touching any setting, figure out which one you actually have.
The Three Kinds of “Dropped”
Open Stats (View → Stats) while streaming and read carefully:
- Skipped frames (encoder) — your encoder can’t keep up. Rendering overload: too-slow preset, GPU contention, or CPU saturation.
- Dropped frames (network) — your upload can’t sustain the bitrate. Network congestion, Wi‑Fi instability, or an ISP ceiling.
- Rendering lag — OBS itself can’t composite the scene fast enough. Usually GPU overload from heavy filters or browser sources.
Same symptom, three different fixes. Diagnosing “the internet” when the encoder is skipping wastes everyone’s night.
The Upload Ceiling Math
Platforms set bitrate caps — Twitch famously hovers around 6,000–8,000 kbps for non-partnered streams, and exceeding it doesn’t help quality; it risks ingest rejection entirely.
But the real ceiling is your upload path, not the platform’s. The rule of thumb:
safe streaming bitrate ≤ 70% of sustained upload
“Sustained” is doing the work in that sentence. A speed test measures a burst; a stream holds the rate for hours. Test sustained upload with a long private broadcast, not speedtest.net.
Wi‑Fi Is the Usual Suspect
We’ve fixed more “ISP problems” with an Ethernet cable than with anything else. Wi‑Fi drops frames not from raw throughput but from variance — interference spikes create congestion windows that RTMP interprets as a capped link, and recovery is slow.
If you can’t run cable:
- Force the streaming machine onto the 5GHz or 6GHz band
- Move the AP closer; walls cost more than raw distance
- Reduce bitrate — a stable 4.5 Mbps stream beats a stuttering 6 Mbps one
Encoder Overload Fixes
If frames are skipping rather than dropping:
- Step the preset down one notch (
faster, notslow) - Kill browser sources you aren’t using — each one is a live Chromium instance
- Cap in-game framerate so the GPU has headroom to encode
- Drop output resolution to 720p60 before dropping bitrate below 4,500 kbps — resolution is cheaper than bitrate at low rates
Keyframes and Recovery
This is where the 2-second keyframe interval earns its keep: when packets drop, players wait for the next keyframe to resync. At 2s intervals, a viewer sees a brief artifact; at 8s, they see a frozen screen for most of a sentence.
The Diagnostic Order
Dropped? → network path: wire it, lower bitrate, check sustained upload
Skipped? → encoder load: faster preset, fewer sources, cap game fps
Render lag?→ OBS scene complexity: filters, sources, canvas rescales
Ninety percent of “bad internet” streams are one of these three. Check the stats panel, fix the right one, and stop blaming the ISP by default.