Estimating a SaaS bill on Cloudflare Workers by billing unit, not by MAU
李辰 of 小李出海笔记 argues that a Cloudflare SaaS bill cannot be read off monthly active users and walks through Workers, D1, R2, Workers AI and Vectorize by their own billing units, with an estimation template and a checklist.
- Products
- WorkersD1R2Workers AIVectorize
- Source
- Author experience小李出海笔记 (xiaoliblog.com)
- Author
- 李辰
Key points
- The author says an estimate has to separate dynamic Worker requests, CPU ms, D1 rows read and written, R2 Class A and B operations and GB-months, Workers AI Neurons and Vectorize dimensions, because the same MAU can produce very different bills; he says the prices were rechecked against the official pages on May 24, 2026 and that older MAU-based bill ranges without sources were removed.
- For Workers he treats $5 as the base and bills extra requests and CPU ms separately, citing Cloudflare’s example of 15 million requests at 7 ms each costing about $8 a month, and notes static asset requests are not billed as invocations. Cloudflare’s current Workers pricing page shows the same example totaling $8.00.
- For D1 he warns that scanned rows, not returned rows, are billed, so index the filter and sort combinations you use, prefer cursor pagination, and pre-aggregate reports with Cron; for R2, egress is free but operations are not, so images or downloads that bypass the cache keep generating Class B reads, and Infrequent Access adds retrieval fees, higher operation prices and a 30-day minimum. Cloudflare’s current R2 pricing page lists Standard at $0.015 per GB-month, Class A at $4.50 and Class B at $0.36 per million.
- His checklist: track dynamic requests separately from static ones, sample real CPU ms, find the queries with the highest rows_read from the D1 meta object, put a cache in front of R2, log the model, tokens and Neurons of each Workers AI call, write down Vectorize dimensions and topK, and keep a column with the date each price was checked against the pricing pages.
Original sources
Last updated
Estimating a SaaS bill on Cloudflare Workers by billing unit, not by MAU
Open original source李辰 of 小李出海笔记 argues that a Cloudflare SaaS bill cannot be read off monthly active users and walks through Workers, D1, R2, Workers AI and Vectorize by their own billing units, with an estimation template and a checklist.
More to read
Cloudflare Cost Guard: a read-only agent skill for runaway-billing audits
Layer Cache’s open-source agent skill, announced by Domenico (@purposelyblnk), audits a Cloudflare codebase from source alone for paths that can run up uncontrolled billable usage, and reports findings without changing code or calling Cloudflare.
CloudPrinters.sa: an auth refresh-token bug drove about 2 billion D1 writes and a ~$2,078 charge.
Community user salman1 says D1 normally costs CloudPrinters.sa nothing, but over the August 16 to September 15, 2026 cycle an auth bug rewrote one account's entire refresh-token history every time a stale token was retried, generating roughly 2 billion D1 writes. He says the revoke logic and retry loop were fixed and that a billing ticket requests a courtesy credit for the D1 write overage of about $2,078.
How I keep Cloudflare under $5: where surprise bills come from
Ashish Sharma (@sarmaasis) runs several sites on the $5 Workers Paid plan and lists, product by product, the usage patterns he says quietly run up a Cloudflare bill, ending with a 12-item checklist.