You click the download icon in the upper-right of a Claude Artifact card, and your browser either does nothing at all or drops a 0-byte placeholder file into Downloads. Click it again — same thing. This is rarely a Claude bug; it is almost always the browser’s blob-URL pipeline being interrupted or blocked.
Here’s how Artifact download actually works: Claude holds the generated content in front-end React state. Clicking download calls URL.createObjectURL() to mint a temporary blob URL, then fires a synthetic click on an <a download> element. Any one of those steps can break, producing either the “nothing happens” or the “empty file” symptom.
Common causes
Ordered by hit rate, highest first.
1. You clicked before the artifact finished generating
While Claude is streaming, the artifact card shows a spinner in the upper-right. The download button stays clickable but returns whatever snapshot existed at that moment — often empty or truncated.
How to spot it: Look for the spinner on the artifact card or the “Generating…” badge next to the title. Wait until the card goes static and the title stops changing.
2. A browser extension is killing the blob URL
uBlock Origin, Privacy Badger, Brave Shields, and aggressive ad blockers treat blob: URLs as suspect and silently swallow them. The smoking gun: nothing shows up in DevTools → Network when you click download.
How to spot it: Open DevTools → Console and look for Blocked a frame... or Refused to display 'blob:...'. Or just disable every extension and retry.
3. Huge canvas / HTML artifact runs out of memory
If the artifact is a large React app or holds tens of MB of inline image data, serializing it into a blob can fail — especially in Safari and on mobile browsers.
How to spot it: DevTools → Console shows RangeError: Maximum call stack size exceeded or Allocation failed - JavaScript heap out of memory.
4. Filename contains characters the OS rejects
If the artifact title contains /, \, :, ?, <, >, |, *, or ", Windows and macOS refuse to save the file. The symptom is “it looked like it downloaded, but I can’t find it.”
How to spot it: Ask Claude to rename the artifact to plain alphanumerics, then download again.
5. Incognito or third-party cookies are blocked
Some corporate networks and Safari’s default settings block third-party cookies, which causes Claude’s download auth token to fail with a 401 that the UI never surfaces.
How to spot it: DevTools → Network, filter by download, look for 401/403 responses.
6. Multiple Claude tabs open at once
Multiple tabs share IndexedDB. A stale tab can overwrite the current tab’s artifact reference, so download grabs the wrong version (or nothing).
How to spot it: Close every other Claude tab, refresh, regenerate, then download.
Shortest path to fix
Ordered by ROI. The first three solve 80% of cases.
Step 1: Wait until the artifact is truly finished
The most common fix is patience. Signals it is safe to download:
- No spinner in the card’s upper-right
- Title text has stopped changing
- Claude has started its next reply in the main thread (artifact is “sealed”)
If it’s a code artifact, wait for Claude to say something like “I’ve created the artifact” before clicking.
Step 2: Try incognito or disable extensions
Open a private/incognito window, log in, and repeat the flow. If download works there, return to your normal window and disable extensions one at a time:
Chrome: chrome://extensions/ → toggle off one by one
Safari: Settings → Extensions → uncheck
Firefox: about:addons → Disable
Usual suspects: uBlock Origin, Ghostery, ClearURLs, Decentraleyes, corporate MDM profiles.
Step 3: Have Claude dump plain text instead
For huge artifacts or repeated failures, bypass the download button entirely:
prompt: Please paste the artifact contents directly into the chat
inside a ``` code block. Do not use an artifact.
Then use the “Copy” button on the top-right of the code block and save manually. This is the fastest path for content under ~50KB.
Step 4: Open DevTools and capture the real error
Hit F12 → Console + Network. Re-click download. Capture:
- Red console errors
- Network rows with status ≠ 200
- Any attempted
blob:URL
Paste that into the Anthropic feedback form, or check status.anthropic.com for incidents at that timestamp.
Step 5: Try a different browser / device
Safari refusing? Try Chrome. Desktop failing? Try the mobile web (not the app). If only one combination fails, the bug is browser-specific; if all of them fail, the artifact itself is broken — regenerate.
Step 6: Ask Claude to split it into smaller pieces
For oversize-artifact memory errors:
prompt: Split this artifact into 3 separate smaller artifacts,
each under 200 lines, named part1, part2, part3.
Download each part and concatenate locally. Much higher success rate than forcing one huge file.
Prevention
- For important artifacts, do both “copy” and “download” — don’t trust a single channel
- For long artifacts, ask Claude to split up front; avoid single-blob memory spikes
- Keep a Claude-allowlist for your blockers so you don’t get bitten next time
- Have Claude name files in snake_case or kebab-case; ban special characters
- After download, immediately open the file and verify size > 0 before closing the chat
Related
- Claude file generation eats quota
- Claude beginner guide
- Claude prompt best practices
- Claude Projects
- Claude Mobile App Sync Broken
- Claude Team Billing Mismatch vs Seat Count
- Claude Artifact Renders as Blank Pane
- Claude File Upload Stuck on Processing
- Claude Projects Context Pollution Across Chats
- Claude Projects Instructions Ignored
- Claude Artifact Edit Loses Changes After Follow-up
- Claude Extended Thinking Toggle On but No Thinking Traces
- Claude Attachment Preview Not Rendering: Tile Without Thumbnail
- Claude Web Search Citations Return 404 or Wrong Page
- Claude Artifact React Component Fails Silently on Prop Errors
- Claude Computer Use Stuck in Action Loop on Same Button
- Claude Memory Is On But No Memories Show Up
- Claude Google Drive Connector Stuck in Re-Auth Loop
Tags: #Claude #Debug #Troubleshooting