You drag the 21st file in and ChatGPT tells you “this Project has reached the maximum number of files.” The cap depends on your plan — Plus is typically 20 files per Project, Team / Enterprise higher but still finite. The instinct is to upgrade or look for a workaround, but more often the right move is to consolidate (merge small files), archive (move historic files out), or split the Project (one focused goal per Project) — retrieval quality actually improves when you trim.
Common causes
Ordered by hit rate, highest first.
1. Each conversation snippet uploaded as its own file
The most common pattern. People save each export / each meeting note / each daily log as a separate .txt or .md, and within weeks the file count blows past 20.
How to spot it: Project → Files, you see 15+ files all named like 2026-05-01.md, 2026-05-02.md — one-per-day files.
2. You uploaded both the raw and the processed version
You uploaded report.pdf and report-summary.md, then report-v2.pdf later. Three files where one would do.
How to spot it: Multiple files with overlapping content; same topic, different formats.
3. Reference docs that should live in a Custom GPT, not a Project
Style guides, brand voice docs, glossaries — content that rarely changes belongs in a Custom GPT’s Knowledge so the Project keeps room for active working files.
How to spot it: Files that have not been edited in 30+ days but are still occupying Project slots.
4. Project scope crept — three goals share one Project
Originally “Q2 marketing campaign,” but now also holds customer-research notes, competitor analysis, brand-voice doc. Each topic legitimately needs files, so the limit hits.
How to spot it: Files cluster into 2-3 obviously different themes when you list them.
5. Old chat exports stored as files instead of archived
People upload prior chat transcripts as memory aids. They balloon the count fast and rarely get retrieved usefully.
How to spot it: Files named like chat-export-*.txt or transcript-*.md.
6. Hitting per-file size limits triggered manual splitting
A 60-page PDF split into 4 chunks to fit per-file size limits — now 4 slots used for what was conceptually one file.
How to spot it: Filenames with -part1, -part2 suffixes.
Before you start
- Confirm the actual limit your plan enforces — Free / Plus / Team / Enterprise differ; the error message shows the current cap.
- Note which files are referenced in recent chats vs which haven’t been retrieved in weeks.
- Decide the Project’s real scope in one sentence before any cleanup — “this Project handles X” — that sentence guides what stays.
Info to collect
- Plan tier and the exact cap shown in the error.
- Full file list with last-modified dates (sort by date in the Files panel).
- For each file: estimated last time it was retrieved (search chat history for filename).
- Whether you have any other Project below the cap that could host overflow.
- Custom GPT availability (Plus+) — if yes, that is your archive lane.
Shortest fix path
Ordered by ROI. Steps 1 and 2 usually free 5-10 slots without losing anything.
Step 1: Merge small same-topic files into one
If you have 10 daily logs, concatenate them locally:
cat 2026-05-*.md > may-2026-log.md
# Or with section headers:
for f in 2026-05-*.md; do
echo "## $f" >> may-2026-log.md
cat "$f" >> may-2026-log.md
echo -e "\n\n" >> may-2026-log.md
done
Upload may-2026-log.md, delete the 10 daily files. Net: 9 slots freed, retrieval improves because related content now lives in one chunk-able doc.
Step 2: Archive files not retrieved in 30+ days
Search recent chats for each filename. Any file the model has not cited in the past month is probably dead weight. Move them out:
Project → Files → hover file → Download (save locally to /archive/<project-name>/)
→ Delete from Project
Keep a local archive folder per Project so you can re-upload if needed later.
Step 3: Move static references to a Custom GPT
Style guides, glossaries, brand-voice docs, schema definitions — anything that does not change weekly — belongs in a Custom GPT’s Knowledge:
Create new Custom GPT → name it after the reference domain
("Acme Style Guide GPT")
→ Upload all the static reference files
→ In your Project Instructions, write:
"For style/brand questions, treat the Acme Style Guide GPT
as the source of truth; switch to it for those queries."
Project Files now reserved for active working content.
Step 4: Split the Project by goal
If your Project mixes 3 goals (e.g., Q2 campaign + customer research + competitor analysis), split:
Project A: Q2 campaign (campaign briefs, drafts, schedule)
Project B: Customer research (interview notes, survey results)
Project C: Competitor analysis (teardown docs, screenshots)
Each gets a clean Instructions block, dedicated files, fewer cross-leaks (see also chatgpt-project-memory-leak).
Step 5: Replace split-by-size PDFs with structured Markdown
If you had to split a big PDF to fit per-file size, OCR + convert to compact Markdown:
# Convert PDF to clean Markdown (much smaller than source PDF)
pip install marker-pdf
marker_single full-report.pdf ./out --max_pages 300
One full-report.md is usually 5-10x smaller than the source PDF and easier to retrieve.
Step 6: Use a manifest file as Project memory
Create _manifest.md at the top of Project Files:
# Project Manifest
## Active files
- campaign-brief.md — primary brief, updated 2026-05-20
- customer-personas.md — three personas, updated 2026-05-15
- assets-checklist.md — running checklist
## Archived elsewhere
- 2026 Q1 campaign → archived in /local/archive/q1/
- Old competitor docs → moved to Custom GPT "Competitor GPT"
Helps you and the model see what is in-Project vs out-of-Project.
Step 7: Upgrade plan only if you have already trimmed
Team and Enterprise raise the cap, but if you upgrade with 20 dead files in the Project, you will hit 50 fast. Trim first, then evaluate upgrade.
How to confirm the fix
- Files panel shows count well under the cap with headroom for 5-10 new uploads.
- Open a fresh chat and ask “what files do you have access to in this Project?” — answer matches the trimmed list.
- Run a representative question and confirm retrieval still cites the right (consolidated) file — no regressions from merging.
Common pitfalls
- Deleting files without downloading first — once gone from the Project, the upload is gone too.
- Merging files of unrelated topics into one mega-file to dodge the cap — retrieval quality tanks because chunks now mix themes.
- Uploading the same file under different names “just in case” — wastes 2-3 slots per file.
- Treating chat-export files as required Knowledge — chats are searchable inside the Project anyway.
- Splitting one goal across two Projects to dodge the cap — you lose shared Instructions and re-create the leak problem.
FAQ
Q: Does the file count include images? A: Yes. Image uploads and PDF uploads both consume Project file slots.
Q: Can I increase the limit without upgrading? A: No. The cap is plan-enforced. Team / Enterprise are the only paths to a higher cap.
Q: If I delete a file, will chats that referenced it break? A: Past chat replies remain. New questions in those chats lose access to the deleted file’s content.
Q: Is there a way to see file size or token count per file? A: Hover the file in the Files panel — size is shown. Token count is not exposed directly; treat ~750 words per 1000 tokens as a rough estimate.
Q: Can a single Custom GPT serve multiple Projects? A: Yes. Build one Style Guide GPT and switch to it from any Project when style questions come up.
Related reading
- ChatGPT project files not referenced
- ChatGPT Project context bleeds from old chats
- ChatGPT skims a large document
- ChatGPT Projects advanced workflow
- ChatGPT Projects
Tags: #ChatGPT #Troubleshooting #chatgpt-projects #file-limit