FIX Jun 15, 2026 11 min read

Claude File Upload Not Working — Fix Uploads That Fail or Get Stuck

TL;DR Check claude.ai status and refresh your session before anything else — stale auth tokens cause silent upload failures. File type, size, and browser extensions are the most common blockers;…

by Bugi 11 min
TL;DR

  • Check claude.ai status and refresh your session before anything else — stale auth tokens cause silent upload failures.
  • File type, size, and browser extensions are the most common blockers; try an incognito window first.
  • API users: check your request Content-Type and base64 encoding — malformed multipart requests fail silently.

Overview

You drag a file into Claude, click the attachment icon, or send a multipart API request — and nothing happens. The file either vanishes, the upload spinner hangs, or you get a vague error. This affects claude.ai (web), the Claude mobile apps, and the Anthropic API.

The problem usually falls into one of four buckets: session/auth issues, unsupported file formats, browser or client-side interference, or API request formatting. This guide walks through each in order of likelihood, starting with the fastest fixes.

Warning
Do not assume an outage. Most upload failures are local — session, browser, or file issues. Check the basics before waiting for a fix from Anthropic.
Quick fixes
  • Hard-refresh claude.ai (Ctrl + Shift + R or + Shift + R)
  • Try the upload in an incognito/private window
  • Confirm the file type is supported (PDF, TXT, CSV, images, code files)
  • Reduce file size — try a smaller or single-page version
  • Switch browsers (Chrome → Firefox or vice versa)

Symptoms

What this looks like in practice:

  • Silent drop: you attach a file, the UI briefly shows a loading indicator, then returns to the empty input — no error message, no file attached.
  • Spinner hang: the upload progress indicator spins indefinitely. The send button stays grayed out.
  • Error toast: a brief notification like “Unable to upload file” or “Something went wrong” appears and disappears.
  • API 400/422: the Anthropic API returns a 400 Bad Request or 422 Unprocessable Entity when sending file content in a message.
  • “File type not supported”: the UI rejects the file immediately on selection.
  • Partial upload: the file attaches but Claude responds as if no file was provided, or only processes part of the content.

Why This Happens

File uploads in Claude involve multiple layers that can each fail independently.

Session and authentication. Claude.ai uses session tokens that expire. A stale token lets you type messages but may block uploads — the upload endpoint requires a fresh auth handshake that the chat endpoint does not.

File format and encoding. Claude supports specific file types. Attempting to upload an unsupported format (e.g., .exe, .zip, certain proprietary formats) triggers a client-side rejection. Even supported formats can fail if the file is corrupted, password-protected, or uses non-standard encoding.

Browser interference. Ad blockers, privacy extensions, and corporate proxy servers can intercept the multipart upload request. Extensions like uBlock Origin, Privacy Badger, or enterprise DLP tools sometimes flag the upload payload.

Network issues. Large files on slow or unstable connections time out before the upload completes. Corporate firewalls may block the upload endpoint while allowing the chat endpoint through.

API-specific causes. Malformed base64 encoding, incorrect MIME types, or exceeding the content block size in the Anthropic API messages endpoint all produce upload failures.

01

Refresh your session and check service status

Log out of claude.ai, clear the tab, and log back in. This forces a fresh auth token.

Refresh Your Session and Check Service Status

Start here because it takes 30 seconds and fixes a surprising number of cases.

  1. Open Anthropic’s status page in a new tab. If file uploads are degraded, the fix is to wait.
  2. If status is normal, log out of claude.ai completely — click your profile icon → “Log out.”
  3. Close the tab. Open a new tab and navigate to claude.ai.
  4. Log back in and try the upload immediately.

The logout forces a new session token. If uploads work after re-auth, the problem was a stale session — this is the single most common cause.

Tip
If you use Claude across multiple tabs, close all of them before logging back in. Stale tabs can interfere with the new session.
02

Test in a clean browser environment

Eliminate extensions and cached state by trying incognito mode or a different browser entirely.

Test in a Clean Browser Environment

Browser extensions are the second most common cause. An incognito window disables most extensions by default.

Chrome: Ctrl + Shift + N (Windows/Linux) or + Shift + N (Mac). Log into claude.ai and try the upload.

Firefox: Ctrl + Shift + P or + Shift + P.

Safari: Enable private browsing from File → New Private Window.

