Guushu Studio / Notes

Why Cloudflare bills spike: 8 D1 and Durable Objects cases from 2026

Eight Cloudflare bill spikes from 2026, seven on D1 rows read and one Durable Objects alarm loop: what moved, how far, and where to see it before the invoice.

By · · updated

Eight public Cloudflare bill spikes turned up in 2026 threads on Cloudflare Community and Hacker News. Seven are D1 rows read. One is a Durable Objects alarm loop.

Every fix was one index or one guard on a re-schedule. The fix was never the hard part. Nobody saw the meter move for days.

What goes in the table: thread title, date, product, amount. No usernames, no quotes, no links to the threads. Amounts are what the poster said, rounded. Where they didn't say, the table says so.

Last checked 2026-09-15. I add rows when I find them and bump the updated date at the top.

The 8 incidents, by product and amount

DateSourceProductAmountWhat moved
04-16HNDurable Objectsabout $34,895 over 8 daysAlarm re-scheduled itself in a loop; zero users
06-29CF CommunityD1about $800Sitemap of 380,000 pages crawled; every page a full-table read
08-03CF CommunityD1about $176Rows read overage on a small site
08-10CF CommunityD1about $4,115$5 subscription; D1 rows read ran for a month
08-25CF CommunityWorkers / D1not stated"Accidentally incurred a large billable usage"
09-01CF CommunityD1invoice about $1,481, credit asked about $9761.476 trillion rows read
09-03CF CommunityD1not statedOverage after a data migration; backfill loop
09-11CF CommunityD1quota hit, no invoice yetRows read shown as 235k in one view and 11.5M in another

Seven D1, one Durable Objects. The smallest stated amount is $176. The largest is $34,895.

Bar chart of the five stated amounts on a log scale: Durable Objects $34,895, then D1 at $4,115, $1,481, $800 and $176

D1 pricing is $0.001 per million rows read. So the 09-01 invoice is just what 1.476 trillion of anything costs on a per-million meter.

Why does D1 bill rows read instead of requests?

D1 meters rows scanned, not queries. A SELECT ... WHERE slug = ? on a table with no index on slug scans the whole table on every request. Take 10,000 rows and 100 requests a minute. After one day that's 1.4 billion rows for one small site, and the query count never moved.

Every D1 row in the table is that meter. The 09-03 migration is the same thing in a different shape: a backfill ran SELECT inside a loop over a table that had just grown.

Durable Objects alarm loops that never sleep

The Durable Objects case is an alarm handler that set the next alarm at the end of every run. Failed runs too.

Durable Objects requests are metered per million on Workers Paid. A loop with no sleep and nobody watching runs until the invoice shows up. Eight days, about $34,895, zero users.

A 10,000x jump that nobody saw for days

None of these are Cloudflare being expensive. In every thread the metric jumped 10,000x or more, and the first sign was the invoice or a quota email.

Cloudflare's Budget alerts arrived in 2026-04 and have been on by default for pay-as-you-go accounts since 2026-07. They send one email at the threshold. The docs call them informational only. They don't pause or cap anything, so someone still has to log in and act.

Where to see D1 rows read and DO requests before the invoice

Queries table from one of my own D1 databases over 30 days. The fourth statement ran 71 times, read 965.52k rows and returned about 2,770 rows read per row returned

That's my own metrics database, last 30 days. The fourth row is a scan: 71 calls, 965,520 rows read, about 2,770 rows read for every row it returns. It costs nothing at this size. It's the same shape as every D1 row in the table above: a lookup by max(created_at) per source on a table with no index. Two indexes, (source, created_at) and (created_at), fixed it on 2026-09-28.

The total doesn't tell you much. The check worth automating is whether today is more than 10x the last seven days.

How I now guard my own D1 and Durable Objects usage

What this page can't tell you: eight rows isn't a dataset, the amounts are self-reported, and I only read English-language threads. If you know a public thread that belongs here, the address in the footer works.

I'm building a small watcher for exactly this gap. If a bill has surprised you, the one-question form is at guard.guushu.com. To price a month of your own usage first, the Workers pricing calculator needs no login.