Skip to content
Calixo

API Rate Limit Calculator

Convert an API rate limit into requests per second and per day — normalizing different limit conventions into one comparable figure.

Inputs

E.g. 60 for per-minute, 3600 for per-hour.

Paste this into any page — the widget stays live and updates automatically as this calculator improves. Using WordPress or Notion? See the embed guide.

Saved Scenarios

— select 2+ to compare
Inputs updated · Results recalculated · Just now

Requests/Second

0.278

Requests/Day

24,000

Spark says

How it's calculated
Close-up of server racks in a data center highlighting modern technology infrastructure.
Photo by panumas nikhomkhai on Pexels
From above of optical switch equipment with many similar connectors with rubber cables and metal parts
Photo by Brett Sayles on Pexels

Formula

Requests/sec=LimitWindow (seconds)Requests/sec = \dfrac{Limit}{Window\ (seconds)}
Window
— The rate-limit time window

What is the API Rate Limit Calculator?

API rate limits are usually expressed as N requests per time window — this calculator normalizes that into a per-second rate, useful for comparing different limits or planning request pacing.

Use this when comparing rate limits expressed in different time windows across different API providers, planning request pacing for a batch job that needs to respect a rate limit, or estimating whether a planned integration's request volume will stay within an API's limit.

How to use it

  1. 1 Enter the request limit.
  2. 2 Enter the time window in seconds.

Understanding API Rate Limit Calculator

API rate limits are documented in a genuinely wide variety of conventions across different providers — some specify a limit per second, others per minute, others per hour or even per day — and this variety, while each individual convention is simple enough on its own, makes comparing rate limits across different providers or API endpoints surprisingly easy to get wrong without a consistent normalization step.

Converting any stated rate limit into requests per second, regardless of its originally documented time window, provides exactly this consistent basis for comparison — a limit of '1,000 requests per hour' and a limit of '20 requests per minute' look superficially quite different, but normalized to a per-second basis, they reveal their actual relative generosity clearly (1,000 per hour works out to about 0.278 requests per second, while 20 per minute works out to about 0.333 requests per second — the per-minute limit is actually somewhat more generous, a comparison that isn't at all obvious from the two differently-windowed figures as originally stated).

The calculator's stated limitation — assuming requests spread perfectly evenly across the stated window — deserves genuine attention, since real-world rate limiting implementations frequently behave differently from this idealized even-spacing assumption, and understanding the most common real algorithm (token bucket) clarifies why. A token-bucket rate limiter maintains a conceptual 'bucket' that accumulates tokens at a steady rate up to some maximum capacity, and each request consumes one token — critically, this means a client that hasn't made requests recently can accumulate a reserve of tokens and then make a genuine burst of requests in rapid succession (up to the bucket's capacity), well above the theoretical steady-state average rate, before being throttled back down to the sustained average rate once the accumulated token reserve is exhausted. This burst-tolerant behavior is quite different from a strict, perfectly even request-spacing model, and it's exactly why many real APIs can comfortably absorb a legitimate short burst of client activity (a user rapidly clicking through several actions, for instance) without immediately throttling, even though the API's documented rate limit, taken as a strict even-spacing average, would seem to suggest that burst should trigger throttling.

This distinction matters genuinely for designing request pacing in a batch job or bulk integration specifically. A naive implementation that fires requests as fast as possible until hitting a rate-limit error, then backs off, works reasonably well against a token-bucket limiter (since it can legitimately consume the burst allowance before settling into the steady-state rate), but performs poorly against a stricter fixed-window or sliding-window limiter that doesn't permit the same burst tolerance. Conversely, a very conservative implementation that paces requests strictly at the calculated steady-state per-second rate, never bursting even when a token-bucket limiter would permit it, leaves real throughput on the table against a burst-tolerant limiter, unnecessarily slowing down a batch job that could safely complete faster.

The genuinely practical approach for designing request pacing against an unfamiliar or undocumented rate-limiting algorithm is to start conservatively (well below the calculated theoretical steady-state rate), monitor actual API responses for rate-limit warnings or errors, and adjust pacing dynamically based on the API's real observed behavior — a more robust strategy than assuming any specific rate-limiting algorithm's behavior without direct confirmation from the provider's documentation or from careful observed testing against the actual live API.

Worked examples

Advantages

  • Normalizes any rate limit, regardless of its stated time window, into a directly comparable per-second figure.
  • Shows both per-second and per-day figures, useful for different planning purposes.
  • Simple two-input calculation, quick to apply to any API's documented rate limit.
  • Useful for sanity-checking whether a planned integration's request pattern will respect a documented limit.

Limitations

  • Assumes requests spread perfectly evenly across the window — real token-bucket rate limiters often permit short bursts above this average rate.

Common mistakes

  • ⚠️ Comparing two rate limits expressed in different time windows (per minute versus per hour, for instance) without first normalizing both to the same unit, producing a misleading comparison.
  • ⚠️ Assuming a stated rate limit permits sustained, perfectly even request pacing at exactly the calculated per-second rate, when many real rate limiters use token-bucket or similar algorithms that behave somewhat differently in practice.
  • ⚠️ Not accounting for the rate limit when designing a batch job's request pacing, resulting in the job being throttled or rejected partway through by hitting the actual limit.

Tips

  • 💡 Does this account for bursty traffic? No — it assumes requests are spread evenly across the window. Many real rate limiters use token-bucket algorithms that allow short bursts above the average rate.
  • 💡 Always normalize two different rate limits to the same time unit before comparing them directly, since a 'per minute' and a 'per hour' limit aren't directly comparable without conversion.
  • 💡 For a batch job with a large volume of requests, design pacing conservatively below the calculated per-second rate, since real-world network timing and rate limiter behavior rarely allow perfectly even, continuous request spacing.
  • 💡 Check your specific API provider's documentation for the actual rate-limiting algorithm used (fixed window, sliding window, token bucket), since these behave differently even for nominally identical stated limits.

Real-life uses

  • Comparing rate limits expressed in different time windows across different API providers
  • Planning request pacing for a batch job that needs to respect a rate limit
  • Estimating whether a planned integration's request volume will stay within an API's limit
  • Sanity-checking a documented rate limit against expected real-world usage patterns

Frequently asked questions

Does this account for bursty traffic?

No — it assumes requests are spread evenly across the window. Many real rate limiters use token-bucket algorithms that allow short bursts above the average rate.

Why does normalizing to per-second help compare rate limits?

Different providers document limits using different time windows (per minute, per hour, per day), which makes direct comparison misleading — converting all limits to the same per-second basis reveals their true relative generosity clearly.

What is a token-bucket rate limiter?

A common rate-limiting algorithm where tokens accumulate steadily up to a maximum capacity, and each request consumes one — this allows a client to burst above the average rate briefly by spending accumulated tokens, unlike a strict even-spacing model.

Should I pace a batch job strictly at the calculated per-second rate?

Not necessarily — against a burst-tolerant token-bucket limiter, strict even pacing leaves throughput on the table; a more adaptive approach that monitors actual API responses and adjusts accordingly is often more effective.

How should I design pacing against an unfamiliar rate limiter?

Start conservatively below the calculated steady-state rate, monitor actual API responses for rate-limit warnings, and adjust pacing dynamically based on observed real behavior rather than assuming a specific algorithm without confirmation.