If the upload works in incognito, one of your extensions is the problem. Disable extensions one by one to find the culprit. Common offenders:

  • Ad blockers (uBlock Origin, AdBlock Plus) — they may block the upload request to Anthropic’s CDN
  • Privacy extensions (Privacy Badger, Ghostery) — they can strip request headers needed for multipart uploads
  • VPN browser extensions — they may route the upload through a node that throttles or blocks large payloads
  • Corporate DLP/security plugins — enterprise tools like Netskope or Zscaler often inspect and block file uploads to external services

If incognito also fails, try a completely different browser. This rules out browser-specific bugs and corrupted cache.

03

Verify file type, size, and integrity

Claude accepts specific formats. Ensure your file meets requirements before uploading.

Verify File Type, Size, and Integrity

Not all files are equal. Claude’s file handling has constraints that aren’t always obvious from the UI.

Supported file types generally include: PDF, TXT, CSV, MD, JSON, XML, HTML, common image formats (PNG, JPG, GIF, WebP), and source code files (.py, .js, .ts, .java, .cpp, etc.). Unsupported formats get rejected at the client level.

What trips people up:

  • Password-protected PDFs — Claude cannot process them. Remove the password first using a tool like qpdf --decrypt protected.pdf output.pdf.
  • Scanned PDFs without OCR — a PDF that is actually a stack of images with no text layer. Claude’s vision capabilities may handle the images, but text extraction will be empty or incomplete.
  • Files with misleading extensions — renaming a .docx to .txt does not make it a text file. Claude checks actual content type, not just the extension.
  • Very large files — if your file is large, try splitting it or extracting the relevant section. Upload the section you actually need Claude to analyze.
  • Empty files — zero-byte files may upload successfully but produce confusing results.
Tip
For PDFs that fail: open the PDF in your browser’s built-in viewer and re-export as PDF via Print → Save as PDF. This normalizes the format and strips problematic embedded elements.

Quick validation before uploading:

# Check actual file type (not just extension)
file document.pdf

# Check file size
ls -lh document.pdf

# For PDFs, check if it's encrypted
qpdf --check document.pdf
04

Platform-specific troubleshooting

Browser, mobile, and desktop apps each have their own failure modes.

Platform-Specific Troubleshooting

Claude.ai (Web)

Open your browser’s developer console (F12 → Network tab) and retry the upload. Look for:

  • Failed requests (red entries) — note the status code and response body
  • CORS errors — indicates a proxy or extension is interfering
  • Request blocked — a browser extension or corporate firewall killed the request

If you see a 413 Payload Too Large in the network tab, your file exceeds the upload limit. Reduce the file size.

If you see 403 Forbidden, your session token is invalid — go back to Step 01.

Mobile (iOS / Android)

Mobile uploads have additional failure points:

  • iOS Safari: ensure claude.ai has permission to access files. Go to Settings → Safari → check that no content blockers are interfering.
  • Android Chrome: check that Chrome has storage permissions. Some Android devices block file access for browsers by default.
  • Claude mobile app: force-close the app and reopen it. If uploads still fail, uninstall and reinstall — the app caches auth state aggressively.
  • Low bandwidth: mobile connections drop large uploads more frequently. Switch to Wi-Fi and retry.

Desktop App (if applicable)

If you’re using Claude through a desktop application:

  • Restart the app completely (quit, not just close the window)
  • Check for app updates — file upload bugs are often fixed in patches
  • Try the web version to confirm whether the issue is app-specific
05

API file upload troubleshooting

For developers sending files via the Anthropic API — check encoding, MIME type, and message structure.

API File Upload Troubleshooting

If you’re sending files through the Anthropic Messages API, upload failures are almost always request formatting issues.

Common API mistakes:

Wrong content block structure. Image and file content must be sent as specific content block types within the messages array. A frequent mistake is putting the base64 data in the wrong field.

{
  "role": "user",
  "content": [
    {
      "type": "image",
      "source": {
        "type": "base64",
        "media_type": "image/png",
        "data": "<base64-encoded-data>"
      }
    },
    {
      "type": "text",
      "text": "Describe this image."
    }
  ]
}

Incorrect MIME type. The media_type must match the actual file content. Sending image/png for a JPEG causes silent failures or garbled processing.

Broken base64 encoding. Line breaks in the base64 string, padding errors, or encoding the file path instead of the file content. Validate your encoding:

# Encode correctly
base64 -w 0 image.png > encoded.txt

# Verify it decodes back
base64 -d encoded.txt > decoded.png
diff image.png decoded.png

PDF-specific API calls. For PDF uploads via the API, you need to use the document content block type. Check Anthropic’s PDF support documentation for the exact structure — it differs from image uploads.

Danger
Never log or print your full API request in production — the base64 payload can contain sensitive document content.

~/project

$ curl -s -o /dev/null -w "%{http_code}" https://api.anthropic.com/v1/messages -H "x-api-key: $KEY" -d @payload.json
200  # Success
400  # Bad request — check JSON structure
413  # Payload too large — reduce file size
422  # Unprocessable — wrong media_type or encoding

Network and Firewall Checks

If you’ve ruled out session, browser, file, and API issues, the network layer is next.

Corporate networks frequently block file uploads to external services. Test by switching to a mobile hotspot — if uploads work on cellular, your corporate network is filtering the traffic.

VPNs can also interfere. Some VPN exit nodes are rate-limited or blocked by Anthropic’s infrastructure. Try disconnecting the VPN temporarily.

DNS issues are rare but possible. Try switching to a public DNS (8.8.8.8 or 1.1.1.1) to rule out DNS resolution problems with Anthropic’s upload endpoints.

# Test connectivity to Anthropic's API
curl -I https://api.anthropic.com

# Check DNS resolution
nslookup claude.ai
Takeaway

If uploads work on a different network, the problem is your network configuration — talk to your IT team, not Anthropic support.

If It Still Fails

You’ve tried everything above and uploads still don’t work. Escalation path:

  1. Capture the exact error. Open developer tools (Network + Console tabs), reproduce the failure, and screenshot or export the HAR file.
  2. Check status.anthropic.com one more time — an incident may have been posted since you started troubleshooting.
  3. Try a different device entirely. This isolates whether the problem is device-specific or account-specific.
  4. Contact Anthropic support through the help menu in claude.ai. Include: your browser/app version, the file type and approximate size, the exact error message (if any), and whether the issue is consistent or intermittent.
  5. Check community forums. Other users may be experiencing the same issue — the Anthropic community forum often surfaces new issues before they hit the status page.

FAQ

What file types does Claude support for uploads?
Claude generally supports PDF, TXT, CSV, MD, JSON, XML, HTML, common image formats (PNG, JPG, GIF, WebP), and source code files. Unsupported formats like .exe or .zip are rejected at the client level. Check Anthropic’s documentation for the current list, as supported types may expand over time.
Why does my file upload to Claude spin forever without completing?
An infinite spinner typically means the upload request is being blocked or timing out. The most common causes are browser extensions (ad blockers, privacy tools), corporate firewalls, or VPN interference. Try an incognito window first — if that works, disable extensions one by one to find the culprit.
Can Claude read password-protected PDFs?
No. Password-protected or encrypted PDFs fail silently or produce an error. Remove the password protection before uploading. On Linux or Mac, you can use qpdf: qpdf –decrypt protected.pdf output.pdf. On Windows, open the PDF in a viewer, print to PDF, and upload the new copy.
Why does Claude say ‘file type not supported’ for a PDF?
This usually means the file is not actually a valid PDF despite the .pdf extension. The file may be corrupted, a renamed non-PDF file, or use non-standard encoding. Open it in a PDF viewer and re-export via Print → Save as PDF to normalize the format.
How do I upload files to Claude via the API?
Use the Messages API with the appropriate content block type — ‘image’ for images (with base64-encoded data and correct media_type) or the document type for PDFs. Ensure the base64 encoding has no line breaks and the MIME type matches the actual file content. See Anthropic’s API documentation for the exact payload structure.
Does Claude file upload work on mobile?
Yes, but mobile uploads have extra failure points. On iOS, check that Safari or the Claude app has file access permissions. On Android, ensure Chrome has storage permissions. Force-close and reopen the app if uploads fail. Switching from cellular to Wi-Fi can also help with large files that time out on slower connections.
Why does Claude ignore my uploaded file and respond as if no file was attached?
This can happen with scanned PDFs that contain no text layer — Claude sees images instead of extractable text. It can also occur if the file is empty or if the upload appeared to succeed but actually failed silently. Re-upload the file and explicitly reference it in your message (e.g., ‘analyze the attached PDF’).