What it is
A free header reader for rate limits. It understands Retry After, the X RateLimit family, the IETF RateLimit fields and the formats used by GitHub, OpenAI, Anthropic, Shopify and Discord.
429 explained in plain words
Paste the response headers. Rate Limit Story reads the limit, what is left, when it resets and how long to wait, then writes a four panel story and a ready reply for the client who hit the wall.
Sending batch 501 of 600…
Too many requests! Token bucket is empty.
Wait 20 s, then retry with a little jitter.
A free header reader for rate limits. It understands Retry After, the X RateLimit family, the IETF RateLimit fields and the formats used by GitHub, OpenAI, Anthropic, Shopify and Discord.
API owners, developer support, partner managers and anyone whose client just sent a screenshot of a 429 with no context.
Rate limit headers are cryptic, mix Unix times with seconds and differ per vendor. People guess, retry too fast and get blocked for longer.
Everything is read in this tab. Nothing you paste is uploaded or stored.
Paste the headers from a failing call, or load one of the samples.
Headers never leave this page. Remove auth or cookie headers before sharing a screenshot anyway.
Mix headers from different styles in one paste. Names are not case sensitive.
Retry-After: 20Seconds or an HTTP date. When present, it wins over every other reset hint.
X-RateLimit-Limit: 5000
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1792661820Used by GitHub, Twitter style APIs and many others. Reset can be Unix seconds, milliseconds or seconds from now, and it says which one it picked.
RateLimit-Policy: "default";q=100;w=60
RateLimit: "default";r=7;t=42The standard fields with quota, window, remaining and time to reset.
x-ratelimit-remaining-tokens: 0
x-ratelimit-reset-tokens: 18.4sSeparate request and token buckets with durations like 6m0s. The empty bucket is marked as the one holding you back.
X-Shopify-Shop-Api-Call-Limit: 38/40
X-RateLimit-Reset-After: 2.75Used out of size counters, reset after seconds, buckets, scopes and global limits.
From the browser network tab, curl -i, your logs or the screenshot a client sent. Only the header lines matter.
Each bucket is read on its own and the one that is empty or closest to empty becomes the main character.
What happened, where you stand, when it resets and what to do, with times in UTC and in your own time zone.
Copy the ready reply into the ticket, or copy the full story for your own notes.
GitHub answers some rate limited calls with 403. The story still treats it as limited when remaining is zero.
Retry After. It is the server telling you exactly how long to wait, while reset describes the whole window.
A small random extra delay. Without it, every client that was blocked retries at the same second and trips the limit again.
The page sends nothing anywhere. Still, remove Authorization and cookie headers before you share anything.