Rate limiting, done right

Protect your system from abuse without punishing real users. The balance behind good rate limiting.

Engineering

Engineering

Fair, not frustrating

A rate limit that blocks real users is a bug, not a shield.

We set limits that stop abuse and runaway load while staying invisible to normal use, with clear signals so legitimate clients know exactly what happened and when to retry.

Limits that feel fair

Abuse-resistant

Bad actors are throttled before they can hurt the service.

Burst-friendly

Normal spikes pass without tripping the limit.

Clear signals

Callers get honest headers, not silent failures.

The balance

Protect the system without punishing the honest

A limit that blocks real users is its own kind of outage.

Rate limiting exists to keep one noisy client from ruining the service for everyone. Done bluntly, though, it turns into a wall that legitimate traffic keeps hitting, trading one problem for another.

The craft is in the shape of the limit: generous for normal bursts, firm against genuine abuse, and always clear about what's happening so callers can respond instead of guessing.

Highlights

The balance

Stops abuse

Runaway load is contained.

Invisible normally

Real users never notice.

Clear signals

Clients know when to retry.

Deep dive

Limits that protect without punishing

A rate limiter has two customers with opposite needs: the platform, which must survive abuse, and the honest integrator, whose batch job just happens to be enthusiastic. Designing only for the first produces limits that feel like punishment; we design for both.

Honest clients get everything they need to behave: limit, remaining and reset in the response headers, a clear 429 with a Retry-After they can trust, and burst allowances that absorb spiky-but-legitimate traffic instead of rejecting it.

Internally, limits are layered, per token, per tenant and global, so one runaway script degrades one integration, not the neighborhood. The global layer is the circuit breaker you hope never trips, and the per-tenant layers are why it rarely does.

Team for AppsProduct & Engineering

We build software for teams who want their tools to fit the way they actually work — web, mobile, AI and the systems that tie them together. We write here about what we learn shipping it.

Have a project in mind?

Tell us what you're building and we'll get back to you within one business day.