Skip to content

ItsOrv/Telegram-Chat-Export-Viewer

Repository files navigation

TE Reader

A Flutter reader for Telegram chat exports. Imports the JSON or HTML format produced by Telegram Desktop and displays the conversation with a UI close to the official Telegram client.

The goal is offline browsing of large chat archives without going through the official app, with media, search and per-chat statistics.

Features

  • JSON (result.json) and HTML (messages.html) exports
  • Zip import that extracts the archive and resolves media paths
  • Text formatting (bold, italic, code, links, mentions, spoilers, blockquotes)
  • Media: photos, videos, voice messages, animated and static stickers (.tgs via Lottie), GIFs, files, contacts, locations, polls
  • Per-chat photo gallery with swipe between photos
  • Reply previews tap-to-jump with highlight pulse
  • Long press menu: copy, share, message details
  • Full-text search across all imported chats backed by SQLite FTS5
  • Per-chat statistics: message counts, hourly distribution, monthly histogram, media breakdown, top senders
  • Light and dark themes that follow the Telegram palette
  • Telegram-style doodle wallpaper, optional
  • Adjustable text size
  • Right-to-left rendering with auto direction detection per message

Install

Download the APK from the Releases page.

USB debugging side load:

adb install te-reader-<version>.apk

Build from source

Requirements: Flutter 3.32 stable, Android SDK with cmdline-tools, Java 17.

flutter pub get
dart run build_runner build --delete-conflicting-outputs
flutter build apk --release

The APK lands in build/app/outputs/flutter-apk/app-release.apk.

Import flow

Telegram Desktop produces a folder with result.json or messages*.html plus subfolders for media. On Android 11+ a tree URI from the system folder picker cannot be read as a real file system path, so the recommended flow is:

  1. Zip the export folder on the desktop.
  2. Move the .zip to the phone.
  3. Open TE Reader, tap the floating button, pick Pick zipped export. The app extracts the archive into its private storage and resolves every media reference.

The folder picker still works on older devices and when All files access is granted to the app in system settings.

Schema

Chats and messages are stored in a Drift backed SQLite database with an FTS5 virtual table for search. Migrations bump schemaVersion and live in lib/data/database/app_database.dart.

Project layout

lib/
  core/          theme router settings utils
  data/          models parsers database repository
  features/
    chat/        chat screen bubbles widgets bloc
    chat_list/   chat list screen tile bloc
    import/      import screen and bloc
    search/      search screen and bloc
    media_viewer/photo gallery and video player
    settings/    settings screen
  shared/widgets reusable widgets

Status

The Android target is the primary one. iOS, macOS, Linux and Windows configurations are checked in but require platform tooling and have not been tested.

License

MIT