How to Fix ChatGPT File Upload Not Working: Size, Format, Region, Extensions

ChatGPT file upload stuck at 0%, fails after the progress bar finishes, or uploads but says 'can't read'? These are different issues. Nine causes and matching fixes.

ChatGPT file upload failures come in three distinct shapes — stuck at 0%, failing after the progress bar finishes, or uploading successfully but “unreadable.” Each has a different cause and a different fix.

Identify which case you’re in

  • Stuck at 0% → network / extension / Cloudflare
  • Bar completes then fails → file too large / unsupported type / permission
  • Uploads OK but reads as empty → format encoding / scanned PDF / encrypted PDF
  • Image uploads but ChatGPT says “I can’t see it” → Vision throttled or unavailable in your region

9 causes by hit rate

1. File too large (most common)

ChatGPT’s per-file limit is typically 512 MB, but PDFs over 50 pages often fail and Excel files over 10 MB often fail. Single image upload via Vision caps around 20 MB.

Fix:

  • PDFs in batches, ≤ 50 pages each
  • Remove empty Excel sheets and charts
  • Compress images to under 5 MB
  • Large files → use Projects, not in-chat upload

2. File type not supported

Supported: PDF, DOCX, XLSX, CSV, TXT, JSON, Markdown, common code files, PNG / JPG / WebP / GIF (static).

Unsupported or often-fails:

  • .pages (Mac Pages) — export to PDF
  • .numbers (Mac Numbers) — export to Excel
  • .zip / .rar — extract and upload individually
  • Password-protected PDFs — remove the password
  • .dwg / .psd — convert to PNG
  • HEIC photos (iPhone default) — convert to JPG

3. Scanned PDF

Looks like a PDF, is actually an image. Upload succeeds; ChatGPT says “can’t read text.”

Fix:

  • OCR the PDF first (Adobe / online OCR) into a searchable-text PDF
  • Quick trick: re-save the PDF in macOS Preview (works on some scans)
  • Or screenshot pages and let ChatGPT Vision read them

4. Encrypted / password-protected

Many corporate PDFs ship with a hidden password. Upload fails or content is unreadable.

Fix:

  • Acrobat / Preview → re-save without password
  • Online tools to strip password before upload

5. Browser extensions blocking

Same as other ChatGPT issues — extensions often interrupt the upload channel.

Fix:

  • Try incognito
  • Disable uBlock / Privacy Badger / Ghostery
  • Whitelist chat.openai.com and files.oaiusercontent.com

6. Region restrictions / Vision unavailable

In some regions, Vision is restricted or throttled. Image uploads succeed but ChatGPT says it can’t see them.

Fix:

  • Check status.openai.com for Vision-specific incidents
  • Switch exit node
  • Try GPT-5.5 (often more reliable for Vision)

7. Account doesn’t have the feature

Free accounts can’t use certain upload features (Code Interpreter / data analysis).

Fix:

  • Upgrade to Plus / Team / Enterprise
  • Or use the ChatGPT API and handle the file yourself

8. Special characters in filename

Filenames with #, ?, emojis, or mixed CJK + ASCII sometimes fail.

Fix:

  • Rename to plain English + digits + hyphens
  • e.g., report_q1.pdf instead of a filename that mixes non-ASCII characters, full-width brackets, and special symbols like #

9. Sent the message before upload completed

Pressing Enter before the upload bar finishes cancels the upload.

Fix:

  • Wait for the attachment to show the green checkmark before sending

Shortest fix path

In hit-rate order:

  1. File < 25 MB, PDF < 50 pages, plain English filename → retry
  2. Retry in incognito
  3. Convert to PDF / PNG / TXT and retry
  4. Switch browser (Chrome / Safari)
  5. Switch network (Wi-Fi → 4G or different node)
  6. For unreadable PDFs → OCR into searchable PDF
  7. For “can’t see image” → wait for Vision to recover or switch to GPT-5.5

