---
id: "rate-limiter"
type: "kind"
category: "edge"
url: "https://localhost:3000/catalogue/kinds/rate-limiter"
---

# Rate limiter

Bounds request or concurrency rate per key.

| | |
|---|---|
| Category | Edge |
| Properties | 7 |
| Components | 7 |
| Rules | 0 |

## Properties

| property | type | values | required | default |
|---|---|---|---|---|
| `algorithm` | enum | `token-bucket`, `leaky-bucket`, `sliding-window`, `fixed-window`, `adaptive` | no | "token-bucket" |
| `atomicOps` (advanced) | boolean | — | no | true |
| `distributed` | boolean | — | no | false |
| `failMode` | enum | `open`, `closed` | no | "open" |
| `managed` | boolean | — | no | false |
| `placement` | enum | `edge`, `gateway`, `sidecar`, `in-process` | no | "gateway" |
| `scope` | enum | `global`, `user`, `ip`, `api-key`, `concurrency` | no | "user" |

## Rules for this kind · 0

No rule selects this kind or its category.

## Components · 7

### vendor-neutral

- [Generic rate limiter](https://localhost:3000/catalogue/components/rate-limiter.md) `rate-limiter` — the kind itself

### cloudflare

- [Cloudflare Rate Limiting](https://localhost:3000/catalogue/components/cloudflare-rate-limiting.md) `cloudflare-rate-limiting` — 5 defaults
- [Cloudflare Waiting Room](https://localhost:3000/catalogue/components/cloudflare-waiting-room.md) `cloudflare-waiting-room` — 4 defaults

### default

- [Envoy rate limit service](https://localhost:3000/catalogue/components/envoy-ratelimit.md) `envoy-ratelimit` — 4 defaults
- [In-process rate limiter](https://localhost:3000/catalogue/components/in-process-limiter.md) `in-process-limiter` — 3 defaults
- [NGINX limit_req](https://localhost:3000/catalogue/components/nginx-limit-req.md) `nginx-limit-req` — 4 defaults
- [Redis rate limiter](https://localhost:3000/catalogue/components/redis-rate-limiter.md) `redis-rate-limiter` — 2 defaults

## Source (`kind` YAML, verbatim)

```yaml
# yaml-language-server: $schema=../schema/kind.schema.json
# Abstract kind: Bounds request or concurrency rate per key (token bucket at the edge, Envoy ratelimit, in-process semaphores, adaptive limiters).
schemaVersion: "1"
type: "kind"
id: "rate-limiter"
category: "edge"
properties:
  algorithm:
    type: "enum"
    values: ["token-bucket", "leaky-bucket", "sliding-window", "fixed-window", "adaptive"]
    default: "token-bucket"
  scope:
    type: "enum"
    values: ["global", "user", "ip", "api-key", "concurrency"]
    default: "user"
  failMode:
    type: "enum"
    values: ["open", "closed"]
    default: "open"
  placement:
    type: "enum"
    values: ["edge", "gateway", "sidecar", "in-process"]
    default: "gateway"
  distributed:
    type: "boolean"
    default: false
  atomicOps:
    type: "boolean"
    default: true
    advanced: true
  managed:
    type: "boolean"
    default: false
```

Human page: https://localhost:3000/catalogue/kinds/rate-limiter
