Privacy-First | 100% Frontend | Zero Backend
A modern, beautiful web app for analyzing Telegram chat exports and generating comprehensive analytics dashboards. All processing happens locally in your browserโno servers, no accounts, no data collection.
- ๐ Complete Privacy - Everything runs locally, nothing sent to servers
- โก Instant Analysis - No server delays, real-time processing
- ๐ 40+ Metrics - Deep insights across 7 analytics categories
- ๐จ Beautiful UI - Modern dashboard with rich visualizations
- ๐ฑ Responsive Design - Works on desktop, tablet, mobile
- ๐ฌ Media Viewer - Browse photos, videos, voice notes with context
- ๐ฅ Easy Export - Download as CSV, PDF, or print
View at a glance what's happening in your chat:
- 4 Key Summary Cards (messages, participants, avg length, media %)
- Top 5 Contributors with message counts
- Hourly Activity Pattern (24-hour breakdown)
- Word Cloud (top 20 most-used words, sized by frequency)
- Top Reactions (emoji with reactor names)
- Day-of-Week Activity Bar Chart
Deep dive into conversation patterns with 40+ metrics:
Core Statistics
- Total messages, unique participants, date range
- Messages per person per day, active days count
Response Patterns
- Average reply time, fastest/slowest responses
- Ignored messages count
Conversation Flow
- Longest conversation streak
- Longest inactive period
- Peak activity day/hour/month
Media Breakdown
- Photos, videos, voice notes, GIFs, stickers, documents, links
- Click any media type to browse and view actual files
Sentiment Analysis
- Positive/neutral/negative percentages
- Per-user sentiment breakdown
Relationship Insights (5 scores: 0-100)
- Mutual Engagement Score
- Communication Balance
- Interaction Consistency
- Emotional Intensity
- Activity Synchronization
Top Phrases
- 15 most recurring 2+ word combinations
- Example usage for context
Auto-generated insights:
- Relationship Summary
- Communication Style Profile
- Main Topics Discussed (with frequency)
- Key Events & Milestones
Download your insights:
- Analytics CSV - All metrics in spreadsheet format
- Messages CSV - Full message log with metadata
- PDF Report - Multi-page professional report
- Print - Direct browser print (โ Save as PDF)
- Activity Heatmap - GitHub-style calendar grid (daily messages)
- Hourly Heatmap - 24-hour pattern at a glance
- Word Frequency - Sized by usage (word cloud)
- Emoji Breakdown - Top reactions with user attribution
- Progress Bars - Relationship scores and metrics
- Modern browser (Chrome, Firefox, Safari, Edge)
- Node.js 16+ and npm
# 1. Clone the repo
git clone https://github.com/yoni-clef/telegram_chat_analyzer.git
cd telegram_chat_analyzer
# 2. Install dependencies
npm install
cd frontend && npm install
# 3. Start dev server
npm run dev
# Opens at http://localhost:5173-
Export Your Telegram Chat
- Open Telegram Desktop
- Settings โ Data and Privacy โ Export Telegram data
- Select "HTML" format
- Choose the chat(s) to export
- Save to your computer
-
Upload to Analyzer
- Go to Upload page
- Click "Choose folder" and select your export
- Click "Analyze"
- Wait for processing (a few seconds)
-
View Your Dashboard
- Automatically redirects to analytics
- Explore all tabs and metrics
- Click media items to view photos/videos
telegram_chat_analyzer/
โโโ frontend/
โ โโโ src/
โ โ โโโ pages/
โ โ โ โโโ Upload.tsx # File upload interface
โ โ โ โโโ Dashboard.tsx # Main analytics dashboard
โ โ โโโ components/
โ โ โ โโโ Heatmap.tsx # Activity visualizations
โ โ โ โโโ TimelineViewer.tsx # Message browser
โ โ โ โโโ ChartCard.tsx # Chart components
โ โ โโโ services/
โ โ โ โโโ telegramParser.ts # HTML โ Messages
โ โ โ โโโ analytics.ts # Basic metrics
โ โ โ โโโ advancedAnalytics.ts # 40+ metrics
โ โ โ โโโ exportUtils.ts # CSV/PDF export
โ โ โ โโโ fileUtils.ts # File handling
โ โ โโโ styles.css
โ โโโ package.json
โ โโโ vite.config.ts
โโโ ChatExport_*/ # Sample data (for testing)
Participation
- Who talks the most?
- How consistent are people?
- What's the peak activity time?
Content
- Most used words
- Emoji reactions and who uses them
- Types of media shared
Dynamics
- How fast do people respond?
- Are conversations continuous or sporadic?
- When is everyone most active?
Sentiment
- Positive vs. negative tone
- Relationship intensity
- Communication balance between members
This app is built for privacy:
โ
All analysis happens in your browser
โ
No accounts or login
โ
No data stored on servers
โ
Files never leave your computer
โ
Exports saved locally only
โ
Works 100% offline after first load
The only external requests:
- Loading the web app itself (once)
- Optional: Emoji font from CDN
No telemetry. No tracking. No analytics on your use.
| Layer | Tech |
|---|---|
| Frontend | React 18 + TypeScript |
| Build | Vite |
| Styling | Tailwind CSS |
| Routing | React Router v6 |
| Parsing | DOMParser (Browser API) |
| Export | CSV text generation + Print API |
- File API (webkitRelativePath for folder access)
- localStorage (temporary data storage)
- DOMParser (HTML parsing)
- URL.createObjectURL (media blob URLs)
Works on:
- โ Chrome 90+
- โ Firefox 88+
- โ Safari 14+
- โ Edge 90+
Requires:
- ES6+ JavaScript
- File API with folder access
- Modern CSS (Grid, Flexbox)
Issue: Upload folder doesn't contain HTML files
Solution:
- Make sure you exported as HTML (not JSON)
- Check that folder contains
messages.htmlormessages1.html, etc. - Upload the entire folder structure, not just individual files
Issue: Photos/videos don't display
Solution:
- Ensure you uploaded the complete folder
- Media files should be in
photos/,videos/, etc. - Check browser console (F12) for errors
- Try a fresh upload
Issue: Processing is slow with large chats
Solution:
- This is normal for chats with 100k+ messages
- Let it complete (can be 30+ seconds for huge exports)
- Close other browser tabs to free up memory
Issue: Browser localStorage is full
Solution:
- Clear browser cache/cookies
- Use incognito mode for next analysis
- Try a smaller chat export
cd frontend
npm run build
npm run previewOutput: Static files in dist/ folder ready to deploy
Deploy to:
- Vercel (zero config)
- Netlify (zero config)
- GitHub Pages
- Any static file host (Cloudflare, S3, etc.)
For Best Results:
- ๐ Use recent chat exports (more consistent format)
- ๐ฏ Single-chat exports analyze faster than multi-chat
- ๐พ Don't refresh during analysis (data will be lost)
- ๐ Use date filters in Detailed tab to zoom in on time periods
- ๐จ Click media to preview, then use browser back button
- Browse all photos/videos in a chat
- View message context (sender, time, caption)
- See who reacted with what emoji
- Click to open full-size or play video
- CSV - Open in Excel/Google Sheets
- PDF - Share with others or print
- Print - Customizable via browser print settings
- All exports respect active date filters
- In Detailed tab, set "From Date" and "To Date"
- All metrics recalculate automatically
- Perfect for analyzing specific periods
- "Clear Filters" button resets everything
- Beautiful by default - No clutter, focused on key metrics
- Dark-aware - Respects system dark mode
- Mobile-first - Works great on phones
- Accessible - Keyboard navigation, ARIA labels
- Fast - Local processing = instant feedback
Found a bug? Want a feature?
- ๐ GitHub Issues: [Report here]
- ๐ญ GitHub Discussions: [Share ideas]
- โญ Star this repo if you find it useful!
MIT License - Feel free to use, modify, and share
Built with โค๏ธ by Yonatan Ashenafi
Connect:
Inspired by Telegram's official stats but with a focus on privacy and depth of analysis.
Made with React, Tailwind, and a love for data ๐