Queue Buffer Delay Calculator
Calculate queue buffer delay from buffer size and link rate, then compare full-queue latency, occupancy, BDP, and target limits.| Budget metric | Value | Readout | Copy |
|---|---|---|---|
|
No delay budget yet
Correct the buffer, link, and target delay inputs to rebuild this queue budget artifact.
|
|||
| {{ row.metric }} | {{ row.value }} | {{ row.readout }} | |
| Delay ceiling | Allowed buffer | Current margin | Tuning note | Copy |
|---|---|---|---|---|
|
No tuning table yet
Valid queue and link inputs are required before delay ceiling rows can be exported.
|
||||
| {{ row.ceiling }} | {{ row.allowedBuffer }} | {{ row.currentMargin }} | {{ row.note }} | |
Fast service can still feel slow when packets wait at the one place where traffic leaves more slowly than it arrives. That waiting time is queue buffer delay. It is separate from the physical distance across the network, DNS lookup time, radio quality, or server response time. It comes from bytes already sitting in a queue ahead of the next packet.
The unit mismatch is the trap. Buffer space is usually described in bytes, KiB, MiB, packets, or memory cells, while a link drains in bits per second. A 1 MiB queue holds 8,388,608 bits. At 1 Gbps that much data drains in about 8.4 ms, but at 20 Mbps it takes about 419 ms. The same memory depth can therefore be harmless on one bottleneck link and painful on another.
- Queue depth
- The amount of data that can wait before packets are dropped, marked, or scheduled elsewhere.
- Drain rate
- The sustained rate that empties the queue, often a shaped WAN rate rather than the label on a physical port.
- Occupancy
- The filled share of the queue during a busy period. Full occupancy is the worst-case delay budget.
- Delay budget
- The maximum waiting time the traffic can tolerate before voice, gaming, remote shells, or control traffic starts to feel late.
The answer changes whenever the real bottleneck changes. A router may have a 1 Gbps LAN port, a 300 Mbps broadband download rate, and a 35 Mbps shaped upload rate. If the queue being tuned sits behind the upload shaper, the 35 Mbps rate is the number that matters. Using the port label would make the delay look much smaller than the packets will experience.
- Bulk transfers, cloud backups, game downloads, and media uploads are common ways to fill a queue.
- Voice, video calls, DNS, SSH, remote desktops, games, and acknowledgments are the kinds of traffic that suffer first when they wait behind the bulk flow.
- Tail-drop queues can look fine until they fill, then they add delay before they provide drop feedback.
- Active queue management and fair queuing can keep average queues shorter, but the configured queue depth still sets an important upper bound.
Queue buffer delay is a planning estimate, not a complete network diagnosis. A link can pass the byte budget and still have jitter from Wi-Fi retries, CPU limits, overloaded modems, bad scheduling, packet loss, or traffic bursts elsewhere. The useful starting point is to compare the queue that can fill, the rate that drains it, and the latency budget of the traffic sharing that bottleneck.
How to Use This Tool:
Use the calculator as a queue-depth budget check. Start with the queue that can fill and the rate that drains it, then compare the computed delay with the traffic target you want to protect.
- Set
Buffer sizeto the queue depth that can fill before packets are dropped or marked. ChooseKiB,MiB,GiB, orMBto match the value from the device, shaper, or policy. - Set
Link rateto the sustained bottleneck drain rate. For shaped traffic, enter the shaper or WAN handoff rate instead of the physical port speed when that is where the queue waits.A 1 Gbps port behind a 100 Mbps shaper should usually be tested at100 Mbpsfor the shaped queue. - Choose a
Delay targetin milliseconds. Use a tighter target for voice, games, DNS, SSH, and calls; use a looser target only when the queue is dedicated to bulk transfer. - Enter
Average occupancy. Use100%for a worst-case tail-drop budget, or use a lower busy-period value only when queue telemetry supports it. - Open
Advancedwhen you need more context.Baseline RTTenables theBDP comparison,Packet sizeestimates packet depth and serialization time, andTarget buffer reserveadds optional slack to the target byte count. - If
Check queue inputsappears, fix the listed field before interpreting the results. Buffer size, link rate, and delay target must be positive, occupancy and reserve must be between0%and100%, baseline RTT cannot be negative, and packet size must be at least64bytes.When inputs are invalid, the result tables stay empty. Correct the warning first, then confirm thatFull-buffer drain delayandTarget buffer for delayrebuild. - Read
Queue Delay Budgetfirst, then useBuffer Tuning Tableto compare common delay ceilings andBuffer Delay Curveto show how delay changes as buffer size changes. KeepLink rate,Delay target, andAverage occupancyconsistent when comparing before and after values.
Interpreting Results:
Start with Full-buffer drain delay. It is the strictest delay number because it assumes the queue is full and every stored byte must leave through the bottleneck before later packets move. Occupancy-weighted delay is a busy-period estimate; it can be useful, but it should not hide a full queue that already exceeds the target.
Target buffer for delay turns the selected millisecond target into a byte ceiling. If the configured queue is larger, the queue cannot meet that target when full. Buffer margin vs target shows the byte difference, while Occupancy cap for target shows how full the queue can get before the selected target is crossed.
| Output | What it tells you | What to verify |
|---|---|---|
Full-buffer drain delay |
Worst-case waiting time if the selected queue is full. | Confirm the entered link rate is the real drain rate. |
Target buffer for delay |
The exact byte depth that matches the chosen delay target. | Check whether the device supports a queue setting near that value. |
BDP comparison |
Current queue depth compared with the bandwidth-delay product from link rate and baseline RTT. | Use a representative RTT before treating the ratio as capacity context. |
Packet serialization time |
How long one selected-size packet takes to transmit on the bottleneck. | Use an MTU or packet size that matches the traffic class you are protecting. |
Buffer Delay Curve |
A planning curve for full-buffer and occupancy-weighted delay across buffer sizes. | Confirm candidate settings with a loaded-latency test or queue telemetry. |
An inside target badge does not prove the path is finished. It only says the selected queue depth fits the selected delay budget under the calculator assumptions. Scheduling, active queue management behavior, Explicit Congestion Notification, packet drops, radio retransmissions, and traffic from other queues can still change live latency.
Technical Details:
Queueing delay is drain time for stored bits. Once traffic is already queued, a later packet cannot leave until enough earlier bits have been transmitted or until scheduling moves it ahead. For a simple single queue, the relationship is linear: doubling the buffer doubles full-buffer delay, and doubling the bottleneck rate halves it.
This is why byte-sized buffers become risky when a queue is placed behind a lower shaper rate. The memory depth has not changed, but the same bytes now drain through fewer bits per second. The delay target calculation reverses the same relationship so a millisecond ceiling can be expressed as a queue depth.
Formula Core:
Let B be buffer bytes, R be link bits per second, T be the delay target in milliseconds, O be average occupancy percent, RTT be baseline round-trip time, and P be packet size in bytes.
KiB, MiB, and GiB use powers of 1024. MB uses 1,000,000 bytes. Kbps, Mbps, and Gbps use decimal bit rates. Displayed values are rounded for readability, but the comparisons use the calculated numeric values.
For example, a 16 MiB queue contains 134,217,728 bits. At 100 Mbps, full-buffer drain delay is 134,217,728 / 100,000,000 x 1000, or about 1,342.2 ms. A 50 ms target at the same rate allows 625,000 bytes, which is about 610.35 KiB.
| Value | Accepted or computed range | Effect on the result |
|---|---|---|
Buffer size |
Greater than zero. | Directly increases full-buffer delay and packet depth. |
Link rate |
Greater than zero. | Increases drain speed; higher rates reduce delay for the same queue depth. |
Average occupancy |
0% to 100%. |
Scales the busy-period delay without changing full-buffer delay. |
Target buffer reserve |
0% to 100%. |
Adds slack to the displayed target buffer while leaving the exact delay target visible. |
Baseline RTT |
Zero or positive milliseconds. | Enables the bandwidth-delay product comparison when greater than zero. |
Packet size |
At least 64 bytes. |
Sets packet-depth and serialization-time estimates. |
The summary badge uses strict greater-than comparisons. A full-buffer delay exactly equal to the target stays within the full-buffer limit. A full-buffer delay exactly equal to twice the target is still labeled by the lower warning rule because it is greater than the target but not greater than twice the target.
| Condition | Summary title | Badge | Meaning |
|---|---|---|---|
Full-buffer drain delay > 2 x target |
Full queue exceeds target | high bufferbloat risk | The full queue is more than twice the selected delay ceiling. |
Full-buffer drain delay > target |
Full queue crosses target | trim buffer | The full queue is above the selected target but not above twice that target. |
Occupancy-weighted delay > target |
Busy queue crosses target | watch occupancy | The full queue fits, but the entered busy-period fill level still crosses the target. |
| None of the greater-than checks match | Queue delay inside target | inside target | The selected queue depth and occupancy fit the chosen delay budget. |
Advanced Tips:
- Use the shaped, policer, or congested handoff rate for
Link rate. Port speed is only correct when that port is the queue's real drain point. - Compare
Full-buffer drain delaywithOccupancy-weighted delayinstead of relying on one number. A lower busy-period estimate should not hide a full queue that crosses the target. - Set
Baseline RTTto a representative unloaded path RTT whenBDP comparisonmatters. A stale or remote RTT can make the BDP ratio look more precise than it is. - Use
Target buffer reserveonly for device granularity or operational slack. The exactTarget buffer for delayremains the cleaner value for a strict latency budget. - After trimming a queue, confirm the result with a loaded-latency test or device telemetry. Active queue management, fair queuing, packet loss, and Wi-Fi retransmissions can change live behavior.
Worked Examples:
A deep WAN queue overwhelms a 50 ms budget
A 16 MiB buffer at 100 Mbps produces a Full-buffer drain delay of about 1,342.2 ms. With Average occupancy at 85%, Occupancy-weighted delay is about 1,140.9 ms. The Target buffer for delay is only about 610.35 KiB, so the high bufferbloat risk badge is the right reading for interactive traffic.
A near-target queue has very little spare room
A 600 KiB queue at 100 Mbps drains in about 49.15 ms. Against a 50 ms target, Buffer margin vs target is only about 10.35 KiB under target. That can earn an inside target badge, but a lower real drain rate or a slightly larger configured queue would cross the same ceiling.
A shaped link changes the result
A 1 MiB queue entered with a 1 Gbps port rate appears to drain in about 8.39 ms. If that queue actually sits behind a 50 Mbps upload shaper, the corrected Full-buffer drain delay is about 167.8 ms. With a 20 ms target, Target buffer for delay falls to about 122.07 KiB, and the tuning note points toward trimming the queue or reducing sustained occupancy.
An invalid packet size blocks the budget
If Packet size is set to 40 bytes, the page reports Check queue inputs and leaves the result tables empty. Raise the packet size to at least 64 bytes, then confirm that Packet serialization time and Current buffer rebuild with the expected packet-depth readout.
FAQ:
Should I use port speed or shaped rate?
Use the rate that drains the queue you are evaluating. If a 1 Gbps interface is shaped to 100 Mbps, Link rate should usually be 100 Mbps for the queue behind that shaper.
Why does occupancy not change the worst-case delay?
Average occupancy changes Occupancy-weighted delay. Full-buffer drain delay still assumes the selected queue is full, so it remains the stricter check.
Why is BDP comparison not available?
BDP comparison is not available when Baseline RTT is zero. Enter a positive round-trip time when you want bandwidth-delay product context.
What should I fix when the page says Check queue inputs?
Read the listed message and correct that field first. The common causes are zero or negative Buffer size, zero Link rate, occupancy outside 0% to 100%, negative Baseline RTT, or Packet size below 64 bytes.
Does inside target mean bufferbloat is solved?
No. inside target means the entered queue depth fits the selected delay target on paper. Confirm the path with loaded-latency measurements and queue telemetry when the network is busy.
Are the entered values sent away for calculation?
The buffer, link, RTT, occupancy, and packet-size calculations run in the browser from the values on the page. They are not sent to a dedicated calculation service.
Glossary:
- Queue buffer delay
- Waiting time caused by bytes already stored ahead of a packet at the bottleneck link.
- Bottleneck link
- The slowest effective drain point for the queue being evaluated.
- Queue depth
- The configured amount of data the queue can hold before packets are dropped, marked, or moved by scheduling.
- Drain rate
- The sustained bit rate used to empty queued bytes.
- Bandwidth-delay product
- The amount of data in flight for a given link rate and round-trip time.
- Serialization time
- The time needed to transmit one selected-size packet at the bottleneck rate.
- Active queue management
- Queue behavior that marks or drops packets before a queue stays full, with the goal of reducing persistent delay.
References:
- RFC 7567: IETF Recommendations Regarding Active Queue Management, IETF, July 2015.
- RFC 8289: Controlled Delay Active Queue Management, IETF, January 2018.
- RFC 2309: Recommendations on Queue Management and Congestion Avoidance in the Internet, IETF, April 1998.
- More about Bufferbloat, Bufferbloat.net.