ChatGPT Won't Read Inside an Uploaded ZIP Archive

Upload a ZIP and ChatGPT sees only the filename, never the contents. The fix: trigger Data Analysis with an explicit unzip prompt, or extract locally and upload the files. Verified June 2026.

You drop a project.zip of 30 source files into a chat, ask “summarize the contents,” and ChatGPT either says it can’t open archives, treats the ZIP as a binary blob, or just answers from the filename. The archive uploaded fine; the problem is that ordinary chat does not run code, and only the Python sandbox (now labeled Data Analysis in the model’s tools menu, formerly “Code Interpreter” / “Advanced Data Analysis”) can actually extract a ZIP.

Fastest fix: start a message on GPT-5.5 (the default model as of June 2026) with an explicit instruction — Use Python to unzip this file to /tmp/extracted and list every file with its size. That reliably opens the Data Analysis tool and extracts the archive. If that still fails, unzip on your own machine and upload the individual files instead.

Which bucket are you in?

Run one quick probe before fixing anything. After attaching the ZIP, send: Run os.listdir("/mnt/data") in Python and print the result. What comes back tells you exactly which cause you have:

What you seeCauseJump to
No Python tool runs at all; plain “I can’t open archives” replyChat never invoked Data AnalysisCause 1 / 2
Tool runs, but your ZIP name is missing or shows 0 bytesUpload was filtered or strippedCause 3
ZIP is listed, but extract throws BadZipFile / RarCannotExec / “encrypted”Wrong format or password-protectedCause 4
Extract starts, then OSError: No space left on deviceArchive too big for the sandbox diskCause 5

Common causes

1. Regular chat mode does not run code

Without the Data Analysis (Python) tool, ChatGPT cannot execute unzip. It can read text directly from an uploaded TXT, PDF, DOCX, or CSV, but a ZIP is binary and needs the sandbox to extract. Asking “what’s inside this zip” in a plain chat gets a polite refusal or a hallucinated guess.

How to spot it: No “Analyzing…” / “Working…” indicator, no Python tool block in the reply — pure chat. The answer is a generic “I can’t open archives,” not a Python traceback.

2. Data Analysis is available but you did not invoke it

Even on Plus, Go, or Pro you sometimes have to ask explicitly. A vague “summarize this zip” can route to the lightweight file-preview path, which reads metadata but never extracts. Phrasing the request as code — “use Python to unzip this file and list its contents” — reliably triggers the Data Analysis tool. On GPT-5.5, picking Thinking in the model picker also makes the model more likely to reach for the tool than Instant does.

How to spot it: ChatGPT can analyze CSVs in other chats, but for this ZIP it never opens a Python block.

3. File type filter rejected the upload

Some account types, school and workplace (Enterprise/Edu) deployments, and DLP-flagged accounts block .zip, .exe, and .gz at the upload layer. The file looks attached, but the sandbox sees a stub or nothing.

How to spot it: os.listdir("/mnt/data") returns no file matching your ZIP name, or shows a 0-byte placeholder. Admin-managed workspaces are the usual culprit.

4. Archive uses an unsupported format or is encrypted

ZIP is fine. .rar, .7z, encrypted ZIPs, and split archives (.zip.001, .zip.002) fail in the sandbox because the bundled unzip/zipfile has no RAR or 7z support and won’t prompt for a password.

How to spot it: Python output shows BadZipFile, RarCannotExec, or RuntimeError: ... encrypted / Bad password.

5. Archive too large for the sandbox disk

The Data Analysis sandbox has limited scratch storage. The hard upload ceiling is 512MB per file (as of June 2026), but a ZIP near that size that decompresses to several GB will fill the disk and the extract fails partway through with OSError: No space left on device.

Shortest path to fix

Step 1: Confirm the Python tool fires

Use the default GPT-5.5 model (Instant, Thinking, or Pro all support Data Analysis) and start the message with an explicit unzip request:

Use Python to unzip this file to /tmp/extracted, then list every file
with its size, and print the first 30 lines of any .md or .txt file
at the top level.

You should see a Python tool block run. If nothing runs, the request routed to plain chat — re-send the prompt, or switch to GPT-5.5 Thinking, which is more tool-eager.

Step 2: Use a known-good unzip snippet

If the automatic approach still fails, paste this directly so the model runs it verbatim:

import zipfile, os

