Claude Artifact Download Fails or Saves an Empty File

Artifact download does nothing or drops a 0-byte file. Fix it: wait for the stream to finish, disable blockers, or have Claude paste the content.

You hover over a Claude Artifact, click the download icon in the toolbar, and your browser either does nothing or drops a 0-byte placeholder into Downloads. Click again and you get the same result. This is almost never an Anthropic outage. In nearly every case the browser’s blob-URL pipeline was interrupted or blocked.

Fastest fix (solves most cases): wait until the artifact stops streaming (no spinner, title stable), then retry the download in an incognito window with extensions off. If that still fails, ask Claude to paste the content into the chat as a code block and copy it manually. Details and the rest of the decision tree are below.

Where the download button actually is (June 2026)

The toolbar moved. As of June 2026, the artifact controls live in the lower-right corner of the artifact window, not the upper-right. Hover over the open artifact to reveal three controls, per Anthropic’s help center:

  • View code (< > icon) — shows the raw source behind the rendered preview
  • Copy — copies the content to your clipboard
  • Download — saves the artifact as a file whose extension matches its type (.html for a web page, .py for a Python script, .svg for vector graphics, .md for a document)

If you do not see a download icon at all, first confirm artifacts are enabled: click your initials in the lower-left, then go to Settings → Capabilities and toggle Artifacts on. Artifacts are supported on Free, Pro, Max, Team, and Enterprise plans.

How Artifact download works under the hood

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 a hidden <a download> element. If the content is not finished, the URL is blocked, or serialization fails, you get either the “nothing happens” symptom or the “empty file” symptom. Each cause below maps to one broken step.

Which bucket are you in?

Symptom you seeMost likely causeJump to
File saves but is 0 bytes or truncatedClicked before stream finishedCause 1 / Step 1
Click does nothing, Network tab stays emptyExtension swallowed the blob: URLCause 2 / Step 2
RangeError or heap error in consoleArtifact too large to serializeCause 3 / Step 6
”Downloaded” but file is nowhereIllegal filename charactersCause 4
401/403 in Network tabThird-party cookies blockedCause 5
Random wrong/old versionMultiple Claude tabsCause 6

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 and the title keeps changing. The download button stays clickable but captures whatever snapshot existed at that instant, which is often empty or truncated.

How to spot it: look for the spinner on the card or a “Generating…” state 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, Ghostery, and aggressive ad/script blockers treat blob: URLs as suspect and silently swallow them. This is the single most common cause of artifact problems after premature clicks, and ad blockers and privacy extensions are also the usual reason the preview pane itself fails to render. The smoking gun: nothing appears 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. A 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. The 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 “Prevent cross-site tracking” setting, block third-party cookies. That can make Claude’s download request fail with a 401/403 the UI never surfaces.

How to spot it: DevTools → Network, click download, look for any row returning 401 or 403.

6. Multiple Claude tabs open at once

Open 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 the large majority of cases.

Step 1: Wait until the artifact is truly finished

The most common fix is patience. Signals that it is safe to download:

  • No spinner in the artifact toolbar
  • Title text has stopped changing
  • Claude has started its next reply in the main thread (the artifact is “sealed”)

For a code artifact, wait for Claude to post its summary (something like “I’ve created the artifact”) before clicking.

Step 2: Hard-refresh, then try incognito with extensions off

First do a hard refresh to clear a stale render: Cmd+Shift+R on macOS or Ctrl+Shift+R on Windows/Linux. If the download still fails, open a private/incognito window, log in, and repeat the flow. If it works there, return to your normal window and disable extensions one at a time:

Chrome:  chrome://extensions/  → toggle off one by one
Edge:    edge://extensions/    → toggle off one by one
Safari:  Settings → Extensions → uncheck
Firefox: about:addons          → Disable

Usual suspects: uBlock Origin, Ghostery, Privacy Badger, ClearURLs, Decentraleyes, and corporate MDM profiles. Once you find the culprit, allowlist claude.ai in it instead of leaving it off.

Step 3: Have Claude paste plain text instead

For huge artifacts or repeated failures, bypass the download button entirely. Send:

Please paste the full artifact contents directly into the chat
inside a fenced code block. Do not use an artifact.

Then use the Copy button on the code block and save it locally. This is the fastest path for content under roughly 50KB.

Step 4: Use View code → Copy, or Print as PDF

If only the download is broken but the preview renders fine, open View code in the artifact’s lower-right toolbar and use Copy there. To get a PDF of a rendered HTML or document artifact, click the caret next to Copy and choose Print as PDF (or open the artifact and press Cmd/Ctrl+P, then set the destination to “Save as PDF”). This sidesteps the blob pipeline completely.

Step 5: Open DevTools and capture the real error

Press F12 to open Console + Network, then re-click download and capture:

  • Red console errors
  • Network rows with a status other than 200 (watch for 401/403 and any blob: attempt)

Paste that into the in-app feedback (thumbs-down → “Report”), and check status.anthropic.com for an incident at that timestamp.

Step 6: Try a different browser / device, or split the artifact

If Safari refuses, try Chrome. If desktop fails, 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, so regenerate.

For the oversize-artifact memory errors from Cause 3, have Claude break it up:

Split this artifact into 3 separate smaller artifacts,
each under 200 lines, named part1, part2, part3.

Download each part and concatenate locally. This has a far higher success rate than forcing one huge file through the blob pipeline.

How to confirm it’s fixed

  1. The browser shows a real filename and a non-zero size in the download bar.
  2. Open the file immediately. A code/HTML artifact should contain the full source you saw in View code; an image should render.
  3. Check the byte size is greater than 0 before you close the chat. If it is 0 bytes, you are still on Cause 1 or 2.

Prevention

  • For important artifacts, do both Copy and Download so you never depend on a single channel.
  • For long artifacts, ask Claude to split them up front to avoid single-blob memory spikes.
  • Keep a claude.ai allowlist entry in your blockers so you do not get bitten again.
  • Have Claude name files in snake_case or kebab-case and ban special characters.
  • After download, open the file and verify the size is greater than 0 before closing the chat.

FAQ

Why is my downloaded artifact 0 bytes? You almost certainly clicked while Claude was still streaming, so the blob captured an empty snapshot. Wait for the spinner to disappear and the title to stop changing, then download again.

The download button is missing entirely. Where did it go? The controls are in the lower-right corner of the artifact window and only appear on hover. If they are still absent, enable artifacts under Settings → Capabilities → Artifacts, or just ask Claude to paste the content into the chat.

Which file type do I get when I download? The extension matches the artifact type: .html for a web page or React app, .py / .js / .ts for code, .svg for vector graphics, .md for a text document. There is no single “always HTML” rule.

How do I save an artifact as PDF or DOCX? Use the caret next to CopyPrint as PDF, or open the rendered artifact and use the browser’s print dialog with “Save as PDF” as the destination. For DOCX, copy the content out and paste it into your editor.

Is this an Anthropic outage? Rarely. Check status.anthropic.com. If there is no incident at your timestamp, it is a local browser, extension, or memory issue, so work through Steps 1 to 6.

Tags: #Claude #Debug #Troubleshooting