#What lands in your downloads folder
Three different layouts, depending on what you exported and to which format.
#A single conversation
#No attachments → a bare file
How does the RPC auth work - 2026-07-31T06-40-38.md
There is nothing to bundle, and wrapping a lone .md in a ZIP is friction for
no benefit.
#With attachments → a ZIP
How does the RPC auth work - 2026-07-31T06-40-38.zip
├── conversation.md
└── attachments/
├── network-log.har
└── screenshot of failing request.png
The document is always named conversation.<ext> inside the archive; the
archive itself carries the title. Every link in the document is relative
(attachments/…), so extract the ZIP before following links. Most PDF
readers and browsers will not resolve a relative link out of a compressed
archive.
CSV and JSONL never produce a ZIP. Neither format has a way to reference a file on disk, so shipping the bytes beside them would be dead weight.
#Colliding filenames
Two attachments called screenshot.png become screenshot.png and
screenshot (2).png. The suffix goes before the extension so the file still
opens in the right application.
#A whole library
#Per-conversation formats → one folder each
Markdown, plain text, JSON, HTML, PDF, Word and Obsidian:
ai-studio-library-2026-07-31T06-40-38.zip
├── index.md
├── manifest.json
├── how-does-the-rpc-auth-work/
│ ├── conversation.md
│ └── attachments/
│ └── screenshot.png
└── another-conversation/
└── conversation.md
index.md is a readable listing with a link to each conversation and a section
for anything that failed. manifest.json is the same information for tooling;
fields are documented in
data reference.
Folder names come from the conversation title. Two conversations with the same
title get the second one's id appended: my-notes (1AbCdE).
#Combined formats → one file
CSV and JSONL produce a single file, not an archive:
ai-studio-library-2026-07-31T06-40-38.csv
ai-studio-library-2026-07-31T06-40-38.jsonl
The CSV's header row appears once at the top, not once per conversation.
#Large libraries
A per-conversation export splits into multiple archives once the next conversation would push one past 256 MB (measured before compression, since that is what predicts memory pressure), so the finished files are smaller.
ai-studio-library-2026-07-31T06-40-38 (part 1 of 3).zip
ai-studio-library-2026-07-31T06-40-38 (part 2 of 3).zip
ai-studio-library-2026-07-31T06-40-38 (part 3 of 3).zip
A part only exceeds 256 MB when a single conversation does on its own, and that conversation gets a part to itself rather than dragging its neighbours over the limit with it.
Every part lists the whole library. Its index.md names every conversation
in the export: the ones in that archive are links, and the rest say which part
holds them.
- [Weekly Notes](weekly-notes/conversation.md): 2026-07-14 · 42 messages
- Design Review: 2026-07-11 · 210 messages · **in part 3**
So whichever part you open, nothing in the export is unaccounted for and no
link points at a file that is not there. The failure list appears in every
part, for the same reason. manifest.json mirrors this: conversations is
what this archive holds, library is everything, with a volume number on
each entry.
Extract the parts side by side and they merge into one folder.
Chrome may ask once whether to allow multiple downloads.
#Partial failure
One unreadable conversation does not lose the rest. Failures are collected and
reported at the end, and recorded in manifest.json with the id, title and
error message. The export only aborts if every conversation failed.
#Filenames
Conversation titles are sanitised for the filesystem: characters illegal on
Windows are removed, the result is truncated to 120 characters, and names that
collide with Windows reserved device names (CON, PRN, NUL, AUX, COM1…)
get an -export suffix. An empty result falls back to conversation.
Inside an archive, names are shorter still, so that no path gets near Windows' 260-character limit. Windows Explorer refuses to open a ZIP at all if any one path inside it reaches that limit, and extracting has to fit the destination folder within it too.
| Name | Longest |
|---|---|
| A conversation's folder, in a library export | 60 characters, plus a short id if two titles collide |
| An attachment | 80 characters, extension kept, including any (2) |
A name cut short loses the end of its text, never its extension, and never
ends in a space, dot or dash, which Windows would strip. The JSON export's
name field still records the attachment's full original name.
The timestamp is the export time in UTC, ISO 8601 with : and . replaced by
-, which sorts correctly in a file listing.