How to Fix Bufferbloat on Your Router (Step-by-Step)
If you tested your connection at pong.com and received a bufferbloat grade of C, D, or F, your router is adding hundreds of milliseconds of latency every time your connection is busy. The good news: bufferbloat is one of the most fixable problems in networking. In many cases, you can go from an F grade (200ms+ latency under load) to an A grade (under 5ms) with a single settings change.
This guide covers four methods to fix bufferbloat, ranging from a quick settings change on your existing router to more advanced solutions. We will walk through each method step by step, explain when to use which approach, and show you how to verify the fix worked.
Before you start: Run a bufferbloat test at pong.com and note your current grade and latency-under-load number. You will need this baseline to verify your fix worked. Write down your download and upload speeds too, as you will need them for SQM configuration.
Understanding Your Options
There are three main approaches to fixing bufferbloat, and the right one depends on what router you have and how comfortable you are with configuration changes:
Method 1: Enable SQM (Smart Queue Management)
Smart Queue Management (SQM) is the single most effective fix for bufferbloat. SQM uses intelligent queue management algorithms, specifically fq_codel (Fair Queuing with Controlled Delay) or CAKE (Common Applications Kept Enhanced), to prevent buffers from bloating. Instead of letting packets pile up in massive queues, SQM keeps queues short by strategically dropping or delaying packets when congestion is detected. The result is that your latency stays low even when your connection is fully saturated.
CAKE is the newer and generally superior algorithm. It combines fair queuing, active queue management, traffic shaping, and flow prioritization into a single system. If your router supports CAKE, use it. If only fq_codel is available, that is still excellent.
SQM on OpenWrt
OpenWrt provides the best SQM implementation available on consumer hardware. If your router runs OpenWrt, follow these steps:
- Install the SQM package: Go to System > Software, click "Update lists", then search for and install the package called luci-app-sqm. This installs both the SQM backend and the web interface.
- Open SQM settings: Navigate to Network > SQM QoS in the LuCI web interface.
- Enable SQM: Check the "Enable this SQM instance" box.
- Set your interface: Select the WAN interface (typically eth0.2 or wan depending on your router).
- Set download speed: Enter your actual download speed in Kbps, but set it to 85-90% of your tested speed. If pong.com shows 100 Mbps download, enter 85000-90000. This headroom is critical; it allows SQM to manage the queue before your ISP's modem buffer fills up.
- Set upload speed: Similarly, enter 85-90% of your tested upload speed in Kbps.
- Select queue discipline: Under the Queue Discipline tab, set both inner and outer disciplines to cake if available, otherwise use fq_codel.
- Set link layer adaptation: Under the Link Layer tab, select your connection type. For cable/DOCSIS, choose Ethernet with overhead" and set overhead to 44 bytes. For DSL, choose the appropriate DSL encapsulation. For fiber, Ethernet with overhead at 44 bytes works well.
- Save and apply: Click "Save & Apply" to activate SQM.
The most common mistake is setting the speed values too high. If you set SQM speeds at 100% of your connection speed, the ISP modem's buffer fills before SQM can manage the queue, and you still get bufferbloat. Always use 85-90% of your actual measured speed. You can fine-tune this number up or down and re-test until you find the sweet spot between throughput and latency.
SQM on ASUS Merlin Firmware
ASUS routers running Asuswrt-Merlin firmware have built-in SQM support with fq_codel. This is a popular option because Merlin is easy to install on supported ASUS routers:
- Install Merlin firmware: Download the correct Merlin firmware for your ASUS model from the official Merlin website and flash it through the router's administration page under Administration > Firmware Upgrade.
- Enable Adaptive QoS with fq_codel: Go to Adaptive QoS > QoS. Enable QoS and set the QoS Type to Adaptive QoS.
- Set bandwidth: Enter your download and upload speeds at 85-90% of your actual measured speeds.
- Enable fq_codel: In newer Merlin builds, you can enable fq_codel under the advanced settings. Look for "Queue Discipline" and select fq_codel.
- Apply settings: Click Apply and wait for the router to reconfigure.
Method 2: QoS Settings on Consumer Routers
If your router does not support SQM natively, most consumer routers have some form of Quality of Service (QoS) settings. While traditional QoS is not as effective as SQM at eliminating bufferbloat, it can reduce the severity by prioritizing latency-sensitive traffic.
ASUS Routers (Stock Firmware)
- Log into your router at router.asus.com or 192.168.1.1
- Navigate to Adaptive QoS > QoS
- Enable QoS and select Adaptive QoS mode
- Set your bandwidth limits to 85-90% of your actual speeds
- Optionally prioritize gaming and video calling in the device priority list
- Click Apply
Netgear Routers
- Log into your router at routerlogin.net or 192.168.1.1
- Navigate to Dynamic QoS (on newer models) or QoS Setup
- Enable Dynamic QoS
- Run the speed test within the router interface to set bandwidth values, or manually enter 85-90% of your actual speeds
- Click Apply
TP-Link Routers
- Log into your router at tplinkwifi.net or 192.168.0.1
- Navigate to Advanced > QoS or NAT Boost (varies by model)
- Note: Some TP-Link models require disabling NAT Boost/CTF to enable QoS
- Enable QoS and set your upload and download bandwidth to 85-90% of actual speeds
- Add high-priority rules for gaming and video conferencing applications if available
- Click Save
Traditional QoS on consumer routers typically reduces bufferbloat by 30-60%, compared to SQM which reduces it by 90-99%. If QoS alone does not get you to a Grade A or B on pong.com, consider Method 3 below.
Method 3: Flash OpenWrt or Replace Your Router
If your current router does not support SQM and basic QoS is not enough, you have two paths: flash your existing router with OpenWrt (if it is supported) or buy a router that supports SQM natively.
Option A: Flash OpenWrt on Your Current Router
OpenWrt is open-source router firmware that supports CAKE and fq_codel on hundreds of router models. Check the OpenWrt Table of Hardware (toh.openwrt.org) to see if your router is supported. Flashing OpenWrt replaces your router's stock firmware and gives you access to the full SQM implementation described in Method 1. The process varies by router brand and model, but generally involves downloading the correct firmware image and uploading it through your router's web interface.
Flashing custom firmware carries a small risk of bricking your router if done incorrectly. Follow the OpenWrt wiki instructions for your specific model carefully. If you are uncomfortable with this, Method 3 Option B (buying a compatible router) is safer.
Option B: Buy a Router with SQM Support
If you would rather buy a solution than configure one, several routers come with SQM or CAKE support out of the box:
- IQrouter: Specifically designed to fight bufferbloat. Ships with SQM pre-configured and auto-tunes your bandwidth settings.
- Ubiquiti EdgeRouter: Enterprise-grade router with fq_codel support built in. Requires some configuration but very effective.
- pfSense / OPNsense appliances: Open-source firewall/router platforms with excellent CAKE and fq_codel support. Ideal for advanced users.
- GL.iNet routers: Many GL.iNet travel and home routers run OpenWrt natively and support SQM out of the box.
- Any OpenWrt-compatible router: Buy a router listed as well-supported on the OpenWrt Table of Hardware, flash OpenWrt, and enable SQM.
Router Bufferbloat Support: Full Comparison
| Router / Firmware | SQM Support | Algorithm | Effectiveness | Setup Difficulty |
|---|---|---|---|---|
| OpenWrt (any) | Full SQM with CAKE | CAKE / fq_codel | Excellent (Grade A) | Medium (flash firmware + configure) |
| ASUS Merlin | SQM with fq_codel | fq_codel | Excellent (Grade A) | Easy (flash Merlin + enable) |
| IQrouter | SQM pre-configured | CAKE / fq_codel | Excellent (Grade A) | Very Easy (auto-configured) |
| Ubiquiti EdgeRouter | fq_codel built-in | fq_codel | Excellent (Grade A-B) | Medium (CLI configuration) |
| pfSense / OPNsense | Full CAKE support | CAKE / fq_codel | Excellent (Grade A) | Medium-Hard (firewall appliance) |
| ASUS stock (Adaptive QoS) | Basic QoS only | Priority queuing | Moderate (Grade B-C) | Easy |
| Netgear (Dynamic QoS) | Basic QoS only | Priority queuing | Moderate (Grade B-C) | Easy |
| TP-Link (QoS) | Basic QoS only | Priority queuing | Moderate (Grade C-D) | Easy |
| ISP-provided router | None | None | Poor (Grade D-F) | N/A (not configurable) |
Before and After: What to Expect
When SQM is properly configured, the improvement is immediate and dramatic. Here is what typical before-and-after results look like:
| Metric | Before (No SQM) | After (SQM Enabled) | Change |
|---|---|---|---|
| Idle Latency | 15ms | 15ms | No change (expected) |
| Latency Under Load | 350ms | 22ms | 94% reduction |
| Bufferbloat Grade | F | A | 5 grade improvement |
| Max Throughput | 100 Mbps | 90-95 Mbps | 5-10% decrease (the trade-off) |
| Zoom During Download | Unwatchable | Crystal clear | Night and day |
| Gaming During Stream | 200ms+ ping spikes | Stable 20ms ping | Fully playable |
The only trade-off is a small reduction in maximum throughput, typically 5-10%. This is because SQM intentionally limits your bandwidth slightly below your connection's maximum to keep the queue short. A connection capped at 90 Mbps with Grade A bufferbloat is vastly better in practice than one running at 100 Mbps with Grade F bufferbloat. The 10% speed reduction is imperceptible for nearly all activities, while the latency improvement is transformative.
How to Verify the Fix Worked
After applying any of the methods above, you need to verify that bufferbloat has actually improved. Here is the process:
- Run a new test at pong.com: This is the most important step. Run the full connection health test and check your bufferbloat grade. You should see an improvement from your baseline test.
- Compare before and after: Your idle latency should be roughly the same. Your latency under load should be dramatically lower. Your bufferbloat grade should improve to A or B.
- Test under real-world conditions: Start a large download and simultaneously run the pong.com test. Or have someone stream 4K video while you test. The goal is to see your latency stay low even when the connection is busy.
- Fine-tune bandwidth settings: If your bufferbloat grade is still C or worse, try lowering your SQM bandwidth settings by another 5%. If your grade is A but you feel the speed is too limited, try raising it by 2-3% at a time and re-testing.
- Test at different times: Run tests during peak hours and off-peak to make sure the fix holds under varying conditions.
If you started with a Grade F and now have a Grade A or B, congratulations. Your Zoom calls will stay clear during downloads, your gaming will stay responsive when others are streaming, and web pages will load instantly even when your connection is busy. The internet experience you are paying for will finally match reality.
Ready to test your connection?
Measure your real-world speed, ping, jitter, and bufferbloat — free, no signup required.
Run Free Speed TestTroubleshooting Common Issues
SQM Enabled But Bufferbloat Still Present
If you enabled SQM but your bufferbloat test still shows a poor grade, the most likely cause is that your bandwidth values are set too high. SQM can only manage queues that form inside your router. If you set SQM to 100 Mbps and your connection is 100 Mbps, the queue forms in your ISP's modem/CMTS before your router ever sees it. Lower your SQM bandwidth to 80-85% of your actual speed and test again.
Speed Dropped Too Much After Enabling SQM
If your speeds dropped more than 15% after enabling SQM, your bandwidth values might be set too low. Gradually increase them in 2-3% increments, testing your bufferbloat grade after each change. The goal is to find the highest bandwidth setting that still maintains a Grade A bufferbloat score.
Router CPU Cannot Handle SQM at High Speeds
SQM requires CPU processing for every packet. On some older or lower-end routers, the CPU cannot keep up with SQM at high speeds (300+ Mbps). If your throughput drops dramatically with SQM enabled, your router's CPU may be the bottleneck. Check your router's CPU usage while running a speed test. If it hits 100%, you may need a more powerful router. Modern routers with ARM processors (Qualcomm IPQ, MediaTek MT7622/MT7981) handle SQM at gigabit speeds without issue.
Double NAT or Modem/Router Combo Issues
If you have a modem/router combo from your ISP and you added your own router behind it, you may have a double NAT situation where bufferbloat occurs in the ISP device before your router's SQM can manage it. The fix is to put the ISP device into bridge mode so it acts only as a modem, letting your router handle all routing and queue management. Consult your ISP's support for instructions on enabling bridge mode.