This codebase has been tested on Linux (Debian) with Chromium and Firefox only. If you encounter issues with other browsers or operating systems, please open an issue and I'll try to help.
Features
- Local and private — synthesis runs on your machine; nothing is sent to the cloud
- Popup — paste text, pick voice and speed, play/pause/stop
- Read anywhere — select text on any page → right-click → Read with Kokoro
- Read page — read the main page content from the context menu, popup, or read-along sidebar
- Read-along sidebar — follow along while text is spoken (Firefox sidebar / Chrome side panel)
- Flexible setup — works with your existing
kokoro-ttsinstall and model files
Select text → Read with Kokoro, or open the read-along sidebar to read the full page.
See our Privacy Policy — no cloud, no analytics, no data sent to the developer.
Installation
Browser Store
Install from Firefox Add-ons or the Chrome release (use the badges at the top), restart your browser, and open the extension.
Direct Install
Prefer not to use a browser store? Download the extension zip from GitHub Releases (kokoro-web-*-firefox.zip or kokoro-web-*-chrome.zip), extract it, and load it manually.
Firefox: open about:debugging → This Firefox → Load Temporary Add-on… → select manifest.json inside the extracted folder.
Chromium: open chrome://extensions → enable Developer mode → Load unpacked → select the extracted folder.
If you have not run setup yet, register the native host once (covers Firefox and Chrome):
kokoro-web-setup
Restart the browser, open the extension, and click Test connection.
Quick start
Step 1 — Install kokoro-tts and model files
uv tool install kokoro-tts
mkdir -p ~/.kokoro && cd ~/.kokoro
wget https://github.com/nazdridoy/kokoro-tts/releases/download/v1.0.0/voices-v1.0.bin
wget https://github.com/nazdridoy/kokoro-tts/releases/download/v1.0.0/kokoro-v1.0.onnx
Step 2 — Install the browser bridge
uv run pip install kokoro-web
uv run kokoro-web-setup
The setup command registers the native host for browsers it detects (Firefox, Chrome, Chromium, Edge, Brave). To install for a specific browser, use the corresponding command below:
Browser Command Firefox uv run kokoro-web-setup firefoxChrome uv run kokoro-web-setup chromeChromium uv run kokoro-web-setup chromiumEdge uv run kokoro-web-setup edgeBrave uv run kokoro-web-setup braveTo register the native host for all supported browsers, use:
uv run kokoro-web-setup --all
Step 3 — Install the extension
Install from Firefox Add-ons or the Chrome release (use the badges at the top), restart your browser, and open the extension.
The first time you open it, click Test connection. If setup succeeded, you can paste text and press Play.
Usage
| Where | What you can do |
|---|---|
| Popup | Paste text, choose voice/speed, play/pause/stop, Read page |
| Context menu | Select text → Read with Kokoro, or Read page with Kokoro |
| Read-along sidebar | Read page aloud, play/pause/stop, search and follow along in text |
Advanced paths
Open extension Settings → Advanced paths if kokoro-tts is not on your PATH or models live somewhere other than ~/.kokoro. The bridge auto-detects common locations when possible.
Why is a bridge required?
Browsers cannot run local programs directly from an extension (security). The kokoro-web pip package registers a tiny native messaging host that forwards requests to your installed kokoro-tts and streams audio back to the browser.
flowchart LR
Extension["Browser extension"] -->|"native messaging"| Host["kokoro-web host"]
Host --> CLI["kokoro-tts CLI"]
CLI --> Audio["Audio stream"]
Audio --> Extension
Firefox and Chrome use the same Python host script. They only differ in where the registration JSON file is stored.
Troubleshooting
Setup command not run
If the extension shows "One-time setup required", run:
pip install kokoro-web && kokoro-web-setup
By default, setup registers only browsers it detects on your system. To force a specific browser:
kokoro-web-setup edge
To register every supported browser:
kokoro-web-setup --all
Restart the browser, then click Test connection.
Verify native host registration
Firefox (Linux):
cat ~/.mozilla/native-messaging-hosts/com.kokoro.web.json
Firefox (macOS):
cat ~/Library/Application\ Support/Mozilla/NativeMessagingHosts/com.kokoro.web.json
Chrome or Chromium (Linux):
cat ~/.config/google-chrome/NativeMessagingHosts/com.kokoro.web.json
Chrome (macOS):
cat ~/Library/Application\ Support/Google/Chrome/NativeMessagingHosts/com.kokoro.web.json
Chrome (Windows):
reg query "HKCU\Software\Google\Chrome\NativeMessagingHosts\com.kokoro.web"
If you upgraded from an older release, you can remove the legacy Firefox manifest:
rm -f ~/.mozilla/native-messaging-hosts/com.kokoro.web_addon.json
kokoro-tts works in terminal but not the extension
- Confirm model files are in the configured model directory
- Open Settings → Advanced paths and set the full path to your
kokoro-ttsbinary - Click Test connection again
Developers
Want to run the extension from source, change the bridge, or contribute?
See developer guide for prerequisites, setup, and the local development workflow. Pull requests are welcome.
Metadata
Release files for kokoro-web 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| kokoro_web-0.1.1.tar.gz | 17.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| kokoro_web-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 38.0 kB
Release files / kokoro_web-0.1.1.tar.gz
| Download URL | kokoro_web-0.1.1.tar.gz |
|---|---|
| Size | 17.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c5ed891bcecda04b645f3a595d67914ae9ac6802ff6f66fdb8714d696d077345
|
|
BLAKE2b-256 checksum How to use checksums |
fce80102a409bb941d3b2da9900715286661221e82934a3183b0b031de0f9648
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 4, 2026.
Transparency logRelease files / kokoro_web-0.1.1-py3-none-any.whl
| Download URL | kokoro_web-0.1.1-py3-none-any.whl |
|---|---|
| Size | 20.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
efa6dd20bc8b451cf73cfaa7243018bc05c122fff5735bb9b45dd9e872c25ae2
|
|
BLAKE2b-256 checksum How to use checksums |
2d1c26ae4a94b82fb5092f897c88bce90a69cfce35843ec1c65c18d4d1f97ba2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 4, 2026.
Transparency log