What happens when Cloudflare D1's free 500 MB wall hits
A hands-on probe of Cloudflare D1's free 500 MB storage wall via REST API reveals the exact byte ceiling, DELETE-based recovery, and how indexing a blob column silently doubles storage.
A developer stress-tested Cloudflare D1's free-tier 500 MB storage limit over the REST API to see what actually happens at the wall, rather than just comparing headline specs. The findings fill a gap most comparisons skip: the limit isn't a read-only lockout, reads always succeed, and writes fail only once remaining headroom runs out. Single-row insert probes pinned the exact ceiling at 499,994,624 bytes, aligned to SQLite's 4 KB page granularity.
Recovery turns out to be a plain DELETE — no VACUUM or plan upgrade needed — but it isn't free: D1 counts DELETE as a write, so clearing space eats into the free tier's 100,000 daily write quota. The most notable (and twice-corrected) discovery is that running CREATE INDEX on a blob column roughly doubles storage, since index keys carry a copy of the column data. That means a database well under the wall can still crash into the 500 MB limit purely from index creation, and the SQLITE_NOMEM error seen there is really a storage-bound failure, not an unrelated memory cap.
The results matter for engineers because D1's generic error code 7500 doesn't appear in official docs — the error message is the real signal — and because other limits (5 GB account storage, 5M daily reads, 100K daily writes) remain untested here. The author is transparent that several results are single-sample (n=1) and shouldn't be over-generalized, and has published the probing code and raw logs for reproduction.