fshy / Compute / Crawling / Databases and KV / Domains and DNS / Egress and tunnels / Email / Inference / Storage
Cloudflare
cloudflare.com · Compute, Crawling, Databases and KV, Domains and DNS, Egress and tunnels, Email, Inference, Storage · 38 records · JSON
- Cloudflare D1 Databases and KV★ qualifiesemailno cardDrequest-rate
- Cloudflare DNS Domains and DNS★ qualifiesemailno cardMper-object-cap
- Cloudflare Quick Tunnel Egress and tunnels★ qualifiesanonymousno cardMretention-clamped
- Cloudflare Pages (Direct Upload / Wrangler) Storage★ qualifiesemail?card?Dper-object-cap
- Cloudflare Workers Static Assets Storage★ qualifiesemail?card?Dper-object-cap
- Cloudflare Browser Run / Kitesurf Computecaveatemail?card?Drequest-rate
- Cloudflare Durable Objects Computecaveatemailno cardDrequest-rate
- Cloudflare Project Alexandria ComputecaveatcardcardDwrite-gated
- Cloudflare Workers Computecaveatemailno cardDrequest-rate
- Cloudflare Workers AI Computecaveatemailno cardDrequest-rate
- Cloudflare Workers AI Crawlingcaveatemailno cardRrequest-rate
- Cloudflare Browser Rendering Crawlingcaveatemailno cardRrequest-rate
- Cloudflare URL Scanner Crawlingcaveatemailno cardDretention-clamped
- Cloudflare Workers KV Databases and KVcaveatemailno cardDrequest-rate
- Cloudflare Universal SSL Domains and DNScaveatemailno cardRper-object-cap
- Cloudflare Pages Egress and tunnelscaveatemailno cardDper-object-cap
- Cloudflare R2 Egress and tunnelscaveatemailno cardD
- Cloudflare Tunnel (named) Egress and tunnelscaveatemailno cardDwrite-gated
- Cloudflare WARP (consumer) Egress and tunnelscaveatemailno cardD
- Cloudflare Email Routing Emailcaveatemailno cardD
- Cloudflare Workers AI Inferencecaveatemailno cardDrequest-rate
- Cloudflare for Startups — nonprofit / civil-society track Storagecaveatinstitutionno cardRwrite-gated
- Project Alexandria - Cloudflare's recurring OSS credit programme StoragecaveatcardcardR
- Cloudflare Containers ComputepaidcardcardDvolume-quota
- Cloudflare Containers (free tier question) ComputepaidcardcardDwrite-gated
- Cloudflare Sandbox SDK / Containers Computepaidemail?card?Drequest-rate
- Cloudflare Workers for Platforms Computepaidemail?card?Drequest-rate
- Cloudflare Registrar Domains and DNSpaidcardcardRwrite-gated
- Cloudflare Spectrum Egress and tunnelspaidinstitutionno cardDwrite-gated
- Cloudflare Email Sending EmailpaidcardcardDwrite-gated
- cloudflare stream — video as storage Storagepaidemail?card?Rdisagrees
- Cloudflare for Startups Egress and tunnelsfails: identityinstitutionno cardDwrite-gated
- cloudflare stream Storagefails: egressemail?card?Rdisagrees
- Cloudflare Realtime TURN Egress and tunnelsfails: quotaemailno cardDvolume-quota
- cloudflare hyperdrive Storagefails: quotaemail?card?R
- cloudflare images — storage Storagefails: quotaemail?card?R
- cloudflare pages as a mutable object store Storagefails: quotaemail?card?R
- cloudflare queues Storagefails: quotaemail?card?R
Cloudflare D1 Databases and KV
★ qualifiesemailno cardDrequest-rate
| Free tier | 10 databases; 500 MB per database; 5 GB per account; 5 million rows read per day; 100,000 rows written per day unit mixed; metered on request-count |
|---|---|
| Price | USD 0.75/GB-month beyond 5 GB on Workers Paid |
| Per-object cap | 2,000,000 bytes per row, BLOB or string; 500 MB per database (2000000 bytes) |
| Retention | storage persists; Time Travel point-in-time recovery covers 7 days on Free |
| Egress | no egress charge; rows read and rows written are the metered quantities |
| Identity | email a Cloudflare account |
| Limits | |
| Binding | request-rate |
| Interface | rest, cli a Worker binding, a REST API and the wrangler CLI |
| Tooling | wrangler d1; the Cloudflare API; better-sqlite3 style calls inside a Worker |
| Composes with | per-tenant SQLite in a Worker with a free Postgres as the system of record; 500 MB per database and 10 databases is 5 GB of free relational state |
| Reliability | at the daily read or write limit the D1 API returns errors; at the storage limit you must delete data before you can insert, alter a table or create an index |
| Notes | The 100,000 rows written a day is the binding number for any ingest, and it is small: 1.16 rows a second sustained. A full table scan counts every row it scans as a row read, so an unindexed query spends the read budget fast. |
| Evidence rung | documented the limits and pricing pages were read today; nothing was provisioned. |
| Checked | 2026-10-23 (live); stale on 2026-11-22 |
| Parsed numbers |
|
Evidence (2)
| date | source | what it proved |
|---|---|---|
| 2026-10-22 | developers.cloudflare.com/d1/platform/limits/ | Free: 10 databases, 500 MB maximum database size, 5 GB per account, Time Travel 7 days, 50 queries per Worker invocation; 2,000,000-byte row maximum; 100,000-byte SQL statement; 30-second query maximum |
| 2026-10-22 | developers.cloudflare.com/d1/platform/pricing/ | Free: 5 million rows read/day, 100,000 rows written/day, 5 GB total storage; 'Free limits reset daily at 00:00 UTC'; at the storage limit you must delete data before inserting |
Cloudflare DNS Domains and DNS
★ qualifiesemailno cardMper-object-cap
| Free tier | free zone on any plan with anycast resolution, an API, DNSSEC and 200 records per zone on zones created on or after 2024-09-01 unit objects; metered on object-count; 1,000 records per zone on zones created before 2024-09-01 |
|---|---|
| Price | none stated |
| Per-object cap | 200 DNS records per zone on a zone created on or after 2024-09-01; 1,000 on an older free zone; 3,500 on Pro and Business |
| Retention | the zone persists while it is active; a zone whose nameservers stop pointing at Cloudflare moves to a Moved state and is deleted after a long enough period |
| Egress | DNS queries are never limited or capped on any plan |
| Identity | email a Cloudflare account, and the domain must use Cloudflare nameservers |
| Limits |
the dashboard warns at 85% of the record quota and the current quota and usage are readable per zone through the API |
| Binding | per-object-cap |
| Interface | rest, cli a REST API for zones and records; a DoH and DoT resolver at cloudflare-dns.com; flarectl and the Cloudflare Terraform provider |
| Tooling | the Cloudflare API, flarectl, Terraform, certbot with a DNS-01 plugin, acme.sh |
| Composes with | the only free DNS in this set that also gives a free CDN, a free tunnel, free Universal SSL and free Email Routing on the same zone |
| Reliability | no reliability event recorded |
| Notes | 200 records is the number a per-tenant subdomain scheme meets, and it is shared with the records Cloudflare adds for Email Routing. The absence of a query cap is what makes it the default choice. |
| Evidence rung | measured the keyless DoH resolver answered a real query today, and the record quota and the apex CNAME behaviour are both first-party pages. No zone was created. |
| Checked | 2026-10-23 (live); stale on 2027-01-21 |
Evidence (4)
| date | source | what it proved |
|---|---|---|
| 2026-10-22 | probe:https://cloudflare-dns.com/dns-query?name=example.com&type=A | 200, 251 bytes of JSON with Status 0 and two A records, so the keyless DoH endpoint answers programmatically without an account |
| 2026-10-22 | developers.cloudflare.com/dns/manage-dns-records/ | Per-zone quota: Free zones created before 2024-09-01 00:00:00 UTC 1,000; Free zones created on or after 2024-09-01 200; Pro 3,500; Business 3,500; Enterprise per-account. Records created by other Cloudflare services count toward the quota |
| 2026-10-22 | developers.cloudflare.com/dns/manage-dns-records/how-to/crea | 'Cloudflare's CNAME flattening allows you to create CNAME records at your zone apex'; an ANAME or ALIAS at a previous provider can be recreated as a CNAME at @ |
| 2026-10-22 | developers.cloudflare.com/dns/faq/ | 'Cloudflare never limits or caps DNS queries'; a zone in a Moved state for long enough is deleted |
Unknown or withheld values (1)
$.reliability_notenone-observed
Cloudflare Quick Tunnel Egress and tunnels
★ qualifiesanonymousno cardMretention-clamped
| Free tier | one ephemeral trycloudflare.com hostname per cloudflared run; no account, no card unit unlimited; metered on request-count |
|---|---|
| Price | none stated |
| Per-object cap | no proxy body cap observed: a 400 MiB POST body traversed byte-identically |
| Retention | the hostname dies with the process; a new run gets a new random name |
| Egress | not metered; no byte quota published or observed |
| Identity | anonymous no account, no card; measured by running cloudflared with no login |
| Limits |
|
| Binding | retention-clamped the hostname's lifetime binds the shape of the workload; the 522 rate under concurrency binds its throughput, but a new run restores a fresh hostname and cannot restore a stable one. |
| Interface | rest, cli cloudflared tunnel --url, then https://<random>.trycloudflare.com |
| Tooling | cloudflared 2026.10.3 |
| Composes with | the front half of the free public-endpoint chain: origin -> cloudflared -> a random trycloudflare hostname, with no account and no domain. The chain's scarce link is the hostname's lifetime, so it serves a test or a handover, not a stable address. |
| Reliability | at 32 concurrent 100 MiB ranged GETs, 8 returned 522 and aggregate throughput fell to 3.79 MiB/s, below the 6.27 MiB/s single-stream baseline |
| Notes | The census named the 100 MB body cap as this product's binding constraint and that is wrong: the cap is a zone-proxy limit and a trycloudflare hostname is not a zone. Measured 6.27 MiB/s single stream (104,857,600 bytes in 15.948 s), which is 0.52 TiB/day. The earlier figure of 0.55 TiB/day here was the egress topic's row for a different host at 6.72 MiB/s. The concurrency ceiling is real and the 522s are the honest number. |
| Evidence rung | measured |
| Checked | 2026-10-23 (live); stale on 2026-12-22 |
| Parsed numbers |
|
Evidence (5)
| date | source | what it proved |
|---|---|---|
| 2026-10-22 | probe:https://ace-wheel-basement-participated.trycloudflare.com/blob100m.bin | 100 MiB read back: 200, 104,857,600 bytes in 15.948 s, which is 6.27 MiB/s; 3 earlier sequential runs logged 9.32, 7.87 and 10.64 with no unit, byte count or elapsed time kept, so the divisor is unrecoverable and none of the three is used in any arithmetic |
| 2026-10-22 | probe:https://favors-davis-charges-epic.trycloudflare.com/ | 400 MiB POST: 200, got=419,430,400 bytes, sha256 d491a95d...1839 matched the source |
| 2026-10-22 | probe:https://numbers-bras-calculator-quebec.trycloudflare.com/small.txt | 400 concurrent GETs of a 3-byte object: 400 x 200 in 6.5 s |
| 2026-10-22 | probe:https://ace-wheel-basement-participated.trycloudflare.com/blob100m.bin | 8 and 32 concurrent 100 MiB ranged GETs: 6/8 and 24/32 returned 206, the rest 522; 3.72 and 3.79 MiB/s aggregate |
| 2026-10-22 | developers.cloudflare.com/workers/platform/limits/ | the 100 MB request-body cap is stated for a request through the Cloudflare proxy on a zone plan, not for a tunnel transport |
More fields (3)
{
"stale_after_days": 180,
"bytes_transit": "yes",
"transit_note": "the tunnel carries the origin's bytes both ways; a 400 MiB POST traversed it byte-identically"
}Corrections
- 2026-10-22 The 100 MB body cap is not a tunnel limit, and a 400 MiB body traversed a Quick Tunnel
Cloudflare Pages (Direct Upload / Wrangler) Storage
★ qualifiesemail?card?Dper-object-cap
| Free tier | 20,000 files per site on Free; 25 MiB max per file; 100 projects per account => ~488 GiB per project, ~48.8 TiB per account. No stated total-bytes cap. unit objects; metered on unstated |
|---|---|
| Price | none stated |
| Per-object cap | 25 MiB max per file (26214400 bytes) |
| Retention | not stated |
| Egress | Unlimited requests and unlimited bandwidth: 'Static asset requests ... are free and unlimited' (pages/functions/pricing) and 'Unlimited bandwidth ... no extra cost to you' (blog.cloudflare.com/big-ideas-on-pages). |
| Identity | email (placeholder) not published |
| Limits |
25 MiB hard per file (no override on Free); 20,000 files per site on Free; 500 builds/month and 20-min build timeout if Git-driven; new-project creation throttled for the first 48h of a new account ('Cloudflare limits the number of new Pages projects you can create within your first 48 hours'); Functions requests draw from the 100k/day Workers quota, but pure static requests do not. |
| Binding | per-object-cap the per-object cap sets the shard size and therefore the object count; it bounds the total more tightly than any headline quota |
| Interface | rest, git, rclone, cli rest |
| Tooling | wrangler pages deploy (official CLI, direct upload of a folder, no Git required); Cloudflare API v4 /accounts/:id/pages/projects/:name/deployments does multipart upload; rclone has no native 'pages' backend but can be driven via 'rclone serve http' + wrangler or a custom remote. |
| Composes with | 100 projects per account (docs: 'limit of 100 projects per account. This limit is not routinely increased') x 20,000 files x 25 MiB. Unlimited free Cloudflare accounts x 100 projects. Workers Static Assets (100 Workers free, 20,000 files each) is a second, independent pool on the same account. Sharding is by file: any 10 TiB working set = ~420k shards of 25 MiB spread over ~21 projects. |
| Reliability | Assets stay cached on the CDN until the next deployment, so re-upload churn is the only real risk; no data-vanishing mechanism observed, and static serving is not rate-limited or billed. |
| Notes | 20,000 files per site on Free; 25 MiB max per file; 100 projects per account => ~488 GiB per project, ~48.8 TiB per account. No stated total-bytes cap. |
| Evidence rung | documented re-read from read-broker on 2026-10-22 (HTTP 200, 3777 bytes, sha256 c163cd6d9d46f7fd). The page states the number in the record; the claim is documented, not measured. | re-read from read-broker on 2026-10-22 (HTTP 200, 7360 bytes, sha256 77e09b369ce18a37). The page states the number in the record; the claim is documented, not measured. |
| Checked | 2026-10-21 (inherited); stale on 2026-11-20 |
| Parsed numbers |
|
Evidence (7)
| date | source | what it proved |
|---|---|---|
| 2026-10-22 | developers.cloudflare.com/pages/platform/limits/ | Pages Free plan allows 20,000 files per site, 25 MiB per file. Re-read https://developers.cloudflare.com/pages/platform/limits/: HTTP 200, 7360 bytes, sha256 77e09b369ce18a37. Quoted: ch file on your site to Cloudflare's globally distributed network to deliver a low latency experience to every user that visits your site. Cloudflare Pages sites can contain up to 20,000 files on the Free plan. Paid plans (such as Pro, Business, and Enterprise plans) can have up to 100,000 files per site. To enable this increased limit, set the environment variable PAGES_WRANGLER_MAJOR_VERSION=4 in your Pages project settings. ## File size The |
| 2026-10-22 | developers.cloudflare.com/pages/functions/pricing/ | requests to static assets are free and unlimited on Free and paid plans. Re-read https://developers.cloudflare.com/pages/functions/pricing/: HTTP 200, 3777 bytes, sha256 c163cd6d9d46f7fd. Quoted: [change usage models](https://developers.cloudflare.com/workers/platform/pricing/#how-to-switch-usage-models). ### Static asset requests On both free and paid plans, requests to static assets are free and unlimited. A request is considered static when it does not invoke Functions. Refer to [Functions invocation routes](https://developers.cloudflare.com/pages/functions/routing/#functions-invocation-routes) to learn more about when Functions are invoked. ## Free Plan Re |
| 2026-10-21 | developers.cloudflare.com/pages/platform/limits/ | 'Cloudflare Pages sites can contain up to 20,000 files on the Free plan', 'maximum file size for a single Cloudflare Pages site asset is 25 MiB', 'limit of 100 projects per account' (page last updated Sep 5, 2026) |
| 2026-10-21 | developers.cloudflare.com/pages/functions/pricing/ | 'On both free and paid plans, requests to static assets are free and unlimited' |
| 2026-10-21 | blog.cloudflare.com/big-ideas-on-pages/ | 'Unlimited requests ... Unlimited bandwidth ... for free' |
| 2026-10-21 | vite.pages.dev/ | probe: curl -D - -> HTTP/1.1 200, Server: cloudflare, x-server: Cloudflare Pages |
| 2026-10-21 | vite.pages.dev/assets/index.37d2ad0a.js | probe: curl -D - -> 200, Content-Type: application/javascript, Content-Length: 1555, Cache-Control: public, max-age=0, must-revalidate (direct binary asset served off pages.dev) |
More fields (1)
{
"verified_in_pass": [
{
"url": "https://developers.cloudflare.com/pages/functions/pricing/",
"date": "2026-10-22",
"via": "read-broker",
"http_status": 200,
"bytes": 3777,
"sha256": "c163cd6d9d46f7fd46095c5a8ce78102090d9cb7a37c9e9b215f35f8e7615727",
"pattern_found": true,
"what_changed": "no change: the page still states the claim",
"capture": "captures\\cloudflare-pages-developers-cloudflare-com-pages-functions-pricing-.txt"
},
{
"url": "https://developers.cloudflare.com/pages/platform/limits/",
"date": "2026-10-22",
"via": "read-broker",
"http_status": 200,
"bytes": 7360,
"sha256": "77e09b369ce18a373420038b357e2d023518e2c8875292ac8291036c5f68dd2a",
"pattern_found": true,
"what_changed": "no change: the page still states the claim",
"capture": "captures\\cloudflare-pages-developers-cloudflare-com-pages-platform-limits-.txt"
}
]
}Unknown or withheld values (6)
$.free_tier.notesprocess$.identity_cost.detaildefaulted$.identity_cost.kindidentity-defaulted$.per_object_cap.notesnot-extracted$.retention.notesnot-extracted$.retention.statednot-extracted
Cloudflare Workers Static Assets Storage
★ qualifiesemail?card?Dper-object-cap
| Free tier | 20,000 files per Worker version on Free; 25 MiB per file; 100 Workers per account => ~488 GiB per Worker, ~48.8 TiB per free account. 'There is no additional cost for storing Assets.' unit objects; metered on stored-bytes |
|---|---|
| Price | none stated |
| Per-object cap | 25 MiB per file (26214400 bytes) |
| Retention | not stated |
| Egress | 'Requests to static assets are free and unlimited' — Workers Static Assets billing doc. Only Worker-script invocations (SSR) count against the 100,000/day free request quota. |
| Identity | email (placeholder) not published |
| Limits |
20,000 files and 100 Workers on Free; 25 MiB per file; must stay under the Worker *request* quota only if a script runs (run_worker_first / SSR). Static-only assets do not count against that quota at all. |
| Binding | per-object-cap the per-object cap sets the shard size and therefore the object count; it bounds the total more tightly than any headline quota |
| Interface | rest, cli rest |
| Tooling | wrangler deploy with an assets binding (wrangler 3.78.10+); Workers REST API; static assets can be deployed with no Worker script logic, so serving is purely static. |
| Composes with | 100 Workers on the free plan x 100,000 files (paid) or 20,000 files (free) x 25 MiB. Separate bucket from Pages on the same account, so a single free account presents Pages (100x20k) + Workers (100x20k) file slots. Unlimited accounts multiply further. |
| Reliability | Free-tier 429s apply to script-invoking routes only; purely static paths keep serving. No eviction window documented for assets — they live as long as the Worker version. |
| Notes | 20,000 files per Worker version on Free; 25 MiB per file; 100 Workers per account => ~488 GiB per Worker, ~48.8 TiB per free account. 'There is no additional cost for storing Assets.' |
| Evidence rung | documented re-read from read-broker on 2026-10-22 (HTTP 200, 27086 bytes, sha256 574d5088a914872b). The page states the number in the record; the claim is documented, not measured. |
| Checked | 2026-10-21 (inherited); stale on 2026-11-20 |
| Parsed numbers |
|
Evidence (4)
| date | source | what it proved |
|---|---|---|
| 2026-10-22 | developers.cloudflare.com/workers/platform/limits/ | the CDN cache object cap is 512 MB on Free/Pro/Business. Re-read https://developers.cloudflare.com/workers/platform/limits/: HTTP 200, 27086 bytes, sha256 574d5088a914872b. Quoted: g-cloudflare-support/). Cloudflare does not enforce response body size limits. [CDN cache limits](https://developers.cloudflare.com/cache/concepts/default-cache-behavior/) apply: 512 MB for Free, Pro, and Business plans, and 5 GB for Enterprise. --- ## CPU time CPU time measures how long the CPU spends executing your Worker code. Waiting on network requests (such as fetch() calls, KV reads, or database queries) does **not** count toward |
| 2026-10-21 | developers.cloudflare.com/workers/static-assets/billing-and- | 'Requests to static assets are free and unlimited ... There is no additional cost for storing Assets.' (last updated Apr 23, 2026) |
| 2026-10-21 | developers.cloudflare.com/workers/platform/limits/ | Static Assets table: 'Files per Worker version: 20,000 (Free) / 100,000 (Paid)', 'Individual file size: 25 MiB', 'Number of Workers: 100 (Free) / 500 (Paid)' |
| 2026-10-21 | withheld | probe: Server: cloudflare + x-server: Cloudflare Pages on a live pages.dev asset confirms the same edge pipeline; range requests against pages.dev returned 200 not 206, so resume is not guaranteed on that path |
More fields (1)
{
"verified_in_pass": [
{
"url": "https://developers.cloudflare.com/workers/platform/limits/",
"date": "2026-10-22",
"via": "read-broker",
"http_status": 200,
"bytes": 27086,
"sha256": "574d5088a914872b338e03c727adf4ef4ef88a8f2a1bcc41bd3f7b200adfb25e",
"pattern_found": true,
"what_changed": "no change: the page still states the claim",
"capture": "captures\\cloudflare-workers-static-assets-developers-cloudflare-com-workers-platform-limits-.txt"
}
]
}Unknown or withheld values (7)
$.evidence[3].urlprivate-url$.free_tier.notesprocess$.identity_cost.detaildefaulted$.identity_cost.kindidentity-defaulted$.per_object_cap.notesnot-extracted$.retention.notesnot-extracted$.retention.statednot-extracted
Cloudflare Browser Run / Kitesurf Compute
caveatemail?card?Drequest-rate
| Free tier | Workers Free includes 10 minutes of browser time a day and 3 concurrent browsers, shared across Quick Actions and Browser Sessions. Workers Paid includes 10 hours a month, then USD 0.09 an hour unit minutes; metered on wall-clock; browser hours are shared across all methods and rounded to the nearest whole hour per billing cycle |
|---|---|
| Price | none stated |
| Per-object cap | not stated |
| Retention | not stated |
| Egress | not stated |
| Identity | email (placeholder) not published |
| Limits |
not stated |
| Binding | request-rate ten minutes a day is the wall: the concurrency limit of three browsers is never reached inside a ten-minute day |
| Interface | unknown |
| Tooling | not stated |
| Composes with | not stated |
| Reliability | no reliability event recorded |
| Notes | Re-read on 2026-10-22. the pricing page publishes the figure. |
| Evidence rung | documented One page read moves it to documented. identity_cost is a guess by analogy, not a finding: the record marks it unverified in that field and no signup was performed. |
| Checked | 2026-10-22 (inherited); stale on 2026-11-21 |
| Parsed numbers |
|
Evidence (1)
| date | source | what it proved |
|---|---|---|
| 2026-10-22 | developers.cloudflare.com/browser-run/pricing/ | 'Browser hours: 10 minutes per day' on Workers Free and '10 hours per month, then $0.09 per additional hour' on Workers Paid; 'Concurrent browsers: 3 browsers' on Free |
More fields (13)
{
"talaria_m10h_usd": null,
"talaria_m24h_usd": null,
"nemo_m10h_usd": 31.1,
"keep_rate": null,
"keep_rate_basis": "no field in the source",
"billing_model": "unclassified",
"shape": null,
"session_cap": null,
"persistent_storage": null,
"network_out": null,
"price_note": null,
"free_tier_kind": "allowance",
"burst_x": 1.0
}Unknown or withheld values (15)
$.chainingnot-stated$.egress.meteredegress-unknown$.egress.termsnot-stated$.extras.price_noteprocess$.identity_cost.detaildefaulted$.identity_cost.kindidentity-defaulted$.interfaceinterface-unknown$.interface_detailwithheld$.limits_notenot-stated$.per_object_cap.notesprocess$.per_object_cap.statednot-stated$.reliability_notenone-observed$.retention.notesnot-extracted$.retention.statednot-stated$.toolingnot-stated
Cloudflare Durable Objects Compute
caveatemailno cardDrequest-rate
| Free tier | 13,000 GB-seconds of Durable Object duration a day on the free plan. That is a Durable Object allowance; Workers Free separately carries 100,000 requests a day unit mixed; metered on wall-clock; an object that is idle and eligible for hibernation is not billed for duration; duration is billed for the 128 MB allocation regardless of actual use |
|---|---|
| Price | none stated |
| Per-object cap | not applicable |
| Retention | SQLite-backed storage persists; hibernation disconnects clients without destroying state |
| Egress | served from the edge; no per-byte charge on the limits page |
| Identity | email a Cloudflare account; no card for the Free plan |
| Limits |
a Durable Object stays active while a request, response stream, WebSocket or pending I/O is in flight |
| Binding | request-rate the daily duration allocation binds before the 128 MB ceiling, and a non-hibernating WebSocket spends it at wall-clock rate |
| Interface | ssh a Worker binding; RPC and WebSocket to the object |
| Tooling | Wrangler, the Workers runtime, SQLite storage per object |
| Composes with | a stateful coordination point with a WebSocket, which is a relay substrate and not a general machine |
| Reliability | no reliability event recorded |
| Notes | It is a Durable Object allowance and attributing it to Workers was a category error. |
| Evidence rung | documented |
| Checked | 2026-10-22 (live); stale on 2026-11-21 |
| Parsed numbers |
|
Evidence (3)
| date | source | what it proved |
|---|---|---|
| 2026-10-22 | developers.cloudflare.com/durable-objects/platform/pricing/ | the included allocation table reads 'Duration | 13,000 GB-s / day | 400,000 GB-s / month, + $12.50/million GB-s' |
| 2026-10-22 | developers.cloudflare.com/durable-objects/platform/pricing/ | 'Durable Objects that are idle and eligible for hibernation are not billed for duration'; duration is billed for the 128 MB allocation regardless of actual usage |
| 2026-10-22 | developers.cloudflare.com/workers/platform/limits/ | Workers Free carries 100,000 requests a day; the page does not carry the 13,000 GB-s figure |
More fields (8)
{
"shape": null,
"billing_model": "wall-clock",
"session_cap": {
"wall_clock_min": null,
"idle_reap_s": null,
"restart_required": false,
"note": "no idle kill while connected; duration billed only while active"
},
"keep_rate": {
"value": 0.0,
"basis": "duration is billed only while active",
"source": "https://developers.cloudflare.com/workers/platform/limits/"
},
"persistent_storage": {
"included_gib": null,
"price_gib_month": "SQLite-backed storage billed separately",
"durability": "survives hibernation",
"survives_stop": true,
"survives_destroy": false,
"max_retention": "while the object exists"
},
"network_out": {
"allow_outbound": true,
"allow_inbound_listen": true,
"ports": "HTTP and WebSocket through the edge",
"static_ip": false,
"ipv6": true,
"per_session_bytes": null
},
"free_tier_kind": "allowance",
"census_rows": [
"cloudflare-do"
]
}Unknown or withheld values (4)
$.notespartly-held$.per_object_cap.notesprocess$.per_object_cap.statednot-applicable$.reliability_notenone-observed
Cloudflare Project Alexandria Compute
caveatcardcardDwrite-gated
| Free tier | Quoted: 'Project Alexandria, our open source credits program, offers flexibility to suit your varying needs' with 'Upgrade to Cloudflare Pro, Business, or Enterprise plan', 'Increased requests to Cloudflare Workers and Pages', 'Increased R2 storage for builds and artifacts', and 'Enhanced Zero Trust access, including Remote Browser Isolation'. Credits are 'recurring annual' and 'Acceptance into Project Alexandria and determination of benefits is at Cloudflare's sole discretion'. unit none; metered on wall-clock; recurring-credit |
|---|---|
| Price | none stated |
| Per-object cap | not applicable |
| Retention | not applicable |
| Egress | not stated |
| Identity | card a Cloudflare account plus a valid payment method on file before any credit exists: the programme page states 'You will be required to create a Cloudflare account and upload a valid payment method on file'. The authorisation amount is not stated; whether debit or prepaid is accepted is not stated; no phone or ID step is stated |
| Limits |
No amount, no cap and no deadline are published: benefits are set case by case at Cloudflare's sole discretion, and acceptance requires a payment method on file before any credit exists. |
| Binding | write-gated No amount, no cap and no deadline are published: benefits are set case by case at Cloudflare's sole discretion, and acceptance requires a payment method on file before any credit exists. |
| Interface | unknown inferred from the tooling the provider documents; not probed |
| Tooling | not stated |
| Composes with | If the allocation includes Workers Paid, this is the only programme here that can put a Python or TypeScript workload on an edge network with no server, which composes with the Cloudflare containers and sandbox records the corpus already holds. |
| Reliability | no reliability event recorded |
| Notes | The honest gap is the number: Cloudflare publishes no credit amount, and the terms let it change or withdraw the programme 'at any time without notice'. A reader needs the payment method on file, so this is a card-gated lane, and the credits are non-transferable and not redeemable for cash. Somebody with an OSS project should ask for a number in the contact form rather than assume a tier. |
| Evidence rung | documented |
| Checked | 2026-10-22 (live); stale on 2026-11-21 |
Evidence (3)
| date | source | what it proved |
|---|---|---|
| 2026-10-22 | www.cloudflare.com/lp/project-alexandria/ | quoted the benefit list, the recurring annual cadence, the sole-discretion sentence, and 'You will be required to create a Cloudflare account and upload a valid payment method on file' |
| 2026-10-22 | blog.cloudflare.com/expanding-our-support-for-oss-projects-w | the programme launch post, 2024-09-27, describing it as the expanded open source programme; it states no dollar or credit figure, which is why the amount is null here |
| 2026-10-22 | www.cloudflare.com/press-releases/2024/cloudflare-publishes- | reported 'recurring annual credits and an expanded range of free services' and that Cloudflare gave 'more than $15 million in donated products and services in 2024' across its impact programmes, which is the aggregate and not a per-project figure |
More fields (1)
{
"wave2": {
"class": "vendor-oss-credits",
"free_tier_kind": "recurring-credit",
"shape": null
}
}Unknown or withheld values (9)
$.egress.meteredegress-unknown$.egress.termsnot-stated$.interfaceinterface-unknown$.per_object_cap.notesprocess$.per_object_cap.statednot-applicable$.reliability_notenone-observed$.retention.notesprocess$.retention.statednot-applicable$.toolingnot-stated
Cloudflare Workers Compute
caveatemailno cardDrequest-rate
| Free tier | Workers Free: 100,000 requests a day, 10 ms of CPU time per request, 128 MB memory, 50 subrequests per request unit requests; metered on request-count; no request-per-second cap; the free wall is CPU time and the daily request count |
|---|---|
| Price | none stated |
| Per-object cap | not applicable |
| Retention | a Worker holds no disk; state lives in KV, D1, R2 or a Durable Object |
| Egress | response bodies are served from the edge with no per-byte charge stated on the limits page free_allowance: no byte cap stated |
| Identity | email a Cloudflare account; no card for the Free plan |
| Limits |
there is no duration limit for an HTTP-triggered Worker while the client stays connected; cron and queue handlers are capped at 15 minutes |
| Binding | request-rate 10 ms of CPU per request is the wall: the 100,000-request allowance is generous and a JSON parse meets the CPU limit in the first request |
| Interface | rest, cli a JavaScript or WASM module; fetch handler, cron triggers, queue consumers |
| Tooling | Wrangler; the runtime API; ctx.waitUntil for work after the response |
| Composes with | the only free tier here that answers 100,000 HTTP requests a day and can hold a WebSocket |
| Reliability | no reliability event recorded |
| Notes | 10 ms of CPU is the wall, not the 100,000 requests. A Worker can hold a connection open for hours and stream a response, which is why this is the only free runtime here that can serve. It cannot run a shell. |
| Evidence rung | documented |
| Checked | 2026-10-22 (live); stale on 2026-11-21 |
| Parsed numbers |
|
Evidence (3)
| date | source | what it proved |
|---|---|---|
| 2026-10-22 | developers.cloudflare.com/workers/platform/limits/ | Free: 100,000 requests a day, 10 ms CPU, 128 MB memory, 50 subrequests, 6 simultaneous outgoing connections |
| 2026-10-22 | developers.cloudflare.com/workers/platform/limits/ | there is no hard duration limit for HTTP-triggered Workers; cron triggers and queue consumers are capped at 15 minutes |
| 2026-10-22 | developers.cloudflare.com/workers/platform/limits/ | Paid raises CPU time to 5 minutes and subrequests to 1,000 per request |
More fields (11)
{
"shape": {
"vcpu": null,
"ram_gib": null,
"disk_gib": null,
"gpu_class": null,
"gpu_count": null
},
"billing_model": "per-request",
"granularity": {
"min_billed_s": null,
"rounding_s": null
},
"session_cap": {
"wall_clock_min": null,
"idle_reap_s": null,
"restart_required": false,
"note": "no duration limit while the client is connected; 10 ms of CPU per request on Free"
},
"keep_rate": {
"value": 0.0,
"basis": "an isolate is not billed between requests",
"source": "https://developers.cloudflare.com/workers/platform/limits/"
},
"persistent_storage": {
"included_gib": 0,
"price_gib_month": "R2 and D1 are separate products",
"durability": "isolate has no disk",
"survives_stop": false,
"survives_destroy": false,
"max_retention": "none"
},
"network_out": {
"allow_outbound": true,
"allow_inbound_listen": true,
"ports": "HTTP and WebSocket through the edge",
"static_ip": false,
"ipv6": true,
"per_session_bytes": null
},
"free_tier_kind": "allowance",
"m10h_usd": 0.0,
"m24h_usd": 0.0,
"price_arithmetic": "free at 100,000 requests a day; Paid is USD 5 a month with no request cap"
}Unknown or withheld values (3)
$.per_object_cap.notesprocess$.per_object_cap.statednot-applicable$.reliability_notenone-observed
Cloudflare Workers AI Compute
caveatemailno cardDrequest-rate
| Free tier | A perpetual daily allowance of 10,000 Neurons on the Workers Free plan: 'Our free allocation allows anyone to use a total of 10,000 Neurons per day at no charge.' Limits reset daily at 00:00 UTC. Text generation runs at 300 requests a minute on the free plan, ten times Groq's 30 rpm. The model choice changes the yield by a factor of 12: on the same 10,000 Neurons, @cf/meta/llama-3.1-8b-instruct yields 133K output tokens a day at 75,147 Neurons per 1M, while @cf/qwen/qwen3-30b-a3b-fp8 yields 328K at 30,475 per 1M and @cf/meta/llama-3.2-1b-instruct yields 548K at 18,252 per 1M. Eight frontier models are excluded from the free lane because they require a paid billing method: kimi-k2.6, kimi-k2.7-code, glm-5.2, glm-5.3, glm-5.3-flash, deepseek-v4-flash-0731, deepseek-v4.1-flash-1017 and deepseek-v4-pro-0813. unit minutes; metered on wall-clock; recurring-daily-allowance |
|---|---|
| Price | none stated |
| Per-object cap | not applicable |
| Retention | not applicable |
| Egress | not stated |
| Identity | email not published |
| Limits |
the daily Neuron pool binds long before the 300 rpm does, and the model choice sets the size of the pool: at qwen3-30b-a3b-fp8 rates 10,000 Neurons a day is about 328K output tokens, or about 9.8M a month, where the same allowance spent on llama-3.1-8b-instruct non-fp8 is 133K a day. A single request at the 30B model's context limit can spend a whole day. |
| Binding | request-rate the daily Neuron pool binds long before the 300 rpm does, and the model choice sets the size of the pool: at qwen3-30b-a3b-fp8 rates 10,000 Neurons a day is about 328K output tokens, or about 9.8M a month, where the same allowance spent on llama-3.1-8b-instruct non-fp8 is 133K a day. A single request at the 30B model's context limit can spend a whole day. |
| Interface | rest inferred from the tooling the provider documents; not probed |
| Tooling | not stated |
| Composes with | the only free lane here with both a perpetual daily meter and 300 rpm: it pairs with a free Cloudflare Worker as the scheduler, so a nightly batch runs inside the free tier with no machine to keep awake. |
| Reliability | no reliability event recorded |
| Notes | All arithmetic is an estimate and not a vendor figure, but the conversion factor is checkable against the vendor's own two columns: USD 0.011 per 1,000 Neurons is USD 11 per 1M Neurons, and 34,868 Neurons per 1M output tokens for llama-3.1-8b-fp8-fast times USD 11 per 1M Neurons is USD 0.384, exactly the price printed beside it. The same check holds for qwen3-30b-a3b-fp8 (30,475 x USD 11 / 1M = USD 0.335). So Neurons are a linear repricing of GPU seconds and the free allowance has a fixed dollar value of 10,000 x USD 0.011 / 1,000 = USD 0.11 a day, or USD 3.30 a month, whatever model is chosen. The model choice therefore buys tokens, not dollars: 328K output tokens a day on qwen3-30b-a3b-fp8 is about 9.8M a month, and 548K on llama-3.2-1b is about 16.4M a month at visibly lower quality. Verdict is qualifies-with-caveat because no probe was run: the REST endpoint needs a real account id and an API token, and the keyless probe against a placeholder account id returned 404 from the origin, which establishes only that the route requires a credential. |
| Evidence rung | documented |
| Checked | 2026-10-22 (live); stale on 2026-11-21 |
Evidence (10)
| date | source | what it proved |
|---|---|---|
| 2026-10-22 | developers.cloudflare.com/workers-ai/platform/pricing/ | 'Our free allocation allows anyone to use a total of 10,000 Neurons per day at no charge' and '$0.011 per 1,000 Neurons', quoted |
| 2026-10-22 | developers.cloudflare.com/workers-ai/platform/pricing/ | @cf/qwen/qwen3-30b-a3b-fp8 at 4625 neurons per M input and 30475 per M output against $0.051 and $0.335 per M tokens; @cf/meta/llama-3.1-8b-instruct at 25608 and 75147 neurons against $0.282 and $0.827, quoted |
| 2026-10-22 | developers.cloudflare.com/workers-ai/platform/pricing/ | 'Some models require a paid billing method' listing the eight excluded models, quoted |
| 2026-10-22 | developers.cloudflare.com/workers-ai/platform/limits/ | Text Generation 300 requests per minute; paid-plan models 20 rpm on standard Workers AI billing, quoted |
| 2026-10-22 | api.cloudflare.com/client/v4/accounts/test/ai/run/@cf/meta/l | not published |
| 2026-10-22 | developers.cloudflare.com/workers/platform/limits/ | quoted table: CPU time per HTTP request, Workers Free 10 ms, Workers Paid 5 min default 30 seconds; CPU time per Cron Trigger, Free 10 ms |
| 2026-10-22 | developers.cloudflare.com/workers/platform/limits/ | quoted: 'The average Worker uses approximately 2.2 ms per request. Heavier workloads that handle authentication, server-side rendering, or parse large payloads typically use 10-20 ms' |
| 2026-10-22 | developers.cloudflare.com/support/troubleshooting/http-statu | quoted: Error 1102 means the Worker 'has exceeded its CPU time limit or memory limit'; resolution requires the Paid plan to raise the limit |
| 2026-10-22 | developers.cloudflare.com/workers/platform/limits/ | quoted: 'Each isolate has some built-in flexibility to allow for cases where your Worker infrequently runs over the configured limit. If your Worker starts hitting the limit consistently, its execution will be terminated' |
| 2026-10-22 | community.cloudflare.com/t/what-happens-when-the-cpu-time-is | community answer on the burst behaviour: small bursts over 10 ms are allowed, and a worker that goes beyond is shut down [date precision: year precision] [re-read 2026-10-22] |
More fields (1)
{
"wave2": {
"class": "perpetual-free-allowance",
"free_tier_kind": "recurring-daily-allowance",
"shape": {
"vcpu": null,
"ram_gib": null,
"gpu_class": null,
"gpu_count": null
}
}
}Unknown or withheld values (10)
$.egress.meteredegress-unknown$.egress.termsnot-stated$.evidence[4].provedwithheld$.identity_cost.detailprocess$.per_object_cap.notesprocess$.per_object_cap.statednot-applicable$.reliability_notenone-observed$.retention.notesprocess$.retention.statednot-applicable$.toolingnot-stated
Cloudflare Workers AI Crawling
caveatemailno cardRrequest-rate
| Free tier | 10,000 Neurons a day per account on Workers Free unit requests; metered on request-count |
|---|---|
| Price | none stated |
| Per-object cap | not applicable: the unit is a Neuron |
| Retention | Neurons reset daily |
| Egress | not applicable: JSON answers |
| Identity | email a Cloudflare account |
| Limits |
|
| Binding | request-rate |
| Interface | rest a binding on a Worker, or REST; models for rerank, convert and generate |
| Tooling | not stated |
| Composes with | Reranks search and works, converts documents to Markdown, and describes an image when asked |
| Reliability | no reliability event recorded |
| Notes | The reason a broker answer carries a rank at all: bge-reranker-base scores results, and a spent allocation silently falls back to the provider's own order. |
| Evidence rung | reported the daily allowance is inherited; the deployment's consumption is measured |
| Checked | 2026-10-22 (inherited); stale on 2026-11-05 |
Evidence (1)
| date | source | what it proved |
|---|---|---|
| 2026-10-22 | withheld | pool neurons: 30,000 a day, 18.038 spent, reset at 2026-10-23T00:00Z |
Unknown or withheld values (5)
$.evidence[0].urlprivate-url$.limits[0].sourceprivate-url$.limits[1].sourceprivate-url$.reliability_notenone-observed$.toolingnot-stated
Cloudflare Browser Rendering Crawling
caveatemailno cardRrequest-rate
| Free tier | Workers Free: 600 browser-seconds a day, or 10 browser-minutes; 3 concurrent browsers unit requests; metered on request-count |
|---|---|
| Price | none stated |
| Per-object cap | not applicable: the unit is browser time |
| Retention | browser-seconds reset daily |
| Egress | not applicable: Markdown or HTML answers |
| Identity | email a Cloudflare account |
| Limits |
|
| Binding | request-rate |
| Interface | rest REST Quick Action /markdown, /snapshot and /crawl; a synchronous JSON answer per POST |
| Tooling | not stated |
| Composes with | The read ladder's rendered-DOM leg, and one of the four crawl providers; refuses main_content so it answers each page whole |
| Reliability | no reliability event recorded |
| Notes | The two facts must not be merged: 600 browser-seconds a day is the vendor's Workers Free tier; 1,800 a day is this deployment's paid plan and says nothing about what a new account gets. It is also the only browser lane that adds no new third party to a Worker's trust domain. |
| Evidence rung | reported the deployment numbers are measured from status.json |
| Checked | 2026-10-22 (live); stale on 2026-11-05 |
Evidence (1)
| date | source | what it proved |
|---|---|---|
| 2026-10-22 | withheld | pool browser: 1,800 a day and 36,000 a month, 6.8 and 179.6 spent, one account excluded; pool jobs: 20 a day |
Unknown or withheld values (5)
$.evidence[0].urlprivate-url$.limits[1].sourceprivate-url$.limits[2].sourceprivate-url$.reliability_notenone-observed$.toolingnot-stated
Cloudflare URL Scanner Crawling
caveatemailno cardDretention-clamped
| Free tier | free with a Cloudflare account; scans of the exact URL in the last 30 days unit requests; metered on request-count |
|---|---|
| Price | none stated |
| Per-object cap | not applicable: the unit is a scan |
| Retention | 30 days: a scan older than that is not held, and a pinned request before it is a 400 |
| Egress | not applicable: the archived document |
| Identity | email a Cloudflare account |
| Limits |
|
| Binding | retention-clamped |
| Interface | rest REST; read by the broker's archive service, never submitted by it |
| Tooling | not stated |
| Composes with | The archive fallback when the Wayback Machine is slow or holds nothing; a page it answers always points on to the other archives |
| Reliability | no reliability event recorded |
| Notes | A 30-day window is not an archive. It is a recent-copy cache, and the broker's listing says so by never ending on a URL Scanner page. |
| Evidence rung | documented |
| Checked | 2026-10-22 (live); stale on 2026-11-21 |
| Parsed numbers |
|
Evidence (2)
| date | source | what it proved |
|---|---|---|
| 2026-10-22 | withheld | cfscan is the scans of the exact URL in the last 30 days; a page it answers carries skip=cfscan and more=true; provider=cfscan outside the 30 days is a 400 naming its reach |
| 2026-10-22 | web.archive.org/web/*/nodeseek.com/post-918318-1 | 200, 0 captures, more false, misses wayback none, arquivo none, commoncrawl unknown |
Unknown or withheld values (6)
$.evidence[0].urlprivate-url$.limits[0].sourceprivate-url$.limits[1].sourceprivate-url$.limits[2].sourceprivate-url$.reliability_notenone-observed$.toolingnot-stated
Cloudflare Workers KV Databases and KV
caveatemailno cardDrequest-rate
| Free tier | 100,000 reads per day; 1,000 writes per day; 1 GB per account; 1,000 namespaces unit requests; metered on request-count |
|---|---|
| Price | none stated |
| Per-object cap | 25 MiB per value; 512 bytes per key |
| Retention | no expiry on a stored key unless the write sets one; the free tier does not delete |
| Egress | reads are counted, not metered by byte; no egress charge on any plan |
| Identity | email a Cloudflare account |
| Limits |
100,000 reads per day are unlimited on the paid plan; the minimum cacheTtl is 30 seconds |
| Binding | request-rate |
| Interface | rest, cli a REST API and a Worker binding; access through wrangler |
| Tooling | wrangler kv; the Cloudflare API; a Worker binding in code |
| Composes with | a read cache in front of a free database: 100,000 reads a day is 100 times the write budget, which is the ratio that makes it a cache and not a store |
| Reliability | no reliability event recorded |
| Notes | The asymmetry is the finding: reads are plentiful and writes are not, by two orders of magnitude. Any design that treats KV as the store hits 1,000 writes a day and stops. |
| Evidence rung | documented the limits page was read today; no namespace was created. |
| Checked | 2026-10-23 (live); stale on 2026-11-22 |
| Parsed numbers |
|
Evidence (1)
| date | source | what it proved |
|---|---|---|
| 2026-10-22 | developers.cloudflare.com/kv/platform/limits/ | Free column: 100,000 reads/day, 1,000 writes/day to different keys, 1 write/second to the same key, 1,000 namespaces, 1 GB/account, 1 GB/namespace, 512-byte keys, 25 MiB values, 30-second minimum cacheTtl |
Unknown or withheld values (1)
$.reliability_notenone-observed
Cloudflare Universal SSL Domains and DNS
caveatemailno cardRper-object-cap
| Free tier | a free certificate on every zone, covering the apex and one level of subdomain unit unlimited; metered on none |
|---|---|
| Price | none stated |
| Per-object cap | covers example.com and app.example.com, not a.b.example.com; deeper names need Advanced Certificate Manager |
| Retention | the certificate is issued and renewed by Cloudflare while the zone is active |
| Egress | no charge |
| Identity | email a Cloudflare account and a zone on Cloudflare nameservers |
| Limits |
|
| Binding | per-object-cap |
| Interface | rest automatic on a proxied zone; no client API of its own, and the zone API reports the certificate |
| Tooling | nothing to run: the certificate appears on the zone |
| Composes with | the certificate half of the free endpoint, from the same account and zone as the DNS and the tunnel |
| Reliability | no reliability event recorded |
| Notes | The one-level limit is the trap. A per-tenant scheme at tenant.app.example.com needs a paid certificate manager, or a wildcard from Let's Encrypt over DNS-01, which is free. |
| Evidence rung | reported the one-level coverage limit is stated across Cloudflare's TLS documentation and repeated in third-party summaries; the product page was reached only as a stub, so this is reported. |
| Checked | 2026-10-23 (live); stale on 2026-11-06 |
Evidence (1)
| date | source | what it proved |
|---|---|---|
| 2026-10-22 | developers.cloudflare.com/ssl/edge-certificates/universal-ss | Universal SSL is free on every plan; the one-level subdomain coverage limit and the Advanced Certificate Manager upgrade path are the substance |
Unknown or withheld values (1)
$.reliability_notenone-observed
Cloudflare Pages Egress and tunnels
caveatemailno cardDper-object-cap
| Free tier | unlimited static requests; 100,000 Function invocations per day; 25 MiB per asset unit unlimited; metered on request-count |
|---|---|
| Price | none stated |
| Per-object cap | 25 MiB per static asset (26214400 bytes) |
| Retention | not applicable |
| Egress | not metered for static assets; Functions are counted per invocation, not per byte |
| Identity | email a Cloudflare account |
| Limits | |
| Binding | per-object-cap |
| Interface | cli wrangler pages deploy |
| Tooling | wrangler |
| Composes with | serves static bytes with no meter, so it is the free front for an object set that fits the 25 MiB cap; the cap sets the shard size and the volume does not bind. |
| Reliability | a build is a write gate; 500 builds per month on the free plan |
| Notes | This record owns the egress term only. The storage arithmetic belongs to the storage topic and is not restated here. |
| Evidence rung | documented |
| Checked | 2026-10-23 (live); stale on 2026-11-22 |
| Parsed numbers |
|
Evidence (1)
| date | source | what it proved |
|---|---|---|
| 2026-10-22 | developers.cloudflare.com/pages/platform/limits/ | 25 MiB per static asset and 100,000 Function requests per day |
More fields (3)
{
"stale_after_days": 180,
"bytes_transit": "yes",
"transit_note": "static assets leave Cloudflare's edge on every request; the request count is metered, the bytes are not"
}Cloudflare R2 Egress and tunnels
caveatemailno cardD
| Free tier | 10 GB-month storage, 1M Class A and 10M Class B operations per month, egress free unit GB; metered on stored-bytes |
|---|---|
| Price | none stated |
| Per-object cap | not applicable: storage is metered by volume rather than per object |
| Retention | not applicable: bytes persist while the account is in good standing |
| Egress | free, unconditionally, on every plan free_allowance: none for egress: egress to the internet is free on every plan |
| Identity | email a Cloudflare account |
| Limits |
the 10 GB-month is a storage volume and not an object size, so no kind in the six-value vocabulary names it. It stays the binding term: 10 GB is 0.1% of the hot working set |
| Binding | none nothing binds the egress: it is free unconditionally. The 10 GB-month storage volume caps what an origin can hold and no kind names a volume |
| Interface | s3 https://<account>.r2.cloudflarestorage.com |
| Tooling | aws-cli, rclone (s3 backend) |
| Composes with | the origin that makes a free front free: R2 holds the bytes with zero egress and a Cloudflare front serves them, so the read path costs nothing at any volume and the 10 GB is the whole bill. |
| Reliability | zero egress applies to the read path only |
| Evidence rung | documented |
| Checked | 2026-10-23 (live); stale on 2026-11-22 |
Evidence (1)
| date | source | what it proved |
|---|---|---|
| 2026-10-22 | developers.cloudflare.com/r2/pricing/ | 10 GB-month storage, 1M Class A, 10M Class B, egress free; page last updated 2026-10-01 |
More fields (3)
{
"stale_after_days": 180,
"bytes_transit": "yes",
"transit_note": "the object leaves Cloudflare's network on every read, and egress is free on every plan"
}Cloudflare Tunnel (named) Egress and tunnels
caveatemailno cardDwrite-gated
| Free tier | unlimited tunnels and unmetered transit; 1,000 tunnels per account unit unlimited; metered on identity-count |
|---|---|
| Price | none stated |
| Per-object cap | 100 MB proxied request body on Free and Pro (413), 200 MB Business |
| Retention | not applicable: the tunnel and its hostname persist |
| Egress | unmetered; no bandwidth figure appears among the account limits |
| Identity | email a Cloudflare account plus a domain delegated to Cloudflare nameservers |
| Limits |
counts of things, not rates, so no vocabulary kind names them: 1,000 cloudflared tunnels per account and 25 active replicas per tunnel; 50,000 routes per account, shared with Cloudflare Mesh |
| Binding | write-gated the domain is the only paid element and the gate; the 100 MB body cap binds writes, not reads. |
| Interface | cli, rest cloudflared tunnel run; the hostname is a record on a zone the client owns |
| Tooling | cloudflared |
| Composes with | the serving chain for a real hostname: a domain on Cloudflare nameservers -> a named tunnel -> an origin that cannot open a port. Composes with Oracle Always Free as the origin and with R2 behind it, and the scarce link is the domain. |
| Reliability | community reports describe about 20 Mbit/s on tunnel transfers; not reproduced here |
| Notes | 'Unmetered' is a documented absence rather than a quota, so it is not multiplied here. The census cited the account-limits page for the 100 MB figure; that page does not contain it. |
| Evidence rung | documented |
| Checked | 2026-10-23 (live); stale on 2026-11-22 |
| Parsed numbers |
|
Evidence (3)
| date | source | what it proved |
|---|---|---|
| 2026-10-22 | developers.cloudflare.com/cloudflare-one/account-limits/ | 1,000 tunnels per account, 25 replicas per tunnel, 50,000 routes, and no bandwidth figure anywhere on the page |
| 2026-10-22 | developers.cloudflare.com/fundamentals/reference/connection- | Proxy Read Timeout 125 s and Proxy Write Timeout 30 s, both returning 524 |
| 2026-10-22 | community.cloudflare.com/t/cloudflare-tunnel-limits-and-band | Cloudflare staff, 2022-06-21: 'There are no bandwidth limits' |
More fields (3)
{
"stale_after_days": 180,
"bytes_transit": "yes",
"transit_note": "cloudflared dials out and Cloudflare relays the request and response bytes"
}Cloudflare WARP (consumer) Egress and tunnels
caveatemailno cardD
| Free tier | a free client with no published data cap unit unlimited; metered on downloaded-bytes |
|---|---|
| Price | none stated |
| Per-object cap | not applicable |
| Retention | not applicable |
| Egress | no published cap and no published rate |
| Identity | email a Cloudflare account |
| Binding | none |
| Interface | cli warp-cli connect |
| Tooling | warp-cli |
| Composes with | gives a device a new exit and does not give a server one, so it composes with a client and not with a serving origin. |
| Reliability | a community report describes about 1.8 MB/s on WARP; not reproduced here |
| Notes | Nothing here can be planned against: no cap and no rate. |
| Evidence rung | documented |
| Checked | 2026-10-23 (live); stale on 2026-11-22 |
Evidence (1)
| date | source | what it proved |
|---|---|---|
| 2026-10-22 | developers.cloudflare.com/warp-client/ | the consumer client is free with no published cap |
More fields (3)
{
"stale_after_days": 180,
"bytes_transit": "yes",
"transit_note": "the device's traffic exits through Cloudflare's network rather than its own"
}Cloudflare Email Routing Email
caveatemailno cardD
| Free tier | unlimited inbound email on Workers Free and Paid; 200 destination addresses, 200 rules per domain, 30 domains per zone unit unlimited; metered on request-count |
|---|---|
| Price | none stated |
| Per-object cap | 25 MiB inbound message; larger messages are rejected (26214400 bytes) |
| Retention | not applicable: messages are forwarded, not stored |
| Egress | not applicable: inbound only on the free plan |
| Identity | email a Cloudflare account with the domain delegated to Cloudflare nameservers |
| Limits |
counts of things, not rates, so no vocabulary kind names them: 200 destination addresses per account, shared across every domain; 200 routing rules per domain and 30 domains per zone |
| Binding | none nothing in the vocabulary binds the volume: inbound is unlimited and the 25 MiB message cap bounds a single message rather than a day. What actually caps the shape is the 200 destination addresses per account, which is a count and not one of the six kinds |
| Interface | rest MX records on the zone, with rules mapping a pattern to a destination or a Worker |
| Tooling | the Cloudflare dashboard, wrangler for Worker handlers |
| Composes with | the inbound half of the free mail chain and the only unmetered thing in this topic: unlimited inbound on a domain the client already holds, forwarded to a mailbox. Its scarce link is the 200 verified destinations at the account level. |
| Reliability | a routing rule maps one pattern to one destination; a fan-out to several destinations needs a Worker |
| Notes | Inbound is genuinely unmetered and is the one unlimited thing in this topic. The 200-destination cap is the quiet one. |
| Evidence rung | documented no probe: the inbound path could not be exercised from this host. route1, route2 and route3.mx.cloudflare.net answered 550 on the sender's IPv6 reverse lookup, and TCP 25 was reset over IPv4, so no SMTP-level evidence was obtained either way |
| Checked | 2026-10-23 (live); stale on 2026-11-22 |
| Parsed numbers |
|
Evidence (2)
| date | source | what it proved |
|---|---|---|
| 2026-10-22 | developers.cloudflare.com/email-service/platform/pricing/ | 'Inbound emails (Email Routing) | Unlimited | Unlimited' across Workers Free and Paid, while outbound is 'Not available' on Workers Free |
| 2026-10-22 | developers.cloudflare.com/email-service/platform/limits/ | 200 routing rules per domain, 200 destination addresses per account, and a 25 MiB inbound message limit |
More fields (1)
{
"stale_after_days": 90
}Cloudflare Workers AI Inference
caveatemailno cardDrequest-rate
| Free tier | 10,000 Neurons per day at no charge on both the Free and the Paid Workers plan. The page states the daily figure; the monthly figure of 300,000 and the token equivalents below are derived arithmetic on it, not vendor statements unit tokens; metered on request-count; billing is in Neurons. The page prints a per-token price beside each model as an equivalent, so a single USD per million tokens figure for Workers AI does not exist. The free-plan input rate runs from 1,542 to 60,000 neurons per million tokens across 31 models, a factor of 38.9, so the token count behind one allowance is model-dependent: 194.6 million a month at the cheapest and 5.0 million at the dearest Derived figures and their bases: 300,000 = 10,000 x 30 days; 122.1 million input tokens = 300,000 / 2,457 x 1,000,000; 4.07 million a day = that divided by 30 |
|---|---|
| Price | none stated |
| Per-object cap | not applicable: an inference endpoint stores nothing for the caller |
| Retention | not applicable |
| Egress | the response is the payload; no separate egress term is published |
| Identity | email a Cloudflare account; the Workers Free plan is enough for the daily allocation |
| Limits |
|
| Binding | request-rate |
| Interface | rest |
| Tooling | any OpenAI-compatible client; curl against POST {base}/chat/completions |
| Composes with | pairs with a Cloudflare Worker already deployed; the 300,000-neuron monthly allowance is the scarce link, and it covers 42 per cent of the target workload |
| Reliability | eight named models require a paid billing method and fail on a Free plan |
| Notes | 300,000 Neurons a month, not 375 million: 10,000 a day times 30. At 2,457 neurons per million input tokens that is 122.1 million input tokens a month and 4.07 million a day. The client's target of 15 million input and 37.5 million output tokens a month on llama-3.2-1b-instruct needs 15 x 2,457 + 37.5 x 18,252 = 721,305 neurons, which is 2.4 times the whole free allowance; the output half alone is 2.3 times it. The allocation is real, it is model-dependent, and it cannot carry the target workload, which is why the row is a fallback. Every figure beyond the page's own 10,000 a day is arithmetic on it and is labelled as such in free_tier.stated. |
| Evidence rung | documented the allocation, the reset and the paid-only model list are quoted from the vendor pages read today. No call was made, because that needs an account. |
| Checked | 2026-10-23 (live); stale on 2026-11-22 |
| Parsed numbers |
|
Evidence (3)
| date | source | what it proved |
|---|---|---|
| 2026-10-22 | developers.cloudflare.com/workers-ai/platform/pricing/ | 10,000 Neurons per day free, USD 0.011 per 1,000 Neurons above it on Workers Paid, all limits reset daily at 00:00 UTC, and eight named models require a paid billing method including @cf/moonshotai/kimi-k2.6 and @cf/zai-org/glm-5.3-flash |
| 2026-10-22 | developers.cloudflare.com/workers-ai/platform/pricing/ | per-model neuron rates over 39 text-generation models, of which 31 are reachable on the free plan; input runs from 1,542 neurons per million tokens on @cf/ibm-granite/granite-4.0-h-micro to 60,000 on @cf/qwen/qwq-32b, and the eight paid-only ids run to 127,273 on @cf/zai-org/glm-5.3 |
| 2026-10-22 | developers.cloudflare.com/workers-ai/platform/limits/ | Text Generation is 300 requests per minute, 'unless the model requires the Workers Paid plan'; Image Classification, Object Detection and Text Embeddings are 3000; Summarization 1500; Text Classification 2000; and the eight paid models are 20 requests per minute on standard billing or 50 with prepaid AI Gateway credits |
Unknown or withheld values (1)
$.retention.statednot-applicable
Corrections
- 2026-10-22 Cloudflare's free allowance was overstated 1,250 times, and the conclusion built on it was void
Cloudflare for Startups — nonprofit / civil-society track Storage
caveatinstitutionno cardRwrite-gated
| Free tier | Up to $350,000 in credits for a year on the current program page (tiered: Tier 3 $10k upward). The nonprofit track announced 2025-09-22 offers 'up to $250,000 in Cloudflare credits ... which can be used for a variety of our developer and core products, including databases & storage, compute services, AI, media, and performance and security'. unit mixed; metered on stored-bytes |
|---|---|
| Price | none stated |
| Per-object cap | not stated |
| Retention | Award is discretionary and cohort-based (501(c)(3) or equivalent required); the announcement's application window has closed, so treat as 'reapply at next intake'. Nothing about the credits is permanent — after year one the workload reverts to paid or to the small free tier. |
| Egress | N/A by construction — everything served through Cloudflare's edge, which is the egress-free property the client wants. |
| Identity | institution derived from the record's prose, not from an identity field, and no signup was executed: TiB class) — not binding at 10 TiB. request-rate: Workers/API rate limits apply to control-plane calls; object GETs are not rate-limited at these volumes. retention: credits are for |
| Limits |
per-object-cap: the storage product's own object cap applies (single-part 315 MB / multipart ~5 TiB class) — not binding at 10 TiB. request-rate: Workers/API rate limits apply to control-plane calls; object GETs are not rate-limited at these volumes. retention: credits are for 'a year'; the free-tier storage allowance that exists without credits is small (10 GB-class) and is where data lands if the application is declined. |
| Binding | write-gated the write is a queue with a person or a rule in it, so the upload rate is set by somebody else |
| Interface | s3-compatible, rest, rclone, cli rest |
| Tooling | Cloudflare API + Wrangler; Workers bindings; rclone backend 's3' works against Cloudflare's S3-compatible object storage endpoints, and the S3 API is the documented path for the storage product. |
| Composes with | Credit grant per organisation, applied for in cohorts ('The application period ... runs until December 1', then Cloudflare selects a cohort) — so it is a gated annual intake, not an open self-serve tier. $250k of usage-based credit at storage-class rates is a very large number of GB-months; the constraint is the one-year credit window and the cohort gate. |
| Reliability | Award is discretionary and cohort-based (501(c)(3) or equivalent required); the announcement's application window has closed, so treat as 'reapply at next intake'. Nothing about the credits is permanent — after year one the workload reverts to paid or to the small free tier. |
| Notes | Up to $350,000 in credits for a year on the current program page (tiered: Tier 3 $10k upward). The nonprofit track announced 2025-09-22 offers 'up to $250,000 in Cloudflare credits ... which can be used for a variety of our developer and core products, including databases & storage, compute services, AI, media, and performance and security'. |
| Evidence rung | reported One page read moves it to documented. |
| Checked | 2026-10-21 (inherited); stale on 2026-11-04 |
Evidence (3)
| date | source | what it proved |
|---|---|---|
| 2026-10-21 | www.cloudflare.com/forstartups/ | 'up to $350k in credits'; tier cards starting at Tier 3 $10k |
| 2026-10-21 | blog.cloudflare.com/expanding-startups-for-nonprofits/ | 'up to $250,000 in Cloudflare credits ... including databases & storage'; 'registered 501(c)(3) non-profit'; window closed 2025-12-01 |
| 2026-10-21 | withheld | probe: GET www.cloudflare.com/forstartups/ -> 200; GET blog.cloudflare.com/expanding-startups-for-nonprofits/ -> 200 |
Unknown or withheld values (5)
$.evidence[2].urlprivate-url$.free_tier.notesprocess$.per_object_cap.notesnot-extracted$.per_object_cap.statednot-extracted$.retention.notesnot-extracted
Project Alexandria - Cloudflare's recurring OSS credit programme Storage
caveatcardcardR
| Free tier | Recurring annual credits, amount set per project. Explicitly includes 'Increased R2 storage for builds and artifacts' and 'Increased requests to Cloudflare Workers and Pages'. unit mixed; metered on stored-bytes |
|---|---|
| Price | none stated |
| Per-object cap | not stated |
| Retention | not stated |
| Egress | R2 egress is free to the internet; Workers/Pages requests are included in the credit. |
| Identity | card derived from the record's prose, not from an identity field, and no signup was executed: nse' and 'operate solely on a non-profit basis'. Requires a payment method on file. Acceptance and amount are at Cloudflare's sole discretion; programme can be discontinued at any time. paas |
| Binding | none no constraint in the record binds at this scale; the record carries no limit of a kind the vocabulary names |
| Interface | s3-compatible, git, rclone, cli s3 |
| Tooling | R2 is S3-compatible (rclone 's3' with Cloudflare provider, aws CLI, wrangler). Pages via git/wrangler deploy. |
| Composes with | Annual renewal is the whole point: unlike the one-shot startup credits, this is stated as 'recurring annual credits'. A maintainer with several OSS projects can plausibly hold several grants; credits are per project, non-transferable. |
| Reliability | Credits can be revised or withdrawn; no SLA on the grant. The R2 component is the part the client already rejected on cost grounds, so the practical value is Pages/Workers request headroom, not bytes. |
| Notes | Recurring annual credits, amount set per project. Explicitly includes 'Increased R2 storage for builds and artifacts' and 'Increased requests to Cloudflare Workers and Pages'. |
| Evidence rung | reported One page read moves it to documented. |
| Checked | 2026-10-21 (inherited); stale on 2026-11-04 |
Evidence (2)
| date | source | what it proved |
|---|---|---|
| 2026-10-21 | www.cloudflare.com/lp/project-alexandria/ | 'Apply to receive recurring annual credits with Project Alexandria'; 'Increased R2 storage for builds and artifacts' |
| 2026-10-21 | blog.cloudflare.com/expanding-our-support-for-oss-projects-w | 'recurring annual credits to even more open source projects'; criteria: non-profit basis + recognised OSS licence |
Unknown or withheld values (5)
$.free_tier.notesprocess$.per_object_cap.notesnot-extracted$.per_object_cap.statednot-extracted$.retention.notesnot-extracted$.retention.statednot-extracted
Cloudflare Containers Compute
paidcardcardDvolume-quota
| Free tier | no free plan: the pricing table's Free row reads 'N/A' for memory, CPU and disk; Containers are included only with the USD 5 a month Workers Paid plan unit none; metered on none |
|---|---|
| Price | none stated |
| Per-object cap | largest instance type standard-4: 4 vCPU, 12 GiB memory, 20 GB disk |
| Retention | billing stops when the container instance goes to sleep; the disk is per instance, not a persistent volume |
| Egress | 1 TB included a month in North America and Europe at USD 0.025 per GB after; 500 GB included in Oceania, Korea and Taiwan at USD 0.05, and 500 GB everywhere else at USD 0.04 free_allowance: 1 TB (NA/EU) price_per_tb: USD 25 |
| Identity | card the Workers Paid subscription at USD 5 a month is a paid plan; no free-tier route to Containers is published |
| Limits |
memory and disk bill on provisioned resources while CPU bills on active use only |
| Binding | volume-quota 25 GiB-hours of memory a month at the 4 GiB standard-1 shape is 6.25 hours of runtime, so a container that stays up is gone in a day. |
| Interface | rest, cli Workers binding plus a REST control plane; each container has its own Durable Object |
| Tooling | Wrangler and the Workers runtime; the container is called from a Worker |
| Composes with | 1 TB of included egress in NA and EU is the largest free traffic allowance in this class |
| Reliability | charges start when a request reaches the container or it is started manually and stop when it sleeps; a cold container is billed from its start, not from its first byte |
| Notes | Arithmetic from the published rates: 25 GiB-hours a month at the 4 GiB standard-1 shape is 6.25 hours of a single container; at the 256 MiB lite shape it is 100 hours. The free Workers plan does not include Containers at all, which answers the corpus open question. |
| Evidence rung | documented the Free row, the three Workers Paid allotments, the instance table and the egress table were all read on the pricing page today |
| Checked | 2026-10-25 (live); stale on 2026-11-24 |
| Parsed numbers |
|
Evidence (7)
| date | source | what it proved |
|---|---|---|
| 2026-10-22 | developers.cloudflare.com/containers/platform/pricing/ | included on Workers Paid: 25 GiB-hours memory, 375 vCPU-minutes, 200 GB-hours disk a month |
| 2026-10-22 | developers.cloudflare.com/containers/platform/pricing/ | instance types run from lite (1/16 vCPU, 256 MiB, 2 GB) to standard-4 (4 vCPU, 12 GiB, 20 GB) |
| 2026-10-22 | developers.cloudflare.com/containers/platform/pricing/ | egress USD 0.025/GB in NA and EU with a 1 TB monthly allotment |
| 2026-10-24 | developers.cloudflare.com/containers/platform/pricing/ | quoted: 'Free | N/A | N/A |' in the vCPU/Memory/Disk table, against 'Workers Paid | 25 GiB-hours/month included ... 375 vCPU-minutes/month ... 200 GB-hours/month' |
| 2026-10-24 | developers.cloudflare.com/containers/platform/pricing/ | quoted: 'charges start when a request is sent to the container or when it is manually started. Charges stop after the container instance goes to sleep, which can happen automatically after a timeout.' |
| 2026-10-24 | developers.cloudflare.com/containers/platform/pricing/ | quoted instance table: 'standard-4 | 4 | 12 GiB | 20 GB' and egress 'North America & Europe | $0.025 | 1 TB' |
| 2026-10-24 | developers.cloudflare.com/containers/platform/pricing/ | the rate table's Free row reads 'N/A' for Memory, CPU and Disk, and the included usage is described as 'part of the $5 USD per month Workers Paid plan' |
More fields (12)
{
"shape": {
"vcpu": 1,
"ram_gib": 4,
"disk_gib": 8,
"gpu_class": null,
"gpu_count": null
},
"billing_model": "per-10ms",
"granularity": {
"min_billed_s": 0,
"rounding_s": 0.01
},
"session_cap": {
"wall_clock_min": null,
"idle_reap_s": null,
"restart_required": false,
"note": "sleeps after a configurable timeout; billing stops at sleep"
},
"keep_rate": {
"value": 0.0,
"basis": "charges stop after the instance goes to sleep",
"source": "https://developers.cloudflare.com/containers/platform/pricing/"
},
"persistent_storage": {
"included_gib": 20,
"price_gib_month": "USD 0.00000007 per GB-second beyond 200 GB-hours",
"durability": "the runtime disk is per instance",
"survives_stop": null,
"survives_destroy": false,
"max_retention": "unpublished"
},
"network_out": {
"allow_outbound": true,
"allow_inbound_listen": true,
"ports": "the container's port through a Worker binding; no public inbound port of its own",
"static_ip": false,
"ipv6": false,
"per_session_bytes": null
},
"free_tier_kind": "none",
"m10h_usd": 0.0,
"m24h_usd": 0.0,
"price_arithmetic": "USD 5 a month for the plan; the included 25 GiB-hours is 6.25 hours at 4 GiB provisioned, then USD 0.0000025 per GiB-second",
"term": "monthly"
}Cloudflare Containers (free tier question) Compute
paidcardcardDwrite-gated
| Free tier | Cloudflare's machine product is paid; the free Durable Object row is the substitute unit none; metered on wall-clock; recorded separately because the census listed Containers as a free row |
|---|---|
| Price | none stated |
| Per-object cap | not applicable |
| Retention | not applicable: no free plan |
| Egress | priced per GB with an included allotment on Workers Paid |
| Identity | card Workers Paid is a subscription |
| Limits |
the Free column of the Containers rate table reads N/A |
| Binding | write-gated Containers require the Workers Paid plan, so the gate is at purchase and not at a quota |
| Interface | ssh a Workers binding |
| Tooling | Wrangler |
| Composes with | none without Workers Paid |
| Reliability | no reliability event recorded |
| Notes | Kept as its own record so the census row and the pricing fact are joined rather than argued about. |
| Evidence rung | documented |
| Checked | 2026-10-22 (live); stale on 2026-11-21 |
Evidence (1)
| date | source | what it proved |
|---|---|---|
| 2026-10-22 | developers.cloudflare.com/containers/platform/pricing/ | the Free column of the memory, CPU and disk row reads N/A; usage is included with Workers Paid |
More fields (8)
{
"shape": null,
"billing_model": "wall-clock",
"session_cap": null,
"keep_rate": null,
"persistent_storage": null,
"network_out": null,
"free_tier_kind": "none",
"census_rows": [
"cloudflare-containers"
]
}Unknown or withheld values (3)
$.per_object_cap.notesprocess$.per_object_cap.statednot-applicable$.reliability_notenone-observed
Cloudflare Sandbox SDK / Containers Compute
paidemail?card?Drequest-rate
| Free tier | no free tier: the Free plan row reads N/A for memory and CPU. The included allowance is 25 GiB-hours, 375 vCPU-minutes and 200 GB-hours a month inside the $5 Workers Paid plan unit none; metered on none |
|---|---|
| Price | none stated |
| Per-object cap | not stated |
| Retention | not stated |
| Egress | not stated |
| Identity | email (placeholder) not published |
| Limits |
not stated |
| Binding | request-rate |
| Interface | unknown |
| Tooling | not stated |
| Composes with | not stated |
| Reliability | no reliability event recorded |
| Evidence rung | documented the Containers pricing page was read on 2026-10-22. Its Free row is N/A and the included allowance requires the $5 Workers Paid plan, so the record's free-tier claim is wrong and the verdict moves to paid-only |
| Checked | 2026-10-23 (live); stale on 2026-11-22 |
| Parsed numbers |
|
Evidence (2)
| date | source | what it proved |
|---|---|---|
| 2026-10-02 | developers.cloudflare.com/containers/platform/pricing/ | not published |
| 2026-10-22 | developers.cloudflare.com/containers/platform/pricing/ | 'Containers are billed for every 10ms that they are actively running ... with included monthly usage as part of the $5 USD per month Workers Paid plan' and the Free row reads 'N/A / N/A', with '25 GiB-hours/month included', '375 vCPU-minutes/month' and '200 GB-hours/month' on Workers Paid, quoted |
More fields (16)
{
"talaria_m10h_usd": 59.0,
"talaria_m24h_usd": 134.6,
"nemo_m10h_usd": 43.59,
"keep_rate": 1.0,
"keep_rate_basis": null,
"billing_model": "unclassified",
"shape": null,
"session_cap": {
"wall_clock_min": null,
"idle_reap_s": null,
"restart_required": false,
"note": "billing is by 10ms of active running; a container that is not handling a request costs nothing, which is the sleep behaviour"
},
"persistent_storage": null,
"network_out": null,
"price_note": null,
"free_tier_kind": "none",
"granularity": {
"min_billed_s": 0,
"rounding_s": null
},
"burst_x": 1.001,
"ps": {
"gib": null,
"price": "$0.00000007 a GB-second past 200 GB-hours a month",
"durability": "instance disk",
"on_stop": true,
"on_destroy": false,
"retention": "while the instance exists"
},
"net": {
"out": true,
"in": true,
"ports": "Workers and HTTP",
"static_ip": false,
"ipv6": null,
"allowance": "1 TB a month in North America and Europe, 500 GB elsewhere"
}
}Unknown or withheld values (17)
$.chainingnot-stated$.egress.meteredegress-unknown$.egress.termsnot-stated$.evidence[0].provedprocess$.extras.keep_rate_basisprocess$.extras.price_noteprocess$.identity_cost.detaildefaulted$.identity_cost.kindidentity-defaulted$.interfaceinterface-unknown$.interface_detailwithheld$.limits_notenot-stated$.per_object_cap.notesprocess$.per_object_cap.statednot-stated$.reliability_notenone-observed$.retention.notesnot-extracted$.retention.statednot-stated$.toolingnot-stated
Cloudflare Workers for Platforms Compute
paidemail?card?Drequest-rate
| Free tier | not stated unit none; metered on wall-clock |
|---|---|
| Price | none stated |
| Per-object cap | not stated |
| Retention | not stated |
| Egress | not stated |
| Identity | email (placeholder) not published |
| Limits |
not stated |
| Binding | request-rate |
| Interface | unknown |
| Tooling | not stated |
| Composes with | not stated |
| Reliability | no reliability event recorded |
| Evidence rung | documented the pricing page was read on 2026-10-22 and states a $25 monthly plan with included request, CPU-millisecond and script allowances. There is no free plan, which confirms paid-only and gives the numbers |
| Checked | 2026-10-23 (live); stale on 2026-11-22 |
Evidence (2)
| date | source | what it proved |
|---|---|---|
| 2026-10-02 | developers.cloudflare.com/cloudflare-for-platforms/workers-f | not published |
| 2026-10-22 | developers.cloudflare.com/cloudflare-for-platforms/workers-f | 'The Workers for Platforms Paid plan is $25 monthly' with '20,000,000 included requests', '60,000,000 included CPU ms' and '1,000 included scripts', quoted |
More fields (14)
{
"talaria_m10h_usd": 48.2,
"talaria_m24h_usd": 108.68,
"nemo_m10h_usd": null,
"keep_rate": 1.0,
"keep_rate_basis": null,
"billing_model": "unclassified",
"shape": null,
"session_cap": {
"wall_clock_min": null,
"idle_reap_s": null,
"restart_required": false,
"note": "an isolate runs per request; there is no machine to keep alive"
},
"persistent_storage": null,
"network_out": null,
"price_note": null,
"free_tier_kind": "none",
"granularity": {
"min_billed_s": 0,
"rounding_s": null
},
"net": null
}Unknown or withheld values (19)
$.chainingnot-stated$.egress.meteredegress-unknown$.egress.termsnot-stated$.evidence[0].provedprocess$.extras.keep_rate_basisprocess$.extras.price_noteprocess$.free_tier.noteswithheld$.free_tier.statednot-stated$.identity_cost.detaildefaulted$.identity_cost.kindidentity-defaulted$.interfaceinterface-unknown$.interface_detailwithheld$.limits_notenot-stated$.per_object_cap.notesprocess$.per_object_cap.statednot-stated$.reliability_notenone-observed$.retention.notesnot-extracted$.retention.statednot-stated$.toolingnot-stated
Cloudflare Registrar Domains and DNS
paidcardcardRwrite-gated
| Free tier | not free. Registration at cost with no markup, and the same price for registration, renewal and transfer unit none; metered on none |
|---|---|
| Price | USD 10.46 per .com per year, registration and renewal alike |
| Per-object cap | not applicable: the unit is a domain name |
| Retention | a registration runs for its term and renews at the same price |
| Egress | not applicable to a registrar |
| Identity | card a payment method; no markup is charged but the registry fee is |
| Limits |
|
| Binding | write-gated |
| Interface | rest, cli the Cloudflare dashboard and API; the domain must use Cloudflare nameservers |
| Tooling | the Cloudflare API, Terraform, the dashboard |
| Composes with | the anchor of the cheapest complete public endpoint: registrar plus free DNS plus free Universal SSL plus a free tunnel |
| Reliability | no reliability event recorded |
| Notes | The .com row is the finding: USD 10.46 registration and USD 10.46 renewal. Every promo registrar is cheaper in year one and more expensive in year two, and the second year is the one you pay every year after. |
| Evidence rung | reported Cloudflare's own page proves the at-cost model and the equal registration and renewal price. The per-TLD figures come from a third-party mirror of the at-cost table, not from Cloudflare, because Cloudflare publishes prices only in the dashboard. |
| Checked | 2026-10-23 (live); stale on 2026-11-06 |
| Parsed numbers |
|
Evidence (2)
| date | source | what it proved |
|---|---|---|
| 2026-10-22 | www.cloudflare.com/products/registrar/ | 'Registration, transfer, and renewal prices are always at or below what registries and ICANN charge us'; 'does not mark up domain prices at all' |
| 2026-10-22 | cfdomainpricing.com/ | a table headed 'Updated 2026-10-21' giving registration and renewal per TLD: .com USD 10.46 and USD 10.46, .org 8.50 and 11.20, .net 11.86 and 11.86, .xyz 12.30 and 11.20, .dev 8.20 and 12.20, .online 4.99 and 27.70, .io 32.00 and 50.00, .cc 8.00 and 8.00 |
Unknown or withheld values (1)
$.reliability_notenone-observed
Cloudflare Spectrum Egress and tunnels
paidinstitutionno cardDwrite-gated
| Free tier | Custom TCP/UDP applications require an Enterprise plan with Spectrum as a paid add-on. unit none; metered on none |
|---|---|
| Price | unpublished (Enterprise contract) |
| Per-object cap | not applicable |
| Retention | not applicable |
| Egress | No byte allowance is published. The plan table gives 'TCP' and 'UDP' as 'Paid add-on' on Enterprise and 'No' on Free, Pro and Business; Enterprise Spectrum is metered per GB at an unpublished rate.; ingress: tcp+udp free_allowance: none published |
| Identity | institution An Enterprise contract with Cloudflare sales, plus a domain on Cloudflare. The Pro and Business plans carry Spectrum only for 'Minecraft (one app allowed)' and 'SSH (one app allowed)'. |
| Limits |
|
| Binding | write-gated No byte count fails at 1 TiB/month; the Enterprise contract is the gate. The only sub-Enterprise route is a Pro or Business plan, where Spectrum is limited to a single Minecraft app (UDP for Bedrock) and a single SSH app. |
| Interface | rest, cli configured through the Cloudflare dashboard or the API; Spectrum applications are created per protocol and port |
| Tooling | Cloudflare dashboard or API; no client-side daemon |
| Composes with | composes with any free VM as the origin: the VM keeps its own address private and the anycast address is the published one, which is what a WireGuard or game endpoint needs. |
| Reliability | none recorded |
| Notes | The benchmark. Cloudflare Magic Transit is the adjacent product and is not a substitute: it takes a /24 and BGP or GRE from the customer, where Spectrum takes an origin IP and a port. Two things stay open: the Enterprise per-GB rate, and whether the Pro-tier Minecraft slot is usable for a Bedrock (UDP) server rather than only Java (TCP) - the table names the game, not the protocol. |
| Evidence rung | documented The support matrix and the Enterprise requirement are on the pages read today. The per-GB rate and the Pro add-on price are not published, so the cost side stays unverified. |
| Checked | 2026-10-23 (live); stale on 2026-11-22 |
Evidence (2)
| date | source | what it proved |
|---|---|---|
| 2026-10-23 | developers.cloudflare.com/spectrum/ | Spectrum provides security and acceleration for any TCP or UDP based application, and custom TCP/UDP applications require an Enterprise plan with Spectrum as a paid add-on |
| 2026-10-23 | developers.cloudflare.com/spectrum/protocols-per-plan/ | Availability: No on Free, Paid add-on on Enterprise; TCP and UDP are No on Pro and Business; Minecraft (one app allowed) and SSH (one app allowed) are Yes on Pro and Business |
More fields (7)
{
"wg_path": "inside-udp",
"wg_detail": "Spectrum forwards arbitrary UDP to an origin port, so a WireGuard listener on the origin is reachable through the anycast address; no .conf is issued.",
"ingress": "tcp+udp",
"volume_tib_month": null,
"volume_stated": "No byte allowance is published. The plan table gives 'TCP' and 'UDP' as 'Paid add-on' on Enterprise and 'No' on Free, Pro and Business; Enterprise Spectrum is metered per GB at an unpublished rate.",
"bytes_transit": "yes",
"transit_note": "Cloudflare carries the bytes between its edge and the origin"
}Unknown or withheld values (2)
$.per_object_cap.statednot-applicable$.retention.statednot-applicable
Cloudflare Email Sending Email
paidcardcardDwrite-gated
| Free tier | not available on Workers Free; 3,000 emails/month included on Workers Paid at USD 5/month, then USD 0.35 per 1,000 unit requests; metered on request-count |
|---|---|
| Price | none stated |
| Per-object cap | 5 MiB total message with attachments, 25 MiB to verified destinations only |
| Retention | not applicable |
| Egress | not applicable: an outbound sender |
| Identity | card the Workers Paid plan at USD 5/month |
| Limits |
counts of things, not rates, so no vocabulary kind names them: 50 recipients per email combined across to, cc and bcc |
| Binding | write-gated |
| Interface | rest the Workers send_email binding and the Email Sending API |
| Tooling | wrangler, the Cloudflare API |
| Composes with | unlimited free sends to the account's own verified destinations on any plan, which is a notification channel and not a sender. Arbitrary recipients need the paid Workers plan. |
| Reliability | sends to verified destination addresses are free and do not count against the quota, on any plan |
| Notes | The free escape hatch is real and narrow: unlimited free sends, but only to the account's own 200 verified destination addresses. |
| Evidence rung | documented |
| Checked | 2026-10-23 (live); stale on 2026-11-22 |
Evidence (1)
| date | source | what it proved |
|---|---|---|
| 2026-10-22 | developers.cloudflare.com/email-service/platform/pricing/ | 'Outbound emails (Email Sending) | Not available | 3,000 included per month, then $0.35 per 1,000 emails', and that sends to verified destinations are free on every plan |
More fields (1)
{
"stale_after_days": 90
}cloudflare stream — video as storage Storage
paidemail?card?Rdisagrees
Sibling records disagree:
- verdict:
storage/cloudflare-streamsays fails-egress, storage/cloudflare-stream-video-as-storage says paid-only
| Free tier | No free storage at all. Storage is prepaid: 'purchased in increments of $5 per month for each 1,000 minutes of video storage capacity.' Billing is on minutes of DURATION, not bytes — 'Storag unit none; metered on none |
|---|---|
| Price | none stated |
| Per-object cap | not recorded |
| Retention | not recorded |
| Egress | not recorded |
| Identity | email (placeholder) not published |
| Binding | none no constraint of a named kind was recorded; the verdict rests on the quota sentence rather than on a named limit |
| Interface | unknown |
| Tooling | not recorded |
| Composes with | not recorded |
| Reliability | No free storage at all. Storage is prepaid: 'purchased in increments of $5 per month for each 1,000 minutes of video storage capacity.' Billing is on minutes of DURATION, not bytes — 'Storag |
| Notes | No free storage at all. Storage is prepaid: 'purchased in increments of $5 per month for each 1,000 minutes of video storage capacity.' Billing is on minutes of DURATION, not bytes — 'Storag |
| Evidence rung | reported |
| Checked | 2026-10-21 (inherited); stale on 2026-11-04 |
Evidence (1)
| date | source | what it proved |
|---|---|---|
| 2026-10-21 | developers.cloudflare.com/stream/pricing/ | No free storage at all. Storage is prepaid: 'purchased in increments of $5 per month for each 1,000 minutes of video storage capacity.' Billing is on minutes of DURATION, not bytes — 'Storag |
More fields (1)
{
"dead_end": {
"failure_class": "paid",
"why": "No free storage at all. Storage is prepaid: 'purchased in increments of $5 per month for each 1,000 minutes of video storage capacity.' Billing is on minutes of DURATION, not bytes — 'Storag",
"retry_when": null,
"first_recorded": "2026-10-21"
}
}Unknown or withheld values (15)
$.chainingnot-recorded$.confidence_notewithheld$.egress.termsnot-recorded$.extras.dead_end.retry_whenprocess$.free_tier.notesprocess$.identity_cost.detaildefaulted$.identity_cost.kindidentity-defaulted$.interfaceinterface-unknown$.interface_detailwithheld$.limits_noteprocess$.per_object_cap.notesnot-recorded$.per_object_cap.statednot-recorded$.retention.notesprocess$.retention.statednot-recorded$.toolingnot-recorded
Cloudflare for Startups Egress and tunnels
fails: identityinstitutionno cardDwrite-gated
| Free tier | Cloudflare for Startups gives early-stage companies up to $350k in credits to build the next big idea ... Get started with $10k in credits to build and launch your product, no minimum funding required. unit mixed; metered on downloaded-bytes |
|---|---|
| Price | USD 10,000 to 350,000 of credit |
| Per-object cap | not applicable |
| Retention | not applicable |
| Egress | the $10k tier carries no byte allowance of its own because Cloudflare's developer platform has no metered egress to spend it on; ingress: http-only free_allowance: none published |
| Identity | institution early-stage companies, with the tiers set by funding stage: 'Under $1M raised' for the $10k tier and 'Under $5M raised' for the $100k tier |
| Limits |
|
| Binding | write-gated two things fail before volume: the applicant must be a company, and the credit spends only on Cloudflare products, which already carry no egress meter. There is nothing for 1 TiB a month to run out of. |
| Interface | cli, rest wrangler and the Cloudflare API |
| Tooling | wrangler and the Cloudflare API; no VM is involved |
| Composes with | composes with a free VM elsewhere rather than replacing it: the credit buys Workers and R2, not an ingress port |
| Reliability | credits are tied to programme membership and expire with it |
| Notes | Recorded to close the route rather than open it: Cloudflare's egress is already free on R2 and on Workers, which is why a credit there is worth less than it looks for this question. The $10k tier is reachable without funding in principle but needs a company. Candidates considered: Cloudflare Tunnel and WARP, which are in the dossier already and carry the traffic without any credit at all. |
| Evidence rung | documented the tier structure is first-party and read today; whether a sole founder with no entity can apply is not stated |
| Checked | 2026-10-23 (live); stale on 2026-11-22 |
| Parsed numbers |
|
Evidence (1)
| date | source | what it proved |
|---|---|---|
| 2026-10-23 | www.cloudflare.com/forstartups/ | 'up to $350k in credits', 'Get started with $10k in credits ... no minimum funding required', 'Under $1M raised', 'Credits: $10k', 'Under $5M raised', 'Credits: $100k' |
More fields (7)
{
"wg_path": "none",
"wg_detail": "Cloudflare sells no VM; the credits spend on Workers, R2 and the rest of the developer platform, none of which hands the client a UDP port on a public IPv4",
"ingress": "http-only",
"volume_tib_month": null,
"volume_stated": "the $10k tier carries no byte allowance of its own because Cloudflare's developer platform has no metered egress to spend it on",
"bytes_transit": "overlay-only",
"transit_note": "Cloudflare carries the bytes on its own network, which is the part that is already free"
}Unknown or withheld values (2)
$.per_object_cap.statednot-applicable$.retention.statednot-applicable
cloudflare stream Storage
fails: egressemail?card?Rdisagrees
Sibling records disagree:
- verdict:
storage/cloudflare-streamsays fails-egress, storage/cloudflare-stream-video-as-storage says paid-only
| Free tier | Paid, and metered in MINUTES not bytes: $5/month per 1,000 minutes of storage (≈16.7 h) and $1 per 1,000 minutes delivered. The inversion is interesting — because it is duration-priced, a 25 unit none; metered on none |
|---|---|
| Price | none stated |
| Per-object cap | not recorded |
| Retention | not recorded |
| Egress | not recorded |
| Identity | email (placeholder) not published |
| Binding | none no constraint of a named kind was recorded; the verdict rests on the quota sentence rather than on a named limit |
| Interface | unknown |
| Tooling | not recorded |
| Composes with | not recorded |
| Reliability | Paid, and metered in MINUTES not bytes: $5/month per 1,000 minutes of storage (≈16.7 h) and $1 per 1,000 minutes delivered. The inversion is interesting — because it is duration-priced, a 25 |
| Notes | Paid, and metered in MINUTES not bytes: $5/month per 1,000 minutes of storage (≈16.7 h) and $1 per 1,000 minutes delivered. The inversion is interesting — because it is duration-priced, a 25 |
| Evidence rung | reported |
| Checked | 2026-10-21 (inherited); stale on 2026-11-04 |
Evidence (1)
| date | source | what it proved |
|---|---|---|
| 2026-10-21 | developers.cloudflare.com/stream/pricing/ | Paid, and metered in MINUTES not bytes: $5/month per 1,000 minutes of storage (≈16.7 h) and $1 per 1,000 minutes delivered. The inversion is interesting — because it is duration-priced, a 25 |
More fields (1)
{
"dead_end": {
"failure_class": "egress",
"why": "Paid, and metered in MINUTES not bytes: $5/month per 1,000 minutes of storage (≈16.7 h) and $1 per 1,000 minutes delivered. The inversion is interesting — because it is duration-priced, a 25",
"retry_when": null,
"first_recorded": "2026-10-21"
}
}Unknown or withheld values (15)
$.chainingnot-recorded$.confidence_notewithheld$.egress.termsnot-recorded$.extras.dead_end.retry_whenprocess$.free_tier.notesprocess$.identity_cost.detaildefaulted$.identity_cost.kindidentity-defaulted$.interfaceinterface-unknown$.interface_detailwithheld$.limits_noteprocess$.per_object_cap.notesnot-recorded$.per_object_cap.statednot-recorded$.retention.notesprocess$.retention.statednot-recorded$.toolingnot-recorded
Cloudflare Realtime TURN Egress and tunnels
fails: quotaemailno cardDvolume-quota
| Free tier | 1,000 GB/month of Realtime egress shared with the SFU, then USD 0.05/GB unit GB; metered on downloaded-bytes |
|---|---|
| Price | none stated |
| Per-object cap | not applicable: a monthly allowance |
| Retention | not applicable: a monthly allowance |
| Egress | metered at 1,000 GB/month, which is 33.3 GB/day or 3.1% of one day's workload free_allowance: 1,000 GB/month shared between TURN and the SFU price_per_tb: USD 0.05/GB |
| Identity | email a Cloudflare account and a TURN key |
| Binding | volume-quota the monthly byte allowance in egress.free_allowance is what runs out, and no kind in the six-value vocabulary names a byte volume over a period counted per account. per-ip-shaping is the closest, because it is the only kind that bounds a volume, and its subject here is the account rather than the caller's address |
| Interface | rest TURN over UDP, TCP or TLS with a short-lived credential |
| Tooling | any WebRTC stack's TURN client |
| Composes with | a NAT-traversal fallback for a WebRTC-shaped workload and nothing else. It cannot be wrapped into more because a byte quota relayed does not compound. |
| Reliability | TURN and the SFU draw on one allowance, so an SFU workload spends the TURN budget |
| Notes | Reaching 1 TiB/day would need about 30 accounts at the free allowance, which is not a plan. Quoted in decimal GB because the page states decimal GB. |
| Evidence rung | documented |
| Checked | 2026-10-23 (live); stale on 2026-11-22 |
Evidence (1)
| date | source | what it proved |
|---|---|---|
| 2026-10-22 | developers.cloudflare.com/realtime/sfu/platform/pricing/ | 'The first 1,000 GB each month is free. SFU and TURN share this allowance', page last updated 2026-09-22 |
More fields (3)
{
"stale_after_days": 180,
"bytes_transit": "yes",
"transit_note": "TURN relays the media stream when a direct path fails, which is what its byte quota counts"
}cloudflare hyperdrive Storage
fails: quotaemail?card?R
| Free tier | Not a store — it is a connection pooler/cache in front of YOUR origin database. It carries no storage of its own, so it adds nothing to the byte budget. Its 100,000 queries/day free quota is unit none; metered on none |
|---|---|
| Price | none stated |
| Per-object cap | not recorded |
| Retention | not recorded |
| Egress | not recorded |
| Identity | email (placeholder) not published |
| Binding | none no constraint of a named kind was recorded; the verdict rests on the quota sentence rather than on a named limit |
| Interface | unknown |
| Tooling | not recorded |
| Composes with | not recorded |
| Reliability | Not a store — it is a connection pooler/cache in front of YOUR origin database. It carries no storage of its own, so it adds nothing to the byte budget. Its 100,000 queries/day free quota is |
| Notes | Not a store — it is a connection pooler/cache in front of YOUR origin database. It carries no storage of its own, so it adds nothing to the byte budget. Its 100,000 queries/day free quota is |
| Evidence rung | reported |
| Checked | 2026-10-21 (inherited); stale on 2026-11-04 |
Evidence (2)
| date | source | what it proved |
|---|---|---|
| 2026-10-21 | developers.cloudflare.com/hyperdrive/platform/pricing/ | Not a store — it is a connection pooler/cache in front of YOUR origin database. It carries no storage of its own, so it adds nothing to the byte budget. Its 100,000 queries/day free quota is |
| 2026-10-21 | developers.cloudflare.com/hyperdrive/platform/limits/ | cited as the basis of the rejection: Not a store — it is a connection pooler/cache in front of YOUR origin database. It carries no storage of its own, so it adds nothing to the byte budget. Its 100,000 queries/day free quota is |
More fields (1)
{
"dead_end": {
"failure_class": "quota",
"why": "Not a store — it is a connection pooler/cache in front of YOUR origin database. It carries no storage of its own, so it adds nothing to the byte budget. Its 100,000 queries/day free quota is",
"retry_when": null,
"first_recorded": "2026-10-21"
}
}Unknown or withheld values (15)
$.chainingnot-recorded$.confidence_notewithheld$.egress.termsnot-recorded$.extras.dead_end.retry_whenprocess$.free_tier.notesprocess$.identity_cost.detaildefaulted$.identity_cost.kindidentity-defaulted$.interfaceinterface-unknown$.interface_detailwithheld$.limits_noteprocess$.per_object_cap.notesnot-recorded$.per_object_cap.statednot-recorded$.retention.notesprocess$.retention.statednot-recorded$.toolingnot-recorded
cloudflare images — storage Storage
fails: quotaemail?card?R
| Free tier | The Free plan explicitly has NO storage: 'The Paid plan allows transformations, as well as access to storage in Images.' Free is transformations-only, 'up to 5,000 unique transformations eac unit none; metered on none |
|---|---|
| Price | none stated |
| Per-object cap | not recorded |
| Retention | not recorded |
| Egress | not recorded |
| Identity | email (placeholder) not published |
| Binding | none no constraint of a named kind was recorded; the verdict rests on the quota sentence rather than on a named limit |
| Interface | unknown |
| Tooling | not recorded |
| Composes with | not recorded |
| Reliability | The Free plan explicitly has NO storage: 'The Paid plan allows transformations, as well as access to storage in Images.' Free is transformations-only, 'up to 5,000 unique transformations eac |
| Notes | The Free plan explicitly has NO storage: 'The Paid plan allows transformations, as well as access to storage in Images.' Free is transformations-only, 'up to 5,000 unique transformations eac |
| Evidence rung | reported |
| Checked | 2026-10-21 (inherited); stale on 2026-11-04 |
Evidence (1)
| date | source | what it proved |
|---|---|---|
| 2026-10-21 | developers.cloudflare.com/images/pricing/ | The Free plan explicitly has NO storage: 'The Paid plan allows transformations, as well as access to storage in Images.' Free is transformations-only, 'up to 5,000 unique transformations eac |
More fields (1)
{
"dead_end": {
"failure_class": "quota",
"why": "The Free plan explicitly has NO storage: 'The Paid plan allows transformations, as well as access to storage in Images.' Free is transformations-only, 'up to 5,000 unique transformations eac",
"retry_when": null,
"first_recorded": "2026-10-21"
}
}Unknown or withheld values (15)
$.chainingnot-recorded$.confidence_notewithheld$.egress.termsnot-recorded$.extras.dead_end.retry_whenprocess$.free_tier.notesprocess$.identity_cost.detaildefaulted$.identity_cost.kindidentity-defaulted$.interfaceinterface-unknown$.interface_detailwithheld$.limits_noteprocess$.per_object_cap.notesnot-recorded$.per_object_cap.statednot-recorded$.retention.notesprocess$.retention.statednot-recorded$.toolingnot-recorded
cloudflare pages as a mutable object store Storage
fails: quotaemail?card?R
| Free tier | Recorded as a boundary, not a provider: Pages (and Workers static assets) cannot be used as mutable storage. Uploads are whole-deployment snapshots via git or wrangler; there is no put/delet unit none; metered on none |
|---|---|
| Price | none stated |
| Per-object cap | not recorded |
| Retention | not recorded |
| Egress | not recorded |
| Identity | email (placeholder) not published |
| Binding | none no constraint of a named kind was recorded; the verdict rests on the quota sentence rather than on a named limit |
| Interface | unknown |
| Tooling | not recorded |
| Composes with | not recorded |
| Reliability | Recorded as a boundary, not a provider: Pages (and Workers static assets) cannot be used as mutable storage. Uploads are whole-deployment snapshots via git or wrangler; there is no put/delet |
| Notes | Recorded as a boundary, not a provider: Pages (and Workers static assets) cannot be used as mutable storage. Uploads are whole-deployment snapshots via git or wrangler; there is no put/delet |
| Evidence rung | reported |
| Checked | 2026-10-21 (inherited); stale on 2026-11-04 |
Evidence (2)
| date | source | what it proved |
|---|---|---|
| 2026-10-21 | developers.cloudflare.com/pages/configuration/preview-deploy | Recorded as a boundary, not a provider: Pages (and Workers static assets) cannot be used as mutable storage. Uploads are whole-deployment snapshots via git or wrangler; there is no put/delet |
| 2026-10-21 | surge.sh/docs/api/deploys | cited as the basis of the rejection: Recorded as a boundary, not a provider: Pages (and Workers static assets) cannot be used as mutable storage. Uploads are whole-deployment snapshots via git or wrangler; there is no put/delet |
More fields (1)
{
"dead_end": {
"failure_class": "quota",
"why": "Recorded as a boundary, not a provider: Pages (and Workers static assets) cannot be used as mutable storage. Uploads are whole-deployment snapshots via git or wrangler; there is no put/delet",
"retry_when": null,
"first_recorded": "2026-10-21"
}
}Unknown or withheld values (15)
$.chainingnot-recorded$.confidence_notewithheld$.egress.termsnot-recorded$.extras.dead_end.retry_whenprocess$.free_tier.notesprocess$.identity_cost.detaildefaulted$.identity_cost.kindidentity-defaulted$.interfaceinterface-unknown$.interface_detailwithheld$.limits_noteprocess$.per_object_cap.notesnot-recorded$.per_object_cap.statednot-recorded$.retention.notesprocess$.retention.statednot-recorded$.toolingnot-recorded
cloudflare queues Storage
fails: quotaemail?card?R
| Free tier | Tempting because per-queue backlog is 25 GB, but on Workers Free message retention is 'non-configurable at 24 hours' — everything written is deleted within a day. Charged at 1 operation per unit none; metered on none |
|---|---|
| Price | none stated |
| Per-object cap | not recorded |
| Retention | not recorded |
| Egress | not recorded |
| Identity | email (placeholder) not published |
| Binding | none no constraint of a named kind was recorded; the verdict rests on the quota sentence rather than on a named limit |
| Interface | unknown |
| Tooling | not recorded |
| Composes with | not recorded |
| Reliability | Tempting because per-queue backlog is 25 GB, but on Workers Free message retention is 'non-configurable at 24 hours' — everything written is deleted within a day. Charged at 1 operation per |
| Notes | Tempting because per-queue backlog is 25 GB, but on Workers Free message retention is 'non-configurable at 24 hours' — everything written is deleted within a day. Charged at 1 operation per |
| Evidence rung | reported |
| Checked | 2026-10-21 (inherited); stale on 2026-11-04 |
Evidence (1)
| date | source | what it proved |
|---|---|---|
| 2026-10-21 | developers.cloudflare.com/queues/platform/limits/ | Tempting because per-queue backlog is 25 GB, but on Workers Free message retention is 'non-configurable at 24 hours' — everything written is deleted within a day. Charged at 1 operation per |
More fields (1)
{
"dead_end": {
"failure_class": "retention",
"why": "Tempting because per-queue backlog is 25 GB, but on Workers Free message retention is 'non-configurable at 24 hours' — everything written is deleted within a day. Charged at 1 operation per",
"retry_when": null,
"first_recorded": "2026-10-21"
}
}Unknown or withheld values (15)
$.chainingnot-recorded$.confidence_notewithheld$.egress.termsnot-recorded$.extras.dead_end.retry_whenprocess$.free_tier.notesprocess$.identity_cost.detaildefaulted$.identity_cost.kindidentity-defaulted$.interfaceinterface-unknown$.interface_detailwithheld$.limits_noteprocess$.per_object_cap.notesnot-recorded$.per_object_cap.statednot-recorded$.retention.notesprocess$.retention.statednot-recorded$.toolingnot-recorded