Retry & Backoff Calculator
Retry policy
before the first retry
2 doubles each time
after the initial call
ceiling on one delay
Schedule
Expected delay before each retry, and the total elapsed since the first failure. Jittered delays are averages, so any single run varies.
| Retry | Delay | Elapsed | Bar |
|---|---|---|---|
| #1 | 50ms | 50ms | |
| #2 | 100ms | 150ms | |
| #3 | 200ms | 350ms | |
| #4 | 400ms | 750ms | |
| #5 | 800ms | 1.6s |
Against the caller's timeout
Retries are pointless once the caller has given up. Enter the deadline your client or upstream service enforces.
The full sequence finishes in about 1.6s, inside the 10s deadline.
Load on a failing dependency
When a dependency fails outright, every attempt fails, so every retry becomes another request. This is the arithmetic behind a retry storm.
A dependency that fails under load then receives 6 times its usual traffic, which is why it stays down after the original cause clears. A circuit breaker, which stops calling after a threshold of failures, is what bounds this. Jitter spreads the arrivals but does not reduce the total.
How long your retries really take, and how much traffic they send at a service that is already down.
Retry and backoff FAQs
What is exponential backoff?
A retry policy where each attempt waits longer than the last, usually doubling. A base of 100ms doubling five times gives 100, 200, 400, 800 and 1600ms. It gives a struggling dependency room to recover instead of hammering it at a fixed interval.
Why does backoff need jitter?
Without jitter every client that failed at the same moment retries at the same moment, so the load arrives in synchronised waves rather than spread out. Jitter randomises each delay so the retries land evenly. Full jitter picks a random value between zero and the computed delay; equal jitter keeps half the delay fixed and randomises the rest.
How many retries should I configure?
Few enough that the whole sequence finishes inside the timeout your caller enforces. Retrying after the caller has given up costs capacity and buys nothing. Enter your deadline above and the calculator marks the attempt that starts too late.
What is a retry storm?
When a dependency fails, every attempt fails, so every retry becomes another request. Three retries means four times the normal traffic arriving at a service that is already unhealthy, which keeps it down after the original cause has cleared. A circuit breaker that stops calling after a threshold of failures is what bounds this; jitter spreads the arrivals but does not reduce the total.
Should every failure be retried?
No. Retry timeouts, connection failures, 429 and 5xx responses. Do not retry 4xx client errors, because the same request will fail the same way. Non-idempotent writes need an idempotency key before they are safe to retry at all.
Is anything sent to a server?
No. The arithmetic runs in your browser and the page works offline.