How-To

How to Read a Telegram result.json Chat Export

Telegram Desktop can export a single chat as a file named result.json. It holds every message with its time and sender, but it is written for programs, so it is awkward to read by eye. Here is what is in it and how to read it without misreading the times.

How to open the file

1.Find result.json

Telegram Desktop saves the export in a folder named something like ChatExport followed by the date. result.json is inside it, next to folders for photos and files if you included them. If you see messages.html instead, the export was made in HTML format, not JSON.

2.Open it in a browser or a text editor

Drag the file into Firefox, which shows JSON as a list you can expand and collapse. Any text editor also opens it, though a long chat is slow in Notepad. Work on a copy and keep the original untouched.

3.Find the messages list

Near the top are the chat name and type. Everything after "messages" is the conversation, oldest message first.

What a message looks like

{
  "name": "Dana",
  "type": "personal_chat",
  "id": 123456789,
  "messages": [
    {
      "id": 1042,
      "type": "message",
      "date": "2024-03-14T21:41:07",
      "date_unixtime": "1710466867",
      "from": "Dana",
      "from_id": "user123456789",
      "text": "Are you picking up the kids?"
    }
  ]
}
  • type is message for something a person sent. service entries are events such as someone joining, a pinned message, or a call.
  • from is the sender as their name appeared to the account that made the export. from_id is the account identifier, which stays the same if they change their display name.
  • text is the message.

Two timestamps, and which one to trust

date is written in the local time of the computer that made the export, with no time zone attached. The same chat exported in New York and in London shows different clock times. date_unixtime is the same moment as a count of seconds since January 1, 1970 in UTC, and it does not depend on where the export was made. When the exact time matters, rely on date_unixtime and convert it, and state the time zone you converted to.

Why some message text is split into pieces

When a message contains a link, a mention, bold text or similar formatting, text is not one string. It is a list that mixes plain strings with small objects, each holding one formatted piece. To get the sentence, read the pieces in order. The text_entities field holds the same content, always as a list.

"text": [
  "Running late, see ",
  { "type": "link", "text": "https://maps.example/route" },
  " for where I am"
]

What is not in the file

  • Deleted messages are absent. An edited message shows its current wording, with an edited field giving the time of the last edit.
  • Secret chats are stored only on the phones involved and are not part of a Telegram Desktop export.
  • Photos and files are separate files in the export folder. The message holds the path to them.

A whole-account export (Settings, then Advanced, then Export Telegram data) produces a different result.json, with every chat nested under chats and list. Verity reads the single-chat export described here. The steps for making one are in Export Telegram Chat History.

This is general information, not legal advice. Verity is not a law firm, and requirements for authenticating a digital record vary by court — talk to an attorney about what your case specifically needs.

Already have result.json?

Upload it as it is and get a free health score in minutes. The file is read in your browser and never leaves your device.

Analyze your export →