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.
- 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 (
.tgsvia 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
Download the APK from the Releases page.
USB debugging side load:
adb install te-reader-<version>.apk
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.
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:
- Zip the export folder on the desktop.
- Move the
.zipto the phone. - 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.
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.
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
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.
MIT