WhatsApp Backup Reader

WhatsApp Backup Reader

Browse your WhatsApp exports offline. Your data stays on your device.

Latest Release CI Status License

Svelte 5 Electron 39 Local Whisper AI 100% Offline

EnglishPortuguêsEspañolFrançaisDeutschItalianoNederlands日本語中文Русский

FeaturesQuick StartExport GuidePrivacyContributing

--- ## What it does Drop a WhatsApp `.zip` export and browse your messages, photos, and voice notes. Works with big chats (tested with 10k+ messages). The **Media Gallery** gives you a visual overview of all photos, videos, and audio files organized by date. Select multiple items and download them as a ZIP file, or click any media to view it full-screen and jump to the original message. Voice messages can be transcribed using [Whisper](https://openai.com/research/whisper), which runs in your browser via WebGPU. No server, no API key needed.
Screenshots
| Start Screen | Chat View | |:---:|:---:| | | | | Chat Options | Perspective Mode | |:---:|:---:| | | | | Bookmarks | Statistics | |:---:|:---:| | | | | Voice Transcription | Media Gallery | |:---:|:---:| | | | | Download Selected | Go to date | |:---:|:---:| | | |
--- ## Download Get the desktop app for your platform: ### Windows - Download **WhatsApp-Backup-Reader-Setup-{version}.exe** from [latest release](https://github.com/rodrigogs/whats-reader/releases/latest) - Run the installer and follow the setup wizard - The app will auto-update when new versions are available ### macOS - **Apple Silicon (M1/M2/M3)**: Download **WhatsApp-Backup-Reader-{version}-arm64.dmg** - **Intel**: Download **WhatsApp-Backup-Reader-{version}.dmg** - Open the DMG file and drag the app to Applications - On first launch, right-click the app and select "Open" to bypass Gatekeeper ### Linux - **Debian/Ubuntu**: Download **whats-reader_{version}_amd64.deb** or **whats-reader_{version}_arm64.deb** ```bash sudo dpkg -i whats-reader_{version}_amd64.deb ``` - **Fedora/RHEL**: Download **whats-reader-{version}.x86_64.rpm** or **whats-reader-{version}.aarch64.rpm** ```bash sudo rpm -i whats-reader-{version}.x86_64.rpm ``` - **Other distros (Arch, etc.)**: Download **WhatsApp-Backup-Reader-{version}.AppImage** ```bash chmod +x WhatsApp-Backup-Reader-{version}.AppImage ./WhatsApp-Backup-Reader-{version}.AppImage ``` > **Or use the web version**: Visit [rodrigogs.github.io/whats-reader](https://rodrigogs.github.io/whats-reader) - no installation needed! --- ## Features - **Media Gallery**: Browse all photos, videos, and audio in a thumbnail grid view - Date-based organization with calendar navigation - Bulk select and download as ZIP - Lightbox preview with navigation back to original message - **Auto-update**: Desktop app automatically checks and installs updates (Electron only) - **Voice transcription**: Transcribe audio with Whisper (runs locally, 12+ languages) - **Search**: Full-text search across messages and transcriptions - **Bookmarks**: Save messages with notes, export/import as JSON - **Perspective mode**: View the chat as any participant - **Statistics**: Message counts, activity charts, timeline - **Dark mode**: Follows system or toggle manually (preference saved) - **Multi-language UI**: English, Portuguese, Spanish, French, German, Italian, Dutch, Japanese, Chinese, Russian - **Desktop app**: macOS, Windows, Linux via Electron --- ## Quick Start ### Prerequisites You need [Node.js](https://nodejs.org/) installed (version 18 or later). Download it from [nodejs.org](https://nodejs.org/) and run the installer. To check if you have it: ```bash node --version ``` ### Running the app 1. Clone or download this project 2. Open a terminal in the project folder 3. Run these commands: ```bash npm install npm run dev ``` 4. Open [localhost:5173](http://localhost:5173) in your browser 5. Drag and drop your WhatsApp `.zip` file into the page ### Desktop app (optional) If you prefer a standalone app instead of using your browser: ```bash npm run electron:dev # run in dev mode npm run electron:build # create an installer for your OS ``` Platform-specific builds: ```bash npm run electron:build:mac # macOS (dmg, zip) npm run electron:build:win # Windows (nsis, portable) npm run electron:build:linux # Linux (deb, rpm, AppImage) ``` --- ## How to Export from WhatsApp First, you need to export a chat from WhatsApp on your phone. This creates a `.zip` file containing your messages and media. ### iPhone 1. Open WhatsApp and go to any chat 2. Tap the contact or group name at the top of the screen 3. Scroll down and tap **Export Chat** 4. Choose **Attach Media** to include photos, videos, and voice messages 5. Save the file (you can AirDrop it to your Mac, save to Files, or email it to yourself) ### Android 1. Open WhatsApp and go to any chat 2. Tap the three dots **⋮** in the top right corner 3. Tap **More** → **Export chat** 4. Choose **Include media** 5. Save or share the `.zip` file to your computer ### Tips - Large chats may take a few minutes to export - The file will be named something like `WhatsApp Chat with John.zip` - Both individual and group chats work --- ## Privacy & Security This app is designed with privacy as the top priority. Your WhatsApp data never leaves your device. ### Why it's secure - **100% Offline**: The app works entirely without internet. No servers, no cloud, no data transmission. - **Local processing**: All parsing, search, and analysis happens in your browser or Electron app. - **Local AI**: Voice transcription uses [Whisper](https://openai.com/research/whisper) running locally via WebGPU. No audio is sent to any server or API. - **No tracking**: Zero analytics, telemetry, or third-party scripts. No Google Analytics, no cookies. - **No account required**: No registration, no login, no personal data collected. - **Open source**: The entire codebase is public under [AGPL-3.0](LICENSE). Anyone can audit it. ### How to verify Don't just trust us. Verify it yourself: 1. **Read the source code** Browse the [GitHub repository](https://github.com/rodrigogs/whats-reader). The main logic is in `src/lib/` and `src/routes/`. 2. **Check network requests** Open the browser's DevTools (F12) → Network tab → Use the app. You'll see **zero external requests** (except initial page load if using web version). 3. **Test offline** Disconnect from the internet, then use the app. Everything works because nothing requires a connection. 4. **Build from source** Clone the repo and build it yourself: ```bash git clone https://github.com/rodrigogs/whats-reader.git cd whats-reader npm install npm run build ``` 5. **Audit the Electron app** The desktop app uses the same web code. Check `electron/main.cjs` and `electron/preload.cjs`. They only handle window management and file dialogs. --- ## Development ### Scripts | Command | Description | |---------|-------------| | `npm run dev` | Start dev server at [localhost:5173](http://localhost:5173) | | `npm run build` | Build for production | | `npm run preview` | Preview production build | | `npm run check` | Type check with svelte-check | | `npm run check:watch` | Type check in watch mode | | `npm run lint` | Lint with Biome | | `npm run lint:fix` | Auto-fix lint issues | | `npm run format` | Format code with Biome | | `npm run electron` | Build and run Electron app | | `npm run electron:dev` | Run Electron in dev mode | | `npm run electron:build` | Build Electron installer | | `npm run electron:build:mac` | Build for macOS | | `npm run electron:build:win` | Build for Windows | | `npm run electron:build:linux` | Build for Linux | | `npm run machine-translate` | Auto-translate with inlang | ### Adding translations Translation files are in `messages/`. To add a new language: 1. Copy `messages/en.json` to `messages/{locale}.json` 2. Translate the strings 3. Add the locale to `project.inlang/settings.json` --- ## Built with - [SvelteKit](https://kit.svelte.dev) + [Svelte 5](https://svelte.dev) - Framework - [Tailwind CSS 4](https://tailwindcss.com) - Styling - [Electron](https://electronjs.org) - Desktop app - [Transformers.js](https://huggingface.co/docs/transformers.js) - Whisper AI for transcription - [JSZip](https://stuk.github.io/jszip/) - ZIP file handling - [Paraglide JS](https://inlang.com/m/gerre34r/library-inlang-paraglideJs) - Internationalization --- ## Contributing Found a bug or have an idea? [Open an issue](https://github.com/rodrigogs/whats-reader/issues) on GitHub. Want to contribute code? Fork the repo, make your changes, and open a pull request. There are example chat files in `examples/chats/` you can use for testing. --- ## Star History Star History Chart --- ## License [AGPL-3.0](LICENSE). You can use, modify, and distribute this software freely. If you modify it and run it as a service or distribute it, you must share your source code under the same license.