Telegram JSON Viewer

Open a Telegram Desktop result.json export and read the chat in your browser. Search it, filter it, export it. No upload, no install, no account.

Runs entirely in your browser. The file is never sent anywhere and is discarded when you close the tab.

How this works

Telegram Desktop writes two kinds of export. A single-chat export puts a name, a type, and a messages array at the top level of result.json. A full-account export wraps everything in chats.list for the chat metadata and messages.list for the messages, with a chat_id on each message linking the two.

The parser checks which shape it has before reading anything else. If messages is an array, it is a single-chat file and every message belongs to the one chat. If messages.list exists, it is a full export and each message is grouped by its chat_id against chats.list. Both are flattened into the same list of messages with a chat name attached, which is why the viewer behaves the same way for either file.

Rich text is the other part that matters. Telegram does not store bold, italic, links, or code as markup in the text field. It stores a plain string plus a parallel text_entities array, where each entry has a type and the substring it applies to. The viewer walks that array and rebuilds the formatting as HTML for display and as Markdown for the export. If an export has no text_entities, the plain string is shown as-is, which is what you want for very old exports or hand-edited files.

Media is referenced by relative path, such as photos/photo_1.jpg or video_files/video_1.mp4. The browser cannot read a sibling folder automatically, so the viewer shows the media type and the reference rather than trying to render the file. The export folder on disk still has the actual files. Copying the reference into a file manager is the fastest way to open one.

What the export contains

Field Where it lives What the viewer does with it
name Top level, or chats.list[].name Shown as the chat label in the filter dropdown.
type Top level, or chats.list[].type Kept in the CSV so you can tell personal chats from groups and channels.
id Each message Kept in the CSV for cross-referencing against the original file.
date Each message, ISO string Shown as a local date and time, and written to CSV in ISO form.
from Each message Shown as the sender name.
text Each message, string or entity array Rendered with formatting, searched, and exported.
text_entities Each message, optional Rebuilt as bold, italic, links, code, and pre.
photo Each message, optional Shown as a media reference, not rendered.
file Each message, optional Shown as a media reference, not rendered.
media_type Each message, optional Shown next to the reference so you know what the file is.
type: "service" Each message, optional Shown in italic, and included in the CSV.

When you would use this

You exported a chat for a research project and the JSON is unreadable in a text editor. Loading it here gives you a scrollable transcript you can search in seconds, without installing Python or writing a parser.

You need the messages in a spreadsheet and the export is JSON. The CSV export gives you one row per message with the sender, date, and text, ready to open in Excel or import into a database.

You want to move a channel archive into a static site or a notes app. The Markdown export preserves the sender and date per line and converts the original formatting, which is the shape a Markdown-based tool expects.

You are checking what Telegram actually exported before deleting the original account. The viewer shows every message and every media reference, so you can confirm the export is complete before relying on it.

You are building a parser yourself and want to see how a real export is shaped. The viewer's source and the field table above are a faster reference than the schema docs for the common cases.

What this does and does not handle

It handles:

It does not handle:

Questions

How do I open a Telegram JSON export?

Drop the result.json file into the box on this page. The parser reads it in your browser and shows the chats and messages. Nothing is uploaded, so the file never leaves your device. If you exported a single chat, the file contains one chat. If you used Export Telegram data from Settings, the file contains every chat you selected.

What is result.json in a Telegram export?

result.json is the machine-readable file Telegram Desktop writes when you export chat history in JSON format instead of HTML. It holds an array of messages with ids, dates, senders, text, and media references. The HTML export writes a separate messages.html file, and the JSON export writes result.json. Both are produced by the same Export chat history menu.

How do I export my Telegram chat as JSON?

Open Telegram Desktop, open the chat, click the three-dot menu, and choose Export chat history. Pick JSON as the format. If you want every chat at once, go to Settings, Advanced, Export Telegram data, and tick the chat types you need. The export produces a folder containing result.json plus a media folder when media is included.

Is my chat uploaded to a server?

No. The page reads the file with the browser File API and parses it with JavaScript. There is no network request during parsing, search, or export. You can confirm this by loading the page, switching the browser to offline mode, and opening a file. It still works.

How do I convert a Telegram export to CSV?

Open the result.json file, then click Export CSV. The download contains one row per message with the chat name, message id, date, sender, message type, text, and media reference. It is UTF-8 with a byte order mark, so Excel opens it without an import step. Emoji and non-Latin text survive intact.

How do I convert a Telegram export to Markdown?

Open the file and click Export Markdown. Each chat becomes a heading and each message becomes a line with the sender and date, followed by the text. Bold, italic, links, and code formatting from the original message entities are converted to Markdown syntax. Media is written as a bracketed reference to the file path in the export.

Can I search inside an exported Telegram chat?

Yes. Type into the search box after loading a file. The search runs across every message in every chat in the export, case-insensitively. Results are highlighted in the message list. Clear the box to return to the full list. The search is client-side and works offline.

Does it work with a single-chat export and a full-account export?

Both. A single-chat export has a name, type, id, and a messages array at the top level. A full-account export has chats.list and messages.list. The parser checks for both shapes and flattens them into the same view. The chat selector shows one entry for a single-chat file and every chat for a full export.

How are bold, italic, links, and code handled?

Telegram stores rich text as an array of entities alongside the plain text. The parser walks that array and rebuilds the formatting. Bold becomes strong, italic becomes em, links become anchors, code becomes code, and pre blocks become pre. In the Markdown export the same entities become asterisks, underscores, brackets, and backticks.

Why do some media messages show only a filename?

A JSON export references media by relative path, such as photos/photo_1.jpg. The browser cannot read a folder automatically, so the viewer shows the reference and the media type instead of the image itself. If you need the actual files, open the export folder on disk and use the path shown in the message.

How large a result.json can it handle?

The practical limit is the browser tab's memory. A result.json of tens of megabytes and hundreds of thousands of messages usually opens on a desktop browser. Very large exports of several gigabytes may be slow or fail, because the whole JSON has to be parsed at once. Splitting the export by chat is the workaround.

Does it work with Telegram exports from a phone?

Telegram mobile apps do not produce a JSON export. The JSON format is written by Telegram Desktop on Windows, macOS, and Linux. If you only have a phone, use Telegram Web or install Telegram Desktop and export from there. The mobile app exports HTML in some regions, which this page does not parse.

Is this the same as a Telegram bot JSON viewer?

No. A bot JSON viewer shows the update objects Telegram sends to a bot, which have a different shape and are used for bot development. This page reads the chat history export written by Telegram Desktop. The field names and nesting are different, and a bot update object will not parse as a chat export.

What happened to the media and stickers in the export?

They are still in the export folder if you ticked the media options. The JSON holds the reference, the type, and any caption. The viewer shows the type and path rather than rendering the file, because a browser cannot read a sibling folder without the user selecting it. Stickers and GIFs often have no file in the export at all, and appear as a type only.