#Formats
Nine formats, all rendered from the same conversation model. This page covers what each one looks like and what it is good at. For field-level detail on the machine-readable three, see data reference.
| Format | Extension | Pro | Ships attachments | Combines in a library export |
|---|---|---|---|---|
| Markdown | .md |
Free | yes | one folder per conversation |
| Plain text | .txt |
Free | yes | one folder per conversation |
| JSON | .json |
Free | yes | one folder per conversation |
| HTML | .html |
Pro | yes | one folder per conversation |
.pdf |
Pro | yes | one folder per conversation | |
| Word | .docx |
Pro | yes | one folder per conversation |
| Obsidian | .md |
Pro | yes | one folder per conversation |
| CSV | .csv |
Pro | no | one combined file |
| JSONL | .jsonl |
Pro | no | one combined file |
"Ships attachments" means a conversation with files downloads as a .zip
holding the document plus an attachments/ folder. A conversation with no
files downloads as a single bare document (see what you download).
#Markdown
The default. Message bodies are written verbatim, never escaped: what AI Studio returns is already Markdown, and escaping it would defeat the point.
Each turn is preceded by an HTML comment delimiter:
<!-- aise:turn role=user -->
## User
_2025-06-15 12:20:00 UTC · 18 tokens_
How does the RPC auth work?
<!-- aise:turn role=model thought=1 -->
## Model (Reasoning)
...
The comments render as nothing but give tooling an unambiguous turn boundary.
That matters because message text can contain ## User itself; it cannot
easily contain the delimiter by accident.
Attachments become links, images become embeds:

**Attachment:** [network-log.har](attachments/network-log.har) _(1.4 MB)_
Link targets are percent-encoded, including (, ), # and ?. A
parenthesis in a filename ends the link target early otherwise, which silently
broke links for any conversation containing two files of the same name.
Good for: anything. It reads well raw, renders everywhere, and diffs cleanly in git.
#Plain text
The same transcript with no markup at all. Turns are separated by rules:
------------------------------------------------------------------------
USER [2025-06-15 12:20:00 UTC | 18 tokens]
------------------------------------------------------------------------
[FILE: network-log.har -> attachments/network-log.har]
[IMAGE: screenshot.png -> attachments/screenshot.png]
How does the RPC auth work?
Attachments are named with their archive path, so the text file still tells you where its files are. Message bodies keep whatever Markdown the model wrote; this format does not strip it, it just adds none of its own.
Good for: pasting into ticket systems, email, or anything that mangles Markdown.
#JSON
The lossless format. Everything the extractor captured is here except the raw
bytes, which live in attachments/ and are referenced by path (this keeps the
JSON readable and stores each file once instead of base64'd twice).
{
"schemaVersion": 1,
"exporter": "ai-studio-exporter",
"id": "1AbCdEfGhIjKlMnOp",
"title": "How does the RPC auth work?",
"turns": [ … ]
}
Full field reference: data reference.
Good for: parsing, re-import, feeding another pipeline, or archiving against future format changes.
#HTML
A single self-contained page with no external CSS, fonts or scripts, nothing
loaded from the network. Attachments are referenced from the sibling
attachments/ folder, so keep the ZIP contents together.
- Markdown in message bodies is rendered: headings, fenced code, lists, tables, block quotes and rules.
- Reasoning blocks are collapsed by default as
<details>elements. Click to expand; long thinking no longer buries the answer. - Images are shown inline; other attachments are stacked links.
- Wide content (tables, long code lines) scrolls inside its own box rather than stretching the page.
Good for: sending to someone who should just be able to open it, or printing to PDF from a browser when the conversation is not Latin-script.
A paginated document, A4, with page numbers.
- Each message sits on a tinted band with a coloured left rule, so user, model and reasoning turns are distinguishable at a glance. Reasoning also recolours its body text, so the distinction survives greyscale printing.
- Markdown is rendered: headings, bold, italic,
inline code, lists, block quotes and rules. - Fenced code blocks and tables render in a shaded monospaced box.
- Attachments, the source URL, Markdown links and bare URLs are clickable.
Attachment links are relative to the document, which sits beside
attachments/inside the ZIP. Extract the archive before following them.
#The font limitation
PDF is generated with the standard PDF font set, which covers Latin only.
Smart quotes, dashes and ellipses are substituted cleanly; anything outside
Latin-1 (such as CJK, Devanagari, Kannada, Cyrillic, and emoji) becomes ?.
The exporter detects this and warns before you download. If your conversation is not Latin-script, export HTML and print to PDF from your browser instead.
#Word
A .docx that opens in Word, LibreOffice and Google Docs.
Same structure as the PDF: role-tinted paragraph shading with a coloured left border, rendered Markdown, shaded monospaced code blocks, and hyperlinked attachments. Unlike the PDF it has no font restriction, because Word substitutes fonts itself.
Good for: anything that needs editing, tracked changes or comments.
#Obsidian Markdown
Plain Markdown differs from vault Markdown in three ways that matter, and this format handles all three.
YAML frontmatter, so notes are queryable with Dataview:
---
title: "How does the RPC auth work?"
exported: 2026-07-31T06:40:38.000Z
modified: 2025-06-15T15:06:40.000Z
source: https://aistudio.google.com/prompts/1AbCdEfGhIjKlMnOp
model: "gemini-3-pro"
temperature: 1
top_p: 0.95
top_k: 64
total_tokens: 882
messages: 5
tags: [ai-studio, conversation]
---
Wikilinks for attachments (![[screenshot.png]]), which resolve by vault
filename rather than by path, so the files work once they are anywhere in the
vault.
Collapsible callouts for reasoning (> [!note]- Reasoning) and for the
system instruction, both collapsed by default.
Field meanings match data reference; the keys are snake_case here because that is the Dataview convention.
#CSV
One row per message, RFC 4180, CRLF line endings, UTF-8 with a BOM so Excel reads it as UTF-8 rather than guessing your local codepage.
Columns: data reference.
Every field is quoted, whether or not it needs to be. Cells beginning =, +,
- or @ are prefixed with an apostrophe; those are executed as formulas when
opened in Excel or Sheets, and message text is not something to trust.
A whole-library export produces one combined CSV with a single header row, not one file per conversation.
Good for: counting, filtering and charting across many conversations.
#JSONL
One JSON object per line, in the messages format every major fine-tuning
stack accepts:
{"messages":[{"role":"system","content":"…"},{"role":"user","content":"…"},{"role":"assistant","content":"…"}]}
Three transformations happen here that do not happen anywhere else:
- Reasoning is dropped by default. Training on a model's private thinking
as if it were the reply teaches it to emit thinking as output. Enable
jsonlIncludeReasoningif you specifically want reasoning traces. - Consecutive same-role turns are merged, joined by a blank line. Most fine-tuning APIs reject a conversation that goes user → user.
- Conversations with no assistant reply produce nothing. They are not training examples.
Attachments are not shipped; they become an [attachment: name] line at the
top of the message content, so the text still reflects that a file was there.
A whole-library export produces one combined .jsonl dataset.
Good for: fine-tuning, evaluation sets, and anything that consumes chat transcripts a line at a time.