A fast, offline, privacy-focused desktop app for browsing exported Telegram chat archives — built with Electron, React, TypeScript, and SQLite (via sql.js).
Telegram's own "Export chat history" feature dumps a chat into a pile of HTML files, folders full of photos, and separate media files that are painful to browse. Telegram Archive Viewer turns that export into something that actually feels like Telegram: a searchable, scrollable, media-rich chat window — entirely on your machine, with no upload, no server, no account.
Not affiliated with, endorsed by, or officially connected to Telegram FZ-LLC or Telegram Messenger Inc. All Telegram trademarks belong to their respective owners.
- Virtualized message list —
- smooth scrolling through chats with tens of thousands of messages, powered by @tanstack/react-virtual
-
Full-text search — instant search across messages, senders, and dates, with jump-to-message and date navigation

-
Rich media support —
-
photos, videos, voice messages, and animated stickers (real TGS/Lottie playback, not a placeholder)

-
Media gallery —
-
Offline & local-first —
-
runs on sql.js (SQLite compiled to WebAssembly) with local persistence; nothing leaves your machine
-
Optional PIN lock —
-
lock the app behind a PIN
-
(salted hash, not stored in plaintext)
-
with an auto-lock/auto-wipe timer for shared or unattended machines
-Theme-
- Light/dark themes and adjustable message font size
-dashboard-
-Overview dashboard
-performance

-Customize-
-Highly customizable interface
-diffrent color to choose
-Text Size

-Prespective- -Different viewing modes -He/she or Pov or Oberver
- Node.js v18 or higher
- npm
cd telegram-archive-viewer npm install
Web (browser) mode:
npm run dev Electron desktop shell, in development:
npm run electron:dev
npm run electron:build Produces an NSIS installer and a portable .exe in the release/ directory.
- In Telegram Desktop, go to Settings → Advanced → Export Telegram data, choose a single chat, and export as HTML.
- In Telegram Archive Viewer,click Import and select the export folder (the one containing messages.html, photos/, stickers/, etc.).
- The app parses the HTML export into a local SQLite database and indexes it for search.
Currently supports single-chat HTML exports produced by Telegram Desktop.
| Layer | Choice |
|---|---|
| UI | React 19 + TypeScript + Tailwind CSS 4 |
| Desktop shell | Electron |
| Database | SQLite via sql.js (WASM), persisted to IndexedDB |
| List virtualization | @tanstack/react-virtual |
| Stickers | lottie-web + pako (real TGS decoding/playback) |
| Build | Vite + electron-builder |
- All data stays local — there is no backend, no telemetry, no network calls.
- The optional PIN lock gates access to the UI; it is not full-disk or database encryption. Treat it as a screen lock, not a vault.
- Electron is configured with contextIsolation, sandbox, and no nodeIntegration; file access from the renderer is restricted to the selected export folder.
- Windows-first: the packaged installer targets Windows (NSIS + portable). macOS/Linux builds are not currently provided.
- Large chats (hundreds of thousands of messages) are supported but memory usage scales with chat size, since the database runs in-memory via WASM.
- Only single-chat HTML exports are supported; multi-chat export folders are not yet handled.
Issues and pull requests are welcome. Please don't include real chat exports, screenshots with personal information, or any third-party copyrighted media in issues or PRs.
MIT — see LICENSE.
Telegram Archive Viewer is an independent, free, non-commercial, open-source project created by Jared Lee. It is not affiliated with, endorsed by, sponsored by, or officially connected to Telegram FZ-LLC or Telegram Messenger Inc.
