Full format comparison table
The table below shows how each of ChatCache's eight export formats handles every major content element. Yes = fully preserved with structure/rendering intact. Partial = content present but formatting reduced. No = element is absent or unreadable.
| Element | DOCX | Markdown | HTML | TXT | JSON | CSV | PNG | |
|---|---|---|---|---|---|---|---|---|
| Images (DALL·E / uploaded) | Yes | Yes | Partial | Yes | No | Partial | No | Yes |
| Tables | Yes | Yes | Yes | Yes | Partial | Partial | Partial | Yes |
| Code blocks (fenced + language) | Yes | Yes | Yes | Yes | Partial | Partial | Partial | Yes |
| LaTeX math (rendered) | Yes | Partial | Partial | Partial | No | No | No | Yes |
| Nested lists | Yes | Yes | Yes | Yes | Partial | Partial | No | Yes |
| Links (clickable) | Yes | Yes | Yes | Yes | URL text only | URL text only | URL text only | No |
Notes on "Partial" cells: Markdown images are exported as image references () - the link is present but the image only renders if the URL is accessible. JSON contains image URLs as string values - the data is there for programmatic use but not displayed. TXT tables are plain text with spacing that may not align. DOCX and Markdown math preserve LaTeX source, which renders in compatible editors (Obsidian, Typora) but shows as raw text elsewhere.
Format-by-format: images
| Format | DALL·E images | Uploaded images |
|---|---|---|
| ✓ inline | ✓ inline | |
| HTML | ✓ embedded | ✓ embedded |
| PNG | ✓ rendered in image | ✓ rendered in image |
| Markdown | Reference only | Reference only |
| TXT | ✗ | ✗ |
| JSON | URL/reference | URL/reference |
| CSV | ✗ | ✗ |
Format-by-format: tables
| Format | Table output |
|---|---|
| Rendered table with rows and columns | |
| HTML | Proper HTML table elements |
| Markdown | Pipe table syntax (GFM) |
| PNG | Visual rendering of the table |
| TXT | Plain text - spacing may not align |
| JSON | Raw text content, no table structure |
| CSV | Raw text content, no table structure |
Format-by-format: code blocks
For a focused guide on getting code blocks out cleanly in Markdown, see exporting ChatGPT code blocks to Markdown.
| Format | Code block output |
|---|---|
| Formatted block with syntax highlighting | |
| HTML | Styled block with language label |
| Markdown | Fenced block with language identifier |
| PNG | Visual rendering with highlighting |
| TXT | Plain text - code present, no formatting |
| JSON | Raw string - code present, no fencing |
| CSV | Raw string - code present, no fencing |
Format-by-format: LaTeX math
For a step-by-step guide to preserving math formulas in a clean PDF, see saving ChatGPT math formulas to PDF.
| Format | Math output |
|---|---|
| Typeset notation (rendered equations) | |
| HTML | Rendered (browser-dependent) |
| PNG | Visual rendering - typeset in image |
| Markdown | LaTeX source preserved (renders in Obsidian, Typora) |
| TXT | Raw LaTeX source only |
| JSON | Raw LaTeX source only |
| CSV | Raw LaTeX source only |
Choose the right format for your content. PDF for images and math, Markdown for code and developer tools.
Add to Chrome, FreeWhy TXT loses all formatting
Plain text is a byte stream of characters. There is no markup layer, no bold, no tables, no code fences, no math rendering - by definition. A TXT export from ChatCache contains all the words from the conversation, but everything structural is flattened:
- Code blocks appear as plain text with no fence markers or language labels
- Tables become rows of space-separated values that may or may not align visually
- Bold and italic text appears as unformatted text
- LaTeX math appears as raw source -
\frac{1}{2}rather than a fraction - Nested lists may appear as indented hyphens, but the nesting depth is not guaranteed
TXT is the right choice when you need the raw content and nothing else - for piping into a script, feeding into another tool, or searching with grep. It is the smallest and simplest output format. For anything that needs to be read by a human with formatting intact, use a different format.
Why JSON is lossless for structure
JSON export preserves the conversation's complete underlying data structure. Each message is serialized as an object with at minimum a role field ("user" or "assistant") and a content field containing the full message text. Nothing is discarded:
- Code blocks are present as strings in the content field - the fence markers and language label are preserved in the raw text
- LaTeX math appears as LaTeX source in the content string, exactly as ChatGPT generated it
- Table content is present as text - the Markdown pipe syntax or HTML table markup is in the string
- Image references or URLs are preserved as string values
- Message sequence and roles are preserved - you can reconstruct the full conversation from the JSON
JSON is not human-readable in the way a PDF or Markdown file is, but it is the only format where no information is lost. This makes it the best choice for programmatic use: feeding into an analysis script, importing into a database, or building a searchable archive of conversations where you may want to extract specific fields later.
Quick format recommendations by content type
If your goal is saving a conversation without any formatting loss, see the dedicated guide on saving ChatGPT conversations without losing formatting.
- Math-heavy conversation → PDF (typeset equations) or Markdown (LaTeX source for editors with math support)
- Code-heavy conversation → Markdown (fenced blocks, language labels, works in GitHub and Obsidian) or PDF
- Conversation with DALL·E images → PDF or HTML (both embed images)
- Conversation with tables → PDF, HTML, or Markdown (all preserve table structure)
- Plain dialogue, no special formatting → TXT or Markdown (both work well)
- Data analysis → JSON or CSV
Frequently asked questions
Does exporting ChatGPT to PDF preserve images?
Yes. PDF export includes DALL·E generated images and images you uploaded to the conversation. They appear inline in the PDF document.
Does Markdown export preserve tables?
Yes. ChatCache exports tables as standard Markdown pipe table syntax, which renders correctly in GitHub, Obsidian, Typora, and other Markdown editors that support GFM tables.
Which format best preserves LaTeX math?
PDF is the best choice for typeset math - it renders equations as visual notation, not raw source. Markdown preserves the LaTeX source code for use in editors that support math rendering like Obsidian.
Does HTML export preserve DALL·E images?
Yes. HTML export embeds images inline in the file. The resulting .html file is self-contained - images are included, not linked externally.
What does TXT export do with code blocks?
TXT export preserves the raw text of code but loses fenced block formatting and syntax highlighting. The code content is present but rendered as plain text without language markers.
Why does TXT export lose all formatting?
Plain text by definition has no formatting layer. TXT is a byte stream of characters with no structure markup - no bold, no tables, no code fences, no math rendering. Bullet points may appear as hyphens and bold text as plain text. Use TXT only when you need raw content without any formatting overhead.
Why is JSON the most lossless export format for structure?
JSON export preserves the conversation's underlying data structure - each message as an object with role (user or assistant), content, and metadata. No information is discarded. Code blocks are present as strings, LaTeX as LaTeX source, table content as text. JSON is not human-readable in the way PDF is, but it is lossless for programmatic processing or archiving.