Introduction
OpenReader is an open-source text-to-speech document reader built with Next.js. It provides a multilingual read-along experience with narration for EPUB, PDF, TXT, MD, and DOCX documents.
Previously named OpenReader-WebUI.
It supports multiple TTS providers, including Kokoro running locally in OpenReader itself, OpenAI, Replicate, DeepInfra, the providers reached through Speech SDK, and custom OpenAI-compatible endpoints such as Kokoro-FastAPI, KittenTTS-FastAPI, Orpheus-FastAPI, and Supertonic.
🚀 Get OpenReader
| Option | Best for |
|---|---|
| Desktop app | One person on macOS, Windows, or Linux. Install and read: no server, Docker, or account. Download |
| Docker Compose | Self-hosting for yourself or several users, on a home server, NAS, or VPS |
| Vercel + compute worker | Hosting the web app on Vercel with an external worker |
| iPhone, iPad, and Mac | A separate native Swift app with on-device voices, in beta on TestFlight |
✨ Highlights
- ▶️ Progressive Background Generation and Playback
- Listening starts as soon as the first segment is ready while the worker generates ahead into one durable document timeline
- Cached audio is reused across seeks, reloads, and M4B/MP3 exports
- 🧱 Layout-aware PDF Parsing
- PP-DocLayoutV3 (ONNX) detects structured blocks with cross-page stitching and geometry-based highlighting for precise read-along sync and clean TTS segmentation
- ⏱️ Word-by-word Highlighting via ONNX Whisper alignment
- Powered by the embedded or standalone compute worker control plane (NATS JetStream-backed)
- 📚 Five Readable Formats
- Synchronized EPUB, PDF, TXT, MD, and worker-converted DOCX, with generated PDF/EPUB library previews
- 🎯 Multi-Provider TTS Support
- On-device: Kokoro (local) runs Kokoro-82M inside the compute worker, with no separate TTS service or API key
- Self-hosted: Kokoro-FastAPI (multi-voice combinations), KittenTTS-FastAPI, Orpheus-FastAPI, Supertonic, or any custom OpenAI-compatible endpoint
- Cloud: OpenAI (
tts-1,tts-1-hd,gpt-4o-mini-tts), Replicate (built-in catalog + any model ID), DeepInfra (Kokoro-82M and others), and ElevenLabs, Cartesia, Google, and more through Speech SDK
- 🌐 Multilingual Support
- Choose a document language for language-aware narration and highlighting
- Available languages depend on the configured provider, model, and voice
- 🎧 Audiobook Export in M4B or MP3, assembled by the worker from the same playback cache
- 🗂️ Flexible Backend — embedded SeaweedFS or S3-compatible storage, SQLite or Postgres, server library import, and device sync
- 💻 Desktop App for macOS, Windows, and Linux, with local voices and automatic updates
- 🔐 Auth and User Isolation — auth is required, with optional anonymous auth sessions for guest flows
- 🎨 Customizable — 12 built-in light and dark themes plus a custom theme, per-user TTS settings, and document handling controls
🧭 Key Docs
- Use it: Library, Reading and Listening, Audiobook Export, Keyboard Shortcuts
- Install it: Desktop App, Docker Quick Start, Docker Compose, Vercel + External Worker, Upgrade from v4
- Run it: Administration, TTS Providers, Environment Variables
Source Repository
- GitHub: richardr1126/openreader