# Chat Export Viewer

> 把 ChatGPT 或 Claude 匯出的 zip 或 conversations.json 丟進瀏覽器，直接讀對話紀錄：全文搜尋、切換改過的版本、看使用統計，再存成 Markdown。全程不上傳。

- URL: https://bytescope.dev/zh-Hant/chat-export-viewer/
- Locale: zh-Hant · Also: [en](https://bytescope.dev/en/chat-export-viewer.md) · [ja](https://bytescope.dev/ja/chat-export-viewer.md)
- Runs: 檔案不會離開你的瀏覽器 — 全部在本機處理。
- Requires: Any modern browser (Chrome, Edge, Firefox, Safari), desktop and mobile.
- Updated: 2026-09-08

## What it does

ChatGPT 和 Claude 都可以申請匯出自己的資料，拿到的是一個 zip，裡面有一份 `conversations.json`——一整牆的 JSON，不是人能直接讀的東西。這一頁就是用來打開它的。把整個 zip（最好）、解壓縮出來的 `conversations.json` 或整個解壓縮後的資料夾丟進來，來源會自動辨識。左欄列出每一段對話的標題、最後更新時間和訊息數，可以依時間排序、依標題篩選；右欄顯示你點開的那一段，你和助理的訊息分得開，時間戳用你的本地時區，程式碼區塊用等寬字型並附「複製」。大檔案在 Web Worker 裡用串流方式一段一段讀，頁面不會卡住，進度條顯示的是真的已讀位元組數，不是猜的。

### 讀得懂什麼、認不得什麼

ChatGPT 和 Claude 都沒有公開匯出格式。這一頁認得的欄位是依照公開的描述推定的，他們那邊一改就可能跟著變。所以規則是：認不得的東西一律不丟。訊息裡某個片段的內容類型這一頁不認識，就顯示成「不支援的內容類型」佔位，旁邊有一顆按鈕可以看原始 JSON；頁面上方的「格式覆蓋率」小卡會把它們數出來——「共 N 則訊息，其中 M 則含有我們還不認得的內容類型」，並逐一列出類型——你看得到我們漏了什麼。已知的輔助內容，像推理過程、工具呼叫和結果、程式執行輸出、瀏覽引用，會收合或淡色顯示，不算在「認不得」裡。整份檔案根本不是這兩家的對話清單時，頁面會直接說，並顯示前 500 個字元，不會硬猜。

### 改過的提問、重新產生的回答

你改過提問或要求再回答一次，匯出檔會把每個版本都留著，變成同一段對話的分支。只要某則訊息有不只一個版本，它上面就會出現「版本 2/3」切換器；預設顯示匯出檔標記為目前的那條分支，沒有標記就顯示最新的。官方介面要你一則一則點箭頭，這裡每個版本都是一下就到，而且一眼看得出總共有幾個。

### 搜尋與統計

搜尋會在 worker 裡幫每則訊息建一份純文字索引——轉小寫、做 NFKC 正規化，直接比對子字串，所以中文、日文不用斷詞也找得到。結果依對話分組，附前後文片段，點一下就跳到那則訊息並高亮。統計頁會算出對話數和訊息數、畫出每月訊息數長條圖、列出最長的 10 段對話；匯出檔有記錄是哪個模型回答的話，也會列出你最常用的模型。這些都不會離開這個分頁：索引放在 worker 的記憶體裡，頁面關掉就跟著消失。

### 存成 Markdown

任何一段對話都可以存成 `.md`，也可以把整份匯出存成一個 zip，每段對話一個檔，檔名是 `YYYY-MM-DD-標題.md`——標題會先清理過，在 Windows 上也是合法檔名——附件放進 `assets/` 資料夾並用相對路徑連結。預設只匯出你正在看的那條分支；勾選「包含所有分支」，其他版本會以 `## Branch k of n` 的段落接在後面。Markdown 是純文字、不含任何 HTML，頁尾會註明它是從匯出檔轉換而來、未經修改，並附上原始檔的 SHA-256，之後可以拿來核對這份副本是不是出自那個匯出檔。

### 它看不到的東西

檢視器只知道匯出檔裡有的東西。已刪除的對話、別人分享給你的對話、某些工具呼叫的中間結果，通常都不在檔案裡，所以這裡也不會有。圖片和檔案附件只有在你給整個 zip 或解壓縮後的資料夾時才看得到；只給 `conversations.json` 的話，每個附件都會標成「附件不在這份檔案裡」。所有東西都放在這個分頁的記憶體裡，關掉就沒了——不上傳、不儲存，這一頁也沒有伺服器可以把東西送過去。ChatGPT 和 Claude 是各自所有者的商標；這是一個獨立的檢視器，用來讀它們匯出的檔案，不是官方工具。

## Limits

Does not upload or store your chats, does not restore them into the app, and does not read formats other than ChatGPT and Claude data exports (conversations.json).

## FAQ

### 我的對話紀錄會被上傳到哪裡嗎？

不會。zip 的解壓縮、`conversations.json` 的解析，都由瀏覽器裡的 Web Worker 完成；搜尋索引、統計和 Markdown 檔也都在那裡產生。這一頁沒有伺服器可以接收任何東西，也不會寫進任何儲存空間，分頁一關就全部丟掉。打開幾年份的紀錄，跟用文字編輯器打開一樣私密——只是好讀得多。

### 要丟哪個檔案？zip 還是 conversations.json？

zip 最好：你下載到的就是它，而且只有這樣這一頁才看得到你的圖片和檔案附件——它們就放在 zip 裡 `conversations.json` 的旁邊。丟解壓縮後的整個資料夾效果一樣。只丟 `conversations.json` 也可以讀、搜尋、匯出文字，但每個附件都會標成「附件不在這份檔案裡」。

### 為什麼有訊息顯示「不支援的內容類型」？

因為那個片段用的內容類型這一頁不認識。ChatGPT 和 Claude 從來沒有公開匯出格式；這一頁認得的是依公開描述推定的，他們那邊任何一次改動都可能讓它過時。與其默默丟掉，這一頁選擇把它標出來，按鈕後面放著原始 JSON，而且每一個這樣的片段都會算進上方的「格式覆蓋率」小卡，你才知道漏了什麼。推理過程、工具呼叫這類輔助內容是認得的，會收合顯示——那不是這個標籤的意思。

### 我的圖片和附件在哪裡？

在 zip 裡，就在 `conversations.json` 旁邊——所以這一頁才會要整個 zip 或解壓縮後的資料夾。媒體檔只在你點開用到它的對話時才解壓縮，大的匯出檔不需要整包解開。如果你只丟了 `conversations.json`，裝圖片的那個檔案根本不在，每個附件就會這樣告訴你。

### 訊息上的「版本 2/3」是什麼意思？

代表對話在那裡分岔了：你改過提問或重新產生過回答，匯出檔把三個版本都留著。切換器預設顯示匯出檔標記為目前的那條分支——沒有標記就顯示最新的——你可以一個個切過去看。後面接的回覆會跟著你選的版本一起換，因為每條分支都是各走各的。

### 可以一次把全部對話匯出成 Markdown 嗎？

可以。「全部匯出」會產生一個 zip，每段對話一個 `.md`，用日期和標題命名，另有一個 `assets/` 資料夾放匯出檔裡的附件，用相對路徑連結。每段對話預設只寫目前顯示的那條分支；勾選「包含所有分支」，其他版本會以 `## Branch k of n` 的段落接在後面。每個檔案結尾都有一行註明未經修改，並附上原始匯出檔的 SHA-256。

### 匯出檔很大也能開嗎？

設計上就是為這個做的。`conversations.json` 在 Web Worker 裡以串流方式解析：每段對話一讀完就正規化、做成摘要，原始物件隨即釋放，所以記憶體用量跟著最大的那一段對話走，而不是跟著整個檔案走，主執行緒也從來不用把整份檔案抱在手上。進度條顯示已讀位元組／總位元組。一台機器實際能開多大，還是要看瀏覽器給一個分頁多少記憶體，所以這裡不承諾任何上限。

## Related tools

- [WhatsApp Chat Viewer](https://bytescope.dev/zh-Hant/whatsapp-chat-viewer.md) — 把匯出的 WhatsApp 聊天記錄當對話來讀 →
- [MSG Viewer](https://bytescope.dev/zh-Hant/msg-viewer.md) — 不用 Outlook 也能開啟 .msg 檔 →
- [EML Viewer](https://bytescope.dev/zh-Hant/eml-viewer.md) — 安全地開啟並閱讀 .eml 郵件 →
- [CSV Explorer](https://bytescope.dev/zh-Hant/csv-explorer.md) — 在瀏覽器裡瀏覽大型 CSV 檔 →
