What Is Bufferbloat, and How Do You Fix Lag When Someone Else Is Downloading?

Illustration: a queue of small blocks lined up in front of a router
Contents
  1. What Bufferbloat Is
  2. How to Test for Bufferbloat
  3. The Fix: Smart Queue Management
  4. SQM on Common Routers
  5. How to Set the Speeds
  6. If Your Router Has No SQM
  7. Frequently asked questions

Your connection is fast and your ping is low — until someone starts a large upload or download. Then video calls freeze, games lag and web pages hang, even though the speed test still looks fine. That is bufferbloat: delay that appears only when the line is busy. It is one of the most common reasons a good connection feels bad, and most modern routers can fix it with one setting.

What Bufferbloat Is

Routers and modems hold packets in buffers — queues — when they arrive faster than the line can send them. A little queuing is normal. The problem is that many devices have very large buffers and let them fill up. When an upload or download saturates the connection, every other packet waits behind the backlog, and latency jumps from 20 ms to hundreds of milliseconds.

The Bufferbloat project defines it simply as high latency, or lag, that occurs when there is other traffic on your network. It affects everything that needs quick responses: ping in games, voice and video calls, and even the first loading of web pages. It is especially common on the upload side, which is small on cable and DSL plans — see why is my upload speed so slow.

Bufferbloat is not the same as packet loss or slow Wi-Fi, though it often gets blamed on them.

How to Test for Bufferbloat

A normal speed test measures speed; a bufferbloat test also measures latency while the line is loaded. The Bufferbloat project lists several that do: the Waveform Bufferbloat Test, Speedtest.net, Cloudflare Speed Test and the LibreQoS Bufferbloat Test. On Speedtest and Cloudflare, look for the latency figures shown during download and upload (sometimes called “loaded latency”).

Run the test on a computer connected by cable, with nothing else using the internet, and compare:

  • Idle latency — with nothing happening;
  • Latency during download and during upload.

The Bufferbloat project treats latency under load below about 15–25 ms as bufferbloat under control. If latency during the download or upload phase climbs far above that while idle latency is low, you have a bufferbloat problem worth fixing.

You can also test by hand: run ping -t 8.8.8.8 on Windows (or ping 8.8.8.8 on Mac), then start a large upload on another device, and watch the times.

The Fix: Smart Queue Management

The real fix is Smart Queue Management (SQM) — a feature in the router that keeps queues short and shares the line fairly between connections. The router deliberately limits its sending rate to slightly below your line speed, so the queue builds in the router, where SQM controls it, instead of in the modem or at the provider. Modern SQM algorithms include fq_codel (standardized as RFC 8290), CAKE and PIE.

With SQM on, a large upload no longer pushes everyone else’s packets to the back of a long line: a call or game keeps low latency while the download still runs at nearly full speed. You give up a few percent of maximum speed in exchange.

SQM is not the same as classic QoS, which ranks traffic by type or device. They solve related problems, and some routers combine them; see what is QoS on a router.

SQM on Common Routers

The Bufferbloat project lists routers and firmware that include SQM, among them:

  • eero mesh routers;
  • GL.iNet routers;
  • Ubiquiti EdgeRouter;
  • OpenWrt, including the OpenWrt One router;
  • Asuswrt-Merlin custom firmware for ASUS routers;
  • DD-WRT, Gargoyle and Tomato custom firmware;
  • pfSense, OPNsense and IPFire firewalls.

On other brands, look for settings named Smart Queue, SQM, Adaptive QoS or Bandwidth control and check the router’s documentation to see which algorithm it uses. Gaming routers often market the feature under their own names. See the best router settings for gaming.

How to Set the Speeds

SQM needs to know your real line speed:

  1. Measure without SQM. Run a speed test on a wired computer at a quiet time, two or three times.
  2. Enter those speeds in the SQM settings, as the Bufferbloat project recommends, then turn SQM on.
  3. Test again, watching latency under load. If latency still rises, lower the values step by step — 5 to 10% at a time — until it stays low, while speed stays acceptable.

Set the value too high and SQM has no effect, because the queue still forms in the modem. Set it too low and you lose more speed than needed. On connections whose speed varies a lot — cable at peak times, LTE, 5G or Starlink — the Bufferbloat project points to cake-autorate, which adjusts the limit automatically.

If Your Router Has No SQM

  • Update the firmware — some manufacturers added SQM in later versions; see how to update router firmware.
  • Use classic QoS with correct upload and download speeds; it helps, though less than SQM.
  • Limit heavy uploads: schedule cloud backups for the night and cap upload speed in backup and torrent apps.
  • Replace the router. If bufferbloat bothers you daily, a router with SQM is the most effective upgrade for calls and gaming — often more than a faster plan. See what to look for in a Wi-Fi router.

Frequently asked questions

What causes bufferbloat?

Oversized buffers in routers and modems that fill up when the connection is saturated, so all other traffic waits in a long queue.

Does bufferbloat affect gaming?

Yes. Ping jumps when someone else downloads or uploads, which causes lag and rubber-banding. SQM keeps ping low under load.

Will a faster internet plan fix bufferbloat?

Not by itself. A faster plan fills up less often, but whenever it does, the same queue problem appears. SQM fixes the cause.

Does SQM slow down my internet?

Slightly. SQM limits the rate to just below your line speed, so the top speed drops by a few percent in exchange for much lower latency under load.

Can Wi-Fi cause bufferbloat?

Wi-Fi can add its own queuing delay, but the classic bufferbloat problem is at the connection to the provider. Test on a cable first to separate the two.

Sources