Kobo's browser reader at readnow.kobo.com renders each chapter as a separate iframe with srcdoc HTML — every standard TTS extension reads document.body, finds nothing, and gives up. There's exactly one extension that handles this layout correctly.
Chrome / Edge / Firefox · No signup · No Kobo Plus needed
If you have already tried Read Aloud, Speechify, NaturalReader, or built-in browser TTS on readnow.kobo.com, you have probably seen one of these symptoms: dead silence after pressing play, the extension reading just the navigation chrome ("Library — Search — Settings"), audio that stops at the end of the first paragraph, or pages that don't auto-flip so you have to click next every minute. They all stem from the same root cause.
Real test on a paid Kobo book at readnow.kobo.com — what actually plays audio
Returns the navigation menu only. Cannot reach iframe.contentDocument.
Plays nothing. Iframe srcdoc content not detected as readable.
Reads page chrome and stops. Cannot navigate iframe boundary.
Greyed out — Edge cannot detect readable text on Kobo's iframe layout.
Reads system UI text only, never the book.
Reads visible text but doesn't recognize Kobo's column layout — fragments break sentences mid-word.
Walks all same-origin iframes, finds the iframe currently visible to the user, locates the first paragraph that is actually onscreen (≥50% of fragment), then reads forward across iframe boundaries with paragraph-level highlight tracking and automatic next-page button presses.
Kobo's reader is unusual — most TTS extensions were never built for an EPUB-in-iframe spread reader. CastReader was rewritten specifically for this layout in early 2026.
Walk every same-origin iframe in the page, skip iframes with cross-origin contentDocument or fewer than 50 characters of content, then sort by visual position (top-to-bottom, left-to-right). Kobo loads up to ~13 chapters as preloaded iframes — they need to be in the user's reading order, not DOM order.
Kobo is a horizontal spread reader — iframes are translated via CSS transform across the viewport when you flip pages. Pick the iframe whose intersection area with the outer viewport is largest, not the one closest to (0, 0). This is what makes the read-from-here experience match what your eyes actually see.
Within the visible iframe, find the first paragraph whose at-least-one fragment occupies ≥50% of its width and height inside the outer viewport. CSS columns can fragment one <p> across two columns; choosing by bounding rect would falsely report a column-1 paragraph as visible because part of it peeks past the column gap.
Read paragraphs across iframe boundaries with no audio gap. The paragraph-level highlight follows the audio cursor in real-time. When the highlight enters a paragraph whose last fragment is about to leave the viewport, the orchestrator clicks Kobo's next-page button automatically.
During Kobo's transform animation, paragraphs can briefly straddle two pages with negative coordinates. CastReader's pager only flips forward — it never pulls the viewport backwards to chase a stale highlight, which would leave you confused about where you are in the book.
From Chrome Web Store / Edge Add-ons / Firefox Add-ons. Free, no signup.
Sign in with your Kobo or Rakuten account, open any book in your library — paid, free preview, or library borrow.
Reading starts immediately. Paragraphs highlight as audio plays. Pages flip automatically when the read-head reaches the bottom.
First check that you're on readnow.kobo.com (not the Kobo store page or library landing). The reader needs an actual book open. If you're inside a book and still nothing happens, check that the book has finished loading — Kobo lazy-loads the iframe srcdoc content. Wait until you can scroll through the page with text, then click again.
The auto-pager kicks in only when the currently-highlighted paragraph's last fragment is about to leave the viewport. If you're using a very short Kobo book or just opened to the title page, there may not be enough content to trigger pagination. Open a chapter with full body text and the pager will flip pages forward as needed.
CastReader picks the first paragraph that's at least 50% visible in your current viewport. If you opened to a place where two paragraphs are partially visible, it picks the one with higher coverage. Scroll until the paragraph you want is fully visible, then click CastReader again — it will start there.
This was a bug we fixed in CastReader 1.0.5+. Make sure you're on the latest version — the fix uses every fragment's client rect (not the union bounding box) when checking visibility. If you're still seeing it, please report the book title and chapter.
No. The Kobo desktop app uses an embedded WebKit / Chromium webview that browser extensions cannot inject into. The fix: open the same book on readnow.kobo.com in Chrome, Edge, or Firefox — your library and reading position sync automatically.
Yes. CastReader for Firefox handles Kobo's iframe layout the same way as Chrome. Install from Firefox Add-ons. (Note: some main-world content scripts that work in Chrome via world:'MAIN' are injected via <script> tag in Firefox; functionally identical.)
Most often this means Kobo's iframe content for later chapters hadn't fully loaded when you started. CastReader handles this by extracting paragraphs progressively across the visible iframe slice — but if Kobo deletes earlier iframes to save memory while you're reading, the audio stream may end. Refresh the page and start fresh from the page you stopped at.
Yes — CastReader auto-detects the book's language from the EPUB metadata's <html lang> attribute. It supports natural AI voices in 40+ languages including French, German, Italian, Spanish, Portuguese, Dutch, Polish, Czech, Japanese, Mandarin Chinese, and Korean.
No — it's a third-party browser extension developed independently. It does not log into your Kobo account, modify your library, or send data to Kobo. It only reads the rendered text inside the iframe (the same text your eyes see) and uses your speakers to play audio. It cannot break, suspend, or affect your Kobo account in any way.
Yes. CastReader's Send-to-Phone feature streams the audio from your desktop browser to a private Telegram bot. The desktop continues to flip pages automatically while you listen on your phone — no Kobo Plus Listen subscription needed.
Install once. Open any Kobo book. Press play. Done.
Complete Kobo TTS landing — every device, every method
In-depth blog post on Kobo TTS in 2026
Sister troubleshooting page for Amazon Kindle in browser
Mac native app TTS via desktop integration