When it isn’t your fault

  • status.openai.com shows a file-upload incident
  • Many users reporting failures at the same time
  • Your account is freshly rate-limited (upload / Vision / Browse all temporarily fail)

Easy misjudgments

  • “Too large” → actually too many pages: a 5 MB / 200-page PDF still fails
  • “Format issue” → actually a scanned PDF: looks like a PDF, is an image
  • “Network issue” → actually filename problem: special characters
  • “Account issue” → actually Vision throttling: text chat works; only image fails

Prevention

  • Compress PDFs before upload (online compress or re-save)
  • Screenshot in place of uploading photos: auto-PNG and small
  • Split PDFs > 100 pages into 3 uploads
  • Filename hygiene: English + digits + hyphens
  • Important files → Projects so you don’t re-upload every conversation

FAQ

Q: Excel uploads always fail. What now? A: Save as CSV first. CSV almost never fails and AI handles it more reliably.

Q: Image uploaded but ChatGPT says “I can’t see it” — what? A: Almost always Vision throttling. Close the chat, open a new one, re-upload.

Q: PDF uploaded but ChatGPT only answers about the first few pages — why? A: The model only read what fit in context. Split the PDF, or guide it: “Find chapter X.”

Q: Can I upload video or audio? A: ChatGPT desktop / web does not directly process video or long audio. Convert to transcript text first.

Q: HEIC photos from iPhone? A: iPhone default is HEIC. Either change Settings → Camera → Formats → Most Compatible (JPG), or convert manually before upload.

Decision checklist

  • If the error started right after a change, roll back or isolate that change before trying unrelated fixes.
  • If the error happens only in production, compare environment variables, build output, cache, permissions, and platform settings.
  • If the error happens only for one account or browser, test permissions, cookies, extensions, quota, and regional availability.
  • If two fixes seem possible, choose the one that is easiest to verify and easiest to undo first.

When to stop debugging

Stop and escalate when you cannot reproduce the issue, when logs contradict the UI, when billing or account security is involved, or when every fix requires production access you do not control. At that point, package the exact error, timestamp, project ID, reproduction steps, screenshots, and recent changes before asking support or another engineer. Good escalation notes often solve the problem faster than another hour of guessing.

Diagnostic flow

  1. Reproduce the issue once and write down the exact path. If you cannot reproduce it, collect more evidence before changing settings.
  2. Check scope: one user or everyone, one browser or all browsers, local only or production only, new content only or old content too.
  3. Check the last change first. Most troubleshooting work is not about finding a mysterious root cause; it is about identifying which recent change created the mismatch.
  4. Split the system in two: input vs output, local vs hosted, account vs project, source file vs generated file, prompt vs model. Test which side still fails.
  5. Apply the smallest reversible fix. Avoid changes that touch DNS, permissions, billing, deployment, and code at the same time.
  6. Verify the original reproduction path and one nearby path, then write down what fixed it.

Minimal reproduction template

Issue:
- [exact error or broken behavior]

Where it happens:
- URL / tool / project:
- Account:
- Environment: local / preview / production
- Browser / device:

Steps to reproduce:
1.
2.
3.

Expected:
- 

Actual:
- 

Recent changes:
- Code:
- Config:
- DNS / permissions / billing:
- Prompt / model / uploaded files:

Evidence:
- Screenshot:
- Console error:
- Server or platform log:

False fixes to avoid

  • Clearing cache without checking whether the underlying file, permission, route, or setting is correct.
  • Reinstalling packages when the error is actually caused by environment variables, credentials, quota, or platform config.
  • Changing several unrelated settings at once, then not knowing which one mattered.
  • Copying a fix from another framework or platform without checking whether the routing, build output, or auth model is the same.
  • Treating a temporary platform outage as your own bug before checking status pages and recent reports.

Tags: #ChatGPT #Debug #Troubleshooting