Free, fast, and feature-rich

Rate LimitingMade Simple

The best TypeScript-first rate limiting SDK for Node.js and browsers. Redis-backed distributed rate limiting with optional bring-your-own Redis support.

100%
Open Source
No Limits
Free Forever
TypeScript
Type Safe

Built for developers

Everything you need to implement sophisticated rate limiting without the complexity.

TypeScript-First

Fully typed with excellent IDE support. Catch errors at compile time, not runtime.

Free Forever

No API keys, no payments, no limits on usage. Completely free for all projects.

Zero Config

Works out of the box. Install, import, and start rate limiting in seconds.

Token Bucket

Advanced token bucket algorithm for smooth, continuous rate limiting.

Bring Your Own Redis

Optional Redis URL for full tenant isolation. Use your own Redis or the hosted service.

Dynamic Config

Set limits per request without redeployment. Adjust on the fly.

Get started in seconds

1

Install via npm

Get the Limitly SDK for your project

bash
terminal
$ npm install limitly-sdk
2

Create rate limiter

Initialize the rate limiting client (recommended: use your own Redis)

typescript
terminal
$ import { createClient } from 'limitly-sdk';

// Recommended: Use your own Redis for full tenant isolation
const client = createClient({
  redisUrl: process.env.REDIS_URL || 'redis://localhost:6379',
  serviceId: 'my-app'
});

// Without redisUrl (shares hosted Redis - may collide with other users)
// const client = createClient({ serviceId: 'my-app' });
3

Use in your API

Protect your endpoints with rate limiting

typescript
terminal
$ // Next.js App Router example
export async function GET(request: Request) {
  const userId = request.headers.get('x-user-id') || 'unknown';
  const result = await client.checkRateLimit(userId);
  
  if (!result.allowed) {
    return Response.json(
      { error: 'Too many requests' },
      { status: 429 }
    );
  }
  
  // Process your request...
  return Response.json({ success: true });
}

Why choose Limitly?

See how Limitly compares to other rate limiting solutions

Featureexpress-rate-limitUpstashArcjetUnkeyLimitly
TypeScript Support✅ (TypeScript-first)
Type Safety✅ (Full type exports)
IntelliSense✅ (JSDoc + types)
Free⚠️ (Limited)⚠️ (Limited)⚠️ (Limited)✅ (No limits)
Distributed✅ (Redis)
Token Bucket
Dynamic Limits
Service Isolation
Rate Limit Headers❌ (manual)✅ (automatic)
Graceful Degradation
Zero Config
Self-Hosted Option

⚠️ Limited free tiers may have usage restrictions or require credit cards

Frequently asked questions

Yes! Limitly is completely free. No API keys, no payments, no usage limits. We provide a free hosted service that you can use immediately.

Limitly works with any Node.js framework: Express, Next.js, Fastify, Hono, and more. It's framework agnostic and works in both Node.js and browser environments.

Limitly uses a centralized service architecture. Your application uses the SDK to make HTTP requests to our hosted rate limiting service, which uses Redis and the token bucket algorithm to track and enforce rate limits.

Token bucket is a rate limiting algorithm that allows bursts of traffic while maintaining an average rate. It's more accurate than fixed window limits and provides smoother rate limiting behavior.

Yes! Each service can have isolated rate limits using service IDs. This prevents cross-site collisions - the same IP across multiple apps gets separate rate limits per service.

Limitly has graceful degradation built-in. If the service is unavailable, the SDK will allow requests to pass through, ensuring your application continues to work even if rate limiting is temporarily unavailable.

Ready to get started?

Join developers using Limitly for rate limiting. Free, fast, and fully type-safe.