Articles

How to Export Grok Conversations, and What Is Inside the File

Our own proposal: normalise the sender field before you trust any count, because Grok writes the assistant's role three ways. In our real export of 309 conversations, 2,190 responses carry the sender values human (1,087), ASSISTANT (792), assistant (310) and grok-4 (1), so matching one spelling finds only 310 of the 1,103 responses that are not yours.

Three graphite metal tags on one steel ring with the middle tag lit amber

Request the export

In Grok, open Settings, then Data Controls, then Export account data. That link leads to accounts.x.ai/data, where you request the export and download the zip when it is ready. These are the steps described in TidyChats' guide to exporting a Grok chat, which we read on October 30, 2026.

What is in the zip

Our zip had 450 entries and unpacked to 357 MB. Almost all of that was uploaded media and asset files. The conversations are one JSON file of 10.8 MB at ttl/30d/export_data/<uuid>/prod-grok-backend.json. Its root holds conversations (309), projects (10), media_posts (330) and tasks. No conversation in ours was marked temporary.

Our own proposal: normalise the sender before you count

The assistant is written three different ways in this file. Across 2,190 responses we found these sender values:

sender valueResponses
human1,087
ASSISTANT792
assistant310
grok-41

A tool that matches the lowercase word assistant finds 310 of the 1,103 responses that are not from the human. Compare case-insensitively, and treat only a case-insensitive human as you. Anything else is the model.

Finding the end of a thread

Responses link to their parents through parent_response_id and path. A conversation can name its final response in leaf_response_id, but 200 of our 309 conversations have no such field. For those, the end of the thread is the newest response that no other response lists as its parent. Dates arrive wrapped in an object, {"$date": {"$numberLong": ...}}, so unwrap them before sorting.

Models in the file

The model values in ours included grok-3, grok-4-auto, grok-4-mini-thinking-tahoe, grok-4, an empty string, and one long internal build name. Do not assume the field is clean enough to group by.

How it indexed

On the 0.6.6 development build, this file indexed with zero failures: 309 conversations became 9,525 chunks (1,347 user, 7,869 assistant, 309 with no role) in 6 seconds, with a peak of 740 MiB. The comparison with the other two exports is in ChatGPT, Claude and Grok export formats compared, and the Claude file is covered in how to export Claude conversations.