src = "/mnt/data/project.zip"   # match your actual filename
dst = "/tmp/extracted"
os.makedirs(dst, exist_ok=True)

with zipfile.ZipFile(src) as z:
    z.extractall(dst)
    for info in z.infolist():
        print(info.filename, info.file_size)

This works on any standard, non-encrypted ZIP and prints the file tree. Uploaded files always land in /mnt/data/<name>, so adjust src if your ZIP is named something else.

Step 3: For encrypted ZIPs, supply the password

import zipfile
with zipfile.ZipFile("/mnt/data/secure.zip") as z:
    z.extractall("/tmp/extracted", pwd=b"yourPassword")

The password goes into the prompt in plain text and may be retained in the conversation. If it is sensitive, decrypt the archive locally first and upload an unencrypted copy.

Step 4: For RAR / 7z, convert locally before uploading

The sandbox has no unrar or 7z binary. On your own machine:

# macOS
brew install p7zip
7z x archive.7z

# then re-zip if you still want a single file
zip -r project.zip extracted/

Upload the new .zip, or just upload the extracted files directly.

Step 5: For very large archives, unzip locally and upload selectively

If the archive is over ~100MB or decompresses to multiple GB, do not upload the ZIP at all — you’ll hit the sandbox disk before the extract finishes. Unzip on your machine, pick the 5-20 files actually relevant to the question, and upload only those. Web supports up to 20 files in a single message (as of June 2026), so a curated set usually fits in one go. You save sandbox disk, save tokens, and ChatGPT analyzes the right files immediately.

How to confirm it’s fixed

After your unzip command runs, verify the files are real (non-zero) on disk:

import os
for root, dirs, files in os.walk("/tmp/extracted"):
    for f in files:
        path = os.path.join(root, f)
        print(f"{os.path.getsize(path):>10} {path}")

You should see every file from the archive listed with non-zero sizes. Then ask ChatGPT to read or summarize one specific file by its full path — if it returns real content, the sandbox can genuinely open the extracted files and you’re done.

FAQ

Why does ChatGPT sometimes extract a ZIP automatically and other times not? When the Data Analysis tool is engaged, recent GPT-5.5 builds often auto-extract a ZIP and read it. When the request routes to the lightweight file-preview path, it only reads the filename and metadata. Forcing the code path with an explicit “use Python to unzip…” prompt removes the coin flip.

Can free ChatGPT open ZIP files? Free accounts get Data Analysis but with tight caps (about 3 file uploads per day as of June 2026) and smaller usage windows. The unzip mechanics are identical to Plus; you’ll just hit limits faster. Go ($8/mo), Plus ($20/mo), and Pro ($100/$200) raise the upload and message ceilings.

What’s the maximum file size I can upload? 512MB per file (as of June 2026), with text/documents capped around 2M tokens and CSV/spreadsheets effectively limited to roughly 50MB before analysis degrades. A ZIP can be up to 512MB, but remember it must also fit on the sandbox disk once decompressed.

The sandbox says my ZIP isn’t in /mnt/data at all — what now? That’s an upload-layer rejection (Cause 3), common on managed Enterprise/Edu or DLP accounts that block .zip. Rename to a permitted type is not reliable; instead extract locally and upload the individual files, or ask your workspace admin to allow archive uploads.

Does ChatGPT support RAR or 7z archives? No. The sandbox only has ZIP tooling. Convert .rar / .7z to .zip locally (or just upload the extracted files) before uploading.

Where do my uploaded and extracted files live in the sandbox? Uploads land in /mnt/data/. Anything you extract or generate during the session typically goes wherever you write it (the snippets above use /tmp/extracted). Both are wiped when the sandbox session ends, so download anything you need to keep.

Prevention

  • Default to uploading individual files rather than archives. ChatGPT’s analysis is sharper when each file is named and readable from the start.
  • When you must upload a ZIP, use this template so Data Analysis always fires: “Use Python to unzip <name>.zip to /tmp/extracted, list contents, then answer: <question>.”
  • Avoid RAR / 7z when sharing with an LLM — convert to ZIP first.
  • For code review, prefer pasting the file tree as text plus the 3-5 most relevant files inline, rather than a 200-file ZIP.
  • For very large datasets, sample first: extract 1000 rows or 50 files locally and upload that subset.

Tags: #ChatGPT #ChatGPT files #Troubleshooting #Debug #zip