Atlas Network Engineer • • 1,297 words • 7 min read
Bufferbloat: Why Your Internet Lags When Someone Uploads
What is bufferbloat? Learn how overfilled router queues spike your ping during uploads, and how SQM, fq_codel and CAKE fix lag for gaming and video calls.
TL;DR (Direct Answer): Bufferbloat is the lag spike you get when your router lets large uploads or downloads pile up in an oversized waiting line, so small, time-sensitive packets from games and video calls get stuck behind them. Your connection can be fast and still feel slow, because speed and waiting time are different things. The fix is usually free: a smarter queue system called Smart Queue Management (SQM) keeps the line short and fair. Most people can solve it in under ten minutes on a supported router.
The Supermarket Checkout Problem
Picture a supermarket with one open checkout. You're holding a single bottle of water, but the customer ahead has three overflowing carts. You wait ten minutes for a ten-second purchase.
Your router works the same way. When someone uploads vacation photos to the cloud or starts a huge game download, thousands of bulk data packets join the line. Your game's "I pressed jump" packet or a voice snippet from your video call has to wait behind all of them.
The result looks strange on paper. Your speed test proudly shows 500 Mbps, yet your ping (the round-trip time for a tiny message to reach a server and come back) jumps from 15 ms to 600 ms. Characters rubber-band, and voices on calls turn robotic. That hidden, overstuffed waiting line has a name: bufferbloat.
How Bufferbloat Works, Step by Step
Everything online travels in small chunks called packets. When your connection is busy, the router holds extra packets in a buffer, a waiting area in memory, until the link is free.
Years ago, memory became cheap, so manufacturers built enormous buffers on the theory that more was safer. That backfired because of how TCP, the protocol behind most downloads and uploads, behaves. TCP keeps speeding up until packets start getting dropped, and a dropped packet is its signal to slow down.
A giant buffer hides that signal. Instead of dropping packets early, it absorbs them, so the queue fills and stays full. Every new packet, including your game input, joins the back of a very long line.
Upload is usually the worst bottleneck because most home lines are asymmetric: 500 Mbps down might come with only 20 Mbps up. A small pipe fills fast and drains slowly.
Your Options for Fixing It
| Option | What it does | Upside | Downside |
|---|---|---|---|
| Do nothing / faster plan | Adds more bandwidth | No setup | Costly; often just moves the problem |
| Classic QoS rules | Prioritizes chosen apps | Fine-grained control | Brittle, manual, misses new apps |
| SQM with fq_codel | Gives each flow a fair turn, drops packets that waited too long | Free, very effective | Needs router CPU power |
| CAKE | All-in-one shaper that understands your line type | Best results | Needs OpenWrt or a supported router |
| Vendor "Smart Queue" toggle | Built-in SQM from your ISP or router brand | One-click setup | Quality varies widely |
| L4S | New standard aiming for near-zero queuing delay | Promising future | Apps and networks are just starting to support it |
For most people, SQM with fq_codel or CAKE is the sweet spot. Both are free and make the biggest difference.
Fixing It at Home: The Before-and-After
Here's the core idea in one picture:
BEFORE: one fat FIFO queue (first in, first out)
[upload][upload][upload][upload][upload][game] -> out (game waits ~600 ms)
AFTER: SQM, fair per-flow queues
upload flow: [upload][upload][upload] -\
game flow: [game] ----> out (game waits ~20 ms)
call flow: [voice] -/
The diagram shows SQM giving small, time-sensitive flows their own short line instead of burying them behind bulk traffic.
The golden rule is to set your shaper to about 85–95% of your real upload and download speeds. This makes sure the queue forms inside your router, where it can be managed, rather than inside your ISP's modem, where it can't.
On OpenWrt, install the luci-app-sqm package, pick cake as the queue discipline with the piece_of_cake.qos script, and enter your shaped speeds. Then retest. A bufferbloat test that grades latency under load should jump from a D or F to an A. Want to see queues behave visually first? Try our Interactive Engineering Simulations.
Myths, Mistakes, and the Engineer Who Named It
Common traps
- "More bandwidth fixes lag." It doesn't. Latency under load is a separate problem from raw speed.
- "My speed test ping looks fine." Idle ping is measured on an empty line, so it hides the problem completely.
- Shaping at 100% of line rate. This leaves the bloated modem buffer in charge.
- Weak router CPU. SQM can cap your speed on underpowered hardware.
- Blaming Wi-Fi. The real queue often sits in the cable or DSL modem.
- Trusting "gaming routers." Flashy priority lights don't automatically fix queuing.
The engineer who named it
In 2010, veteran engineer Jim Gettys noticed his home connection fell apart whenever he uploaded files. He traced the delay to oversized buffers at nearly every hop and called the problem "bufferbloat." His work inspired Kathleen Nichols and Van Jacobson to create the CoDel algorithm. Its fair-queuing version, fq_codel, became the Linux default and now runs quietly on millions of routers and phones. Apple's and Comcast's L4S rollouts continue that work. Explore more internet physics in our AI Playground.
Frequently Asked Questions (FAQ)
How do I know if I have bufferbloat?
Run a bufferbloat or "latency under load" test, such as the Waveform test, which measures ping while your connection is busy downloading and uploading. If your latency jumps by more than about 30 ms under load, you have bufferbloat. A big spike only during the upload phase is the classic sign. You can also start a large upload, then ping a game server and compare the result with your idle ping.
Will SQM lower my speed test numbers, and does that matter?
Yes, slightly. Because you shape traffic to around 85–95% of your line rate, your speed test may show 5–15% less throughput. In daily use, you won't notice that loss, because downloads still finish quickly. What you will notice is calls that stay clear and games that stay responsive while someone else streams or uploads. Trading a little peak speed for consistently low latency is almost always worth it.
Is bufferbloat the ISP's fault or the router's fault?
Often it's both. ISPs and equipment makers have shipped modems with oversized buffers for years, and many routers use simple first-in, first-out queues. Because you usually can't change the ISP's modem, the practical fix is to shape traffic on your own router slightly below line speed. That moves the queue somewhere smarter, under your control. Some ISPs now deploy better queue management, but results vary by provider.
Does Wi-Fi 6/7 or fiber eliminate bufferbloat?
Not automatically. Fiber's high, often symmetric speeds make queues drain faster, so bufferbloat is usually milder, but it can still appear under heavy load. Wi-Fi 6 and 7 improve airtime scheduling, and Linux-based access points can apply fair queuing over the air. However, the main bottleneck is often still the modem or uplink. Test latency under load rather than assuming new technology has solved it.
What is L4S, and will it make SQM unnecessary?
L4S stands for Low Latency, Low Loss, Scalable throughput. It's a newer standard in which networks mark packets to warn senders about congestion early, keeping queuing delay near zero without dropping data. Apple and Comcast have begun rolling it out. However, it only helps when both the app and the network support it. Until support is widespread, SQM remains the reliable fix for everyday home connections.