Limits
Capability profile, concurrency, upload caps, request and response body sizes, and account quotas.
Capability profile
http-sync-v0: one fetch handler, optional scheduled and queue handlers, env.* bindings, buffered response bodies, and WebSockets from compatibility date 2026-10-30. See The handler for the handler contract and Runtime compatibility for tested APIs and npm packages.
Concurrency
Each sprout process runs one request at a time. More than two or three requests in flight add latency, not throughput, because a deployment is one process. To scale a standalone binary, run several copies behind SO_REUSEPORT.
Size limits
| Limit | Default | Notes |
|---|---|---|
| Sprout upload | 16 MiB | |
| Assets | 64 MiB | Up to 4096 files. |
| Inbound request body | 1 MiB | SB_REQUEST_BODY_MAX. A larger body gets a 413 before the handler runs. |
Outbound fetch() response body |
32 MiB | SB_FETCH_MAX_BYTES. The body is held in memory whole. |
| R2 direct upload | 100 MiB | Per upload URL, set with maxBytes up to 5 GiB. See R2. |
| Secret value | 8 KiB |
Account quotas
| Scope | Default |
|---|---|
| Per account | 50 projects, 100 storage resources |
| Per project | 25 retained versions besides the active one, 5 custom domains, 64 secrets |
| Deploys | 10 per minute per account, 20 per minute per IP address |
The platform operator can change these defaults.