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;…
- 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.
- 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 Requestor422 Unprocessable Entitywhen 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.
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.
- Open Anthropic’s status page in a new tab. If file uploads are degraded, the fix is to wait.
- If status is normal, log out of claude.ai completely — click your profile icon → “Log out.”
- Close the tab. Open a new tab and navigate to claude.ai.
- 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.
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.
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
.docxto.txtdoes 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.
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
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
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.
~/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
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:
- Capture the exact error. Open developer tools (Network + Console tabs), reproduce the failure, and screenshot or export the HAR file.
- Check status.anthropic.com one more time — an incident may have been posted since you started troubleshooting.
- Try a different device entirely. This isolates whether the problem is device-specific or account-specific.
- 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.
- 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.