# What are the storage and database limits of Claude Artifacts?

## A question from my day job

This is an interesting one. Five months after we rolled out Claude Enterprise at Joe, people have been getting really comfortable with it and cooking up a variety of artifacts - from dashboards and reports to smart forms and entire integration suites.

When they first came out, artifacts were basic iframe sandboxes for rendering HTML, CSS and JavaScript. Now, they’re far more powerful, with MCP connectors for live data, APIs for storing files, and a built-in database.

Part of my role is educating people and giving feedback, so someone recently showed me a smart form that would store information and allow different people to review and process it. It doesn’t handle confidential data, so that wasn’t part of this experiment. I wouldn’t rely on this for long-term storage without understanding the backup and recovery options.

But it sparked my curiosity about the limits. How much data can I upload as files, such as photos? And how much can I store in a Claude artifact’s built-in database? I wanted answers simply because it feels right to know as an *AI engineer*.

## The experiment with Opus

Of course, the path to the solution was rather simple. Let’s fire up a new chat with the following prompt and see what it produces: `Find the real storage limits of a claude.ai Artifact by testing, not by reading docs. Write to a throwaway test artifact until each limit fails, and record the exact numbers.`

It created a throwaway artifact that I had to open manually to run the tests. It missed a few things, so we took two turns to patch it before the test succeeded. It looks like this.

![](https://cdn.hashnode.com/uploads/covers/651807c8c94eec3a732926c8/95c7f154-a889-4dfa-bc3a-1d571d0f0b33.png align="center")

Running this test, I also found that when storage approaches the limit, a little warning badge appears to the right of the title saying “Storage 99%”. You can right-click the title to open the menu and see the actual usage and limits. Funny enough, these details seem to be hidden until the artifact makes use of the storage APIs.

Anyways, that brings me to the answer: in my tests, asset storage topped out at 1 GiB, and the database filled at roughly 100 MB. Here’s what I measured with Opus 5.5 at medium effort.

| Limit or test | What I found |
| --- | --- |
| Database total | Roughly 100 MB. Writes eventually returned `quota_exceeded`; the storage menu showed 99.2 MB used out of 100 MB. |
| One database document | 262,144 bytes (256 KiB) saved; one byte more was refused. Tested with ASCII JSON. |
| Asset storage | 1 GiB. It filled after 254 generated photos of about 4.2 MB each. The API also reported a 5,000-file cap, which I didn’t reach. |
| One asset file | Exactly 20 MiB saved; one byte more was refused. |
| Writes | 100 sequential database writes averaged 246 ms each. All 50 parallel writes succeeded in about 1.16 seconds total. No throttling observed. |
| Sorted queries | My sorted query failed with “scans too many documents” after 100 documents of roughly 250 KB each. Unsorted reads still worked. |
| Reads | Sampled small database reads and asset listings took roughly 200–300 ms, including near-full storage. |

![](https://cdn.hashnode.com/uploads/covers/651807c8c94eec3a732926c8/2772c5bd-b9bb-4575-8f6e-5e5db911fd42.png align="center")

Out of curiosity, I also tried storing photos in the database. One 4.2 MB photo became 24 documents after base64 encoding and splitting. It took about 10 seconds to write and 1.9 seconds to read back. That made the distinction pretty clear: photos go in asset storage.

There’s also a button to request higher limits, which leads to a contact form on Claude’s website.

I also found the performance pretty impressive. It reminded me of the Turso database I used for my Chrome extension a few years ago. I’d [migrated from Cloudflare D1 to Turso](https://lukasnotes.dk/migrating-large-d1-to-turso), then eventually [moved from Turso to self-hosted PostgreSQL](https://lukasnotes.dk/migrating-from-turso-libsql-to-self-hosted-postgresql-16-connecting-from-cloudflare-worker-nov-2024) to consolidate things.

---

Disclaimer. In the age of AI, this article is however written by me and proof-read and grammar patched by Astra 6 on High reasoning. You wonder why? I am selfish. I write for myself. I fear of having my brain atrophy and writing short pieces is like a gym for my intelligence.
