NATS · Rate Limits

Nats Rate Limits

NATS open source does not enforce request-per-second rate limits via HTTP — it is a TCP/WebSocket messaging server. Operator-enforced limits are configured per Account via JWT claims (max connections, max subscriptions, max payload, max data, max leaf nodes). The HTTP monitoring endpoints on port 8222 are unauthenticated and intended for operations dashboards. Synadia Cloud, the managed offering, enforces per-Team quotas defined by subscription tier (connections, subscriptions, network data, storage, message size) rather than RPS throttling.

8 Limits Quota: -ERR
Rate LimitingMessage BrokerPub SubStreaming

Limits

Max connections (per account, OSS) account
concurrent_connections
see account JWT max_connections claim
Configured per Account via JWT claims; default unlimited.
Max subscriptions (per account, OSS) account
concurrent_subscriptions
see account JWT max_subscriptions claim
Configured per Account via JWT claims; default unlimited.
Max payload (per account, OSS) account
bytes_per_message
see account JWT max_payload claim
Defaults to server max_payload (1 MB).
Max data (per account, OSS) account
bytes
see account JWT max_data claim
Aggregate JetStream storage cap.
Synadia Cloud Personal — connections team
concurrent_connections
10
Free tier; 100 subscriptions, 5 GiB storage, 10 GB network data, 1 MiB max message.
Synadia Cloud Starter — connections team
concurrent_connections
100
$49/mo; 1,000 subscriptions, 10 GiB storage, 100 GB network data.
Synadia Cloud Pro — connections team
concurrent_connections
1000
$199/mo; 10,000 subscriptions, 50 GiB storage, 1 TiB network data, 2 MiB max message.
Synadia Cloud Premium — connections team
concurrent_connections
10000
$899/mo; 100,000 subscriptions, 1 TiB storage, 2 TiB network data, 8 MiB max message.

Policies

Account-scoped quotas (OSS)
NATS enforces resource limits per Account via signed JWT claims rather than per-request throttling. Use the operator/account/user hierarchy and `nsc` tool to set max_connections, max_subscriptions, max_payload, max_data, and max_leaf_nodes.
Slow consumer detection
NATS server disconnects subscribers that cannot keep up with publish rate; clients receive a slow-consumer error and must reconnect. Publishers receive `-ERR` flow-control messages.
JetStream backpressure
JetStream applies stream-level limits (max bytes, max messages, max age) and pull/push consumer ack windows. Producers are flow-controlled when stream storage thresholds are reached.
Synadia Cloud quota enforcement
Cloud tier limits are enforced as hard caps on connections, subscriptions, storage, and network data. Exceeding network-data or storage caps triggers degraded service until the next billing period or until the team upgrades / adds storage packs.

Sources