---
id: "cloudflare-waiting-room"
type: "component"
kind: "rate-limiter"
provider: "cloudflare"
category: "edge"
docs: "https://developers.cloudflare.com/waiting-room/reference/configuration-settings/"
url: "https://localhost:3000/catalogue/components/cloudflare-waiting-room"
---

# Cloudflare Waiting Room

Edge queue that caps concurrent users and admits new visitors to the origin at a fixed rate.

| | |
|---|---|
| Provider | [cloudflare](https://localhost:3000/catalogue?provider=cloudflare) |
| Kind | [Rate limiter](https://localhost:3000/catalogue/kinds/rate-limiter) |
| Category | Edge |
| Official docs | [https://developers.cloudflare.com/waiting-room/reference/configuration-settings/](https://developers.cloudflare.com/waiting-room/reference/configuration-settings/) |

## Properties

| property | type | values | required | kind default | this component |
|---|---|---|---|---|---|
| `algorithm` | enum | `token-bucket`, `leaky-bucket`, `sliding-window`, `fixed-window`, `adaptive` | no | "token-bucket" | **"fixed-window"** |
| `atomicOps` (advanced) | boolean | — | no | true | inherited |
| `distributed` | boolean | — | no | false | **true** |
| `failMode` | enum | `open`, `closed` | no | "open" | inherited |
| `jsonResponseEnabled` | boolean | — | no | false | inherited |
| `managed` | boolean | — | no | false | **true** |
| `placement` | enum | `edge`, `gateway`, `sidecar`, `in-process` | no | "gateway" | **"edge"** |
| `queueingMethod` | enum | `fifo`, `random`, `passthrough`, `reject` | no | "fifo" | inherited |
| `queueingStatusCode` | integer | — | no | 200 | inherited |
| `scope` | enum | `global`, `user`, `ip`, `api-key`, `concurrency` | no | "user" | inherited |
| `sessionDurationMinutes` | integer | — | no | 5 | inherited |

Bold values are the ones this component pins.

## Rules that apply · 0

No rule selects this kind or its category.

## Other products of the same kind · 6

- [Cloudflare Rate Limiting](https://localhost:3000/catalogue/components/cloudflare-rate-limiting.md) `cloudflare-rate-limiting` — cloudflare
- [Envoy rate limit service](https://localhost:3000/catalogue/components/envoy-ratelimit.md) `envoy-ratelimit` — default
- [In-process rate limiter](https://localhost:3000/catalogue/components/in-process-limiter.md) `in-process-limiter` — default
- [NGINX limit_req](https://localhost:3000/catalogue/components/nginx-limit-req.md) `nginx-limit-req` — default
- [Generic rate limiter](https://localhost:3000/catalogue/components/rate-limiter.md) `rate-limiter` — default
- [Redis rate limiter](https://localhost:3000/catalogue/components/redis-rate-limiter.md) `redis-rate-limiter` — default

## Use it in a design

```yaml
nodes:
  - { id: "cloudflare-waiting-room", component: "cloudflare-waiting-room" }
```

## Source (`component` YAML, verbatim)

```yaml
# yaml-language-server: $schema=../../schema/component.schema.json
# Cloudflare Waiting Room: edge queue that admits a fixed number of new users per minute to an origin.
# "Waiting Room configuration settings": session duration defaults to 5 minutes, the queueing status
# code to 200, and total active users has a minimum of 200. FIFO is the queueing method for all plans.
schemaVersion: "1"
type: "component"
id: "cloudflare-waiting-room"
kind: "rate-limiter"
provider: "cloudflare"
docs: "https://developers.cloudflare.com/waiting-room/reference/configuration-settings/"
defaults:
  managed: true
  algorithm: "fixed-window"
  placement: "edge"
  distributed: true
properties:
  queueingMethod:
    type: "enum"
    values: ["fifo", "random", "passthrough", "reject"]
    default: "fifo"
  sessionDurationMinutes:
    type: "integer"
    default: 5
  queueingStatusCode:
    type: "integer"
    default: 200
  jsonResponseEnabled:
    type: "boolean"
    default: false
```

Human page: https://localhost:3000/catalogue/components/cloudflare-waiting-room
