Do these 3 things before closing this tab:
1Scan for outdated or missing drivers - takes under a minute2Repair Windows errors before they cause bigger problems3Fix the driver behind crashes, sound loss and screen glitchesiTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more
Cloudflare database bills spike when metered usage rises—not simply because a database is running. D1 bills for rows read, rows written, and stored data; Durable Objects can also bill for requests and duration, with additional storage meters. Start with the invoice’s rising usage line, then narrow the cause to a database, query, migration, or object behavior. The eight cases below are reported incidents, not a representative sample or independently audited findings.
Which Cloudflare meter is increasing?
First identify the product and billable metric behind the increase. Query counts alone do not explain D1 row-read charges: a query that scans many rows can generate substantial row reads even if it returns few results. Compare query volume with row-read and row-write metrics rather than treating one as a substitute for another.
| Product or storage type | Relevant meters | What to investigate |
|---|---|---|
| D1 | Rows read, rows written, and stored data | High row reads relative to results, repeated writes, storage growth, or a migration/backfill |
| Durable Objects | Requests, duration, and storage | Request or duration increases, storage growth, and alarm invocation or rescheduling patterns |
| SQLite-backed Durable Objects storage | Durable Objects request and duration meters, plus D1-style row-read, row-write, and stored-data meters | Both object activity and the SQLite storage workload |
| Key-value Durable Objects storage | Request-unit and storage metrics; supported plan and backend availability depend on Cloudflare’s current pricing terms | Request and storage usage under the selected backend |
There is no reliable blanket rule that one Durable Objects storage backend is cheaper. The result depends on workload shape and the currently supported plan and pricing terms. Check Cloudflare’s Durable Objects pricing documentation for current details.
What D1 charges for—and how to estimate overages
Cloudflare says D1 is not billed by idle compute hours or capacity units: “You are not billed for hours or capacity units.” That statement is about compute billing; it does not mean D1 usage is free. The D1 pricing page lists the following Workers Paid allowances and overage rates for 2026. Rates can change, so verify the live page before estimating a future invoice.
| D1 meter on Workers Paid | Monthly allowance | Rate above allowance |
|---|---|---|
| Rows read | 25 billion | $0.001 per million rows read |
| Rows written | 50 million | $1.00 per million rows written |
| Stored data | 5 GB | $0.75 per GB-month |
For a rough estimate, compare projected month-to-date usage with the applicable allowance and calculate the excess using the corresponding rate. For example, an excess of one billion D1 row reads corresponds to $1 at the listed rate, before considering other meters or any account-specific terms. This is an estimate, not a final invoice calculation; check the live pricing page for the current allowance, rate, and billing terms.
Cloudflare documents D1 usage in its analytics documentation. Use the database and time period selectors, and inspect query response metadata where available. A high row-read count compared with rows returned can point to scans or a query shape worth investigating; query plans, suitable indexes, and query rewrites may help, but the right fix depends on the workload.
Eight reported bill-spike cases from 2026
An independent September 2026 roundup describes seven D1 incidents and one Durable Objects incident. Its amounts are self-reported, range from $176 to roughly $34,895 where amounts were stated, and some entries have no amount. The roundup does not link each underlying thread in its table and says the cases are not a dataset. Treat these as debugging leads, not evidence of how common any failure mode is.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
- D1 sitemap crawl. The roundup describes a reported sitemap-crawl incident. For a similar pattern, check whether crawling triggered repeated database queries or scans, and compare row reads with query count and returned rows.
- D1 read overages. The roundup includes reports of read charges. A growing read meter calls for inspecting which database and queries contributed, rather than assuming that request volume alone explains the cost.
- A long-running D1 rows-read issue. One case is described as a prolonged row-read problem. Use daily usage and time-range analytics to see whether the increase persists, and narrow it to the affected database and query activity.
- A large D1 read count. The roundup reports another incident involving high reads. A small number of SQL statements can still read many rows, so compare row-read metrics with query volume and results.
- D1 migration or backfill overage. A migration can produce a concentrated burst of writes. In a separate September 2026 Reddit post, an operator said a $10 budget alert showed 8,274% of budget during a migration between databases. The poster said they added a gate to stop a batch job above ten million rows written in a day. The post does not establish a final invoice or quantify savings.
- Other D1 cases in the roundup. The roundup’s remaining reported D1 examples are useful as prompts to inspect read and write meters, but the available summary does not provide enough detail to assign a specific mechanism to each one. Do not infer one.
- Durable Objects alarm loop. The roundup describes a reported alarm-loop incident. Cloudflare says alarm invocations count as requests, and SQLite
setAlarm()calls count as writes. A loop that repeatedly invokes or reschedules alarms can therefore grow metered usage. - A separate high-cost Workers incident with KV and Durable Objects metrics. In a May 2026 Reddit post, a poster claimed a bill of about $35,000 for a side project and reported 3.13 billion KV writes, 16.62 billion KV reads, 4.01 billion Durable Objects storage rows written, and 574 million KV list operations. These are the poster’s figures, not independently verified measurements; the account illustrates why tracing each rising product meter matters.
The September roundup is the source for the eight-case framing and its incident descriptions: independent September 2026 roundup. The directly surfaced community accounts are the May 2026 bill post and the September 2026 migration post. The available source links do not identify the specific underlying Reddit threads, so the claims above remain attributed to the roundup or posters rather than treated as verified facts.
How to trace a spike from invoice to workload
- Find the rising invoice line. Determine whether it is D1 reads, writes, or storage, or a Durable Objects request, duration, or storage metric. Do not diagnose a rows-read increase from query count alone.
- Compare daily and month-to-date usage. Use Cloudflare’s account-level billable usage views and the product analytics to locate when the meter diverged from its previous baseline. Cloudflare explains usage notifications and billing views in its billing documentation.
- Drill down to the database and time period. For D1, inspect the affected database and analytics interval. Compare queries with rows read and written; investigate queries that read many more rows than they return.
- Check for workload changes. Look for a sitemap crawl, traffic change, repeated writes, migration, backfill, or other batch job that coincides with the change. This is a diagnostic checklist, not proof that any one event caused the spike.
- For Durable Objects, inspect alarms and object activity. Compare request, duration, and storage metrics. Review alarm scheduling and invocation behavior, including retries and rescheduling, to ensure the application’s conditions and bounds prevent unintended repetition.
- Set a response threshold. Configure native usage notifications for rows read and written, and set workload-specific limits or gates for migrations and batch jobs. One operator’s ten-million-row daily gate is an anecdotal choice, not a Cloudflare feature limit or universal safe threshold.
Cloudflare’s usage analytics retain a limited history. If longer comparisons matter to your operation, keeping an external time series can preserve a baseline beyond the available dashboard window.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Why repeated writes and alarms matter
D1’s rows-written meter can rise during a migration or backfill even when the job is intentional. Monitor writes while it runs, and use a limit suited to the job’s expected volume and recovery plan. A gate should stop or pause work before an unexpected batch continues unchecked; choose behavior that avoids leaving data in an inconsistent state.
Rank #3
For Durable Objects, review the alarm lifecycle in the application. Because invocations count as requests and SQLite setAlarm() calls count as writes, repeated rescheduling is relevant to more than just the schedule itself. Bound retries, make rescheduling conditional on pending work, and investigate unusually frequent invocations alongside the other billed meters.
What to do when usage exceeds the included amount
Exceeding a monthly included D1 allowance does not by itself identify a runaway query or an erroneous invoice: the overage is calculated using the applicable meter and rate. Confirm the product, metric, and billing period, then compare usage with the live pricing terms. For Durable Objects, consult its current pricing page because the billable components include requests, duration, and storage, and storage backend terms differ.
Cloudflare’s D1 pricing FAQ addresses how to estimate a bill and what happens after included monthly reads, writes, or storage are exceeded. Use the live pricing page and account-level billable usage together: one establishes current rates and allowances, while the other helps locate the account’s actual consumption.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

