Troubleshooting Guide

Kobo Web Reader Won't Read Aloud? Here's Why

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

Why Other Extensions Fail on Kobo

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.

The 4 Reasons Standard TTS Extensions Fail on Kobo

  • Each chapter is loaded into a separate same-origin iframe with srcdoc HTML. document.body of the outer page is mostly empty — the actual book text lives in iframe.contentDocument trees.
  • Kobo paginates each iframe's content into horizontal CSS columns. A long paragraph fragments across two or three columns; naive extractors read column 1, skip the fragment in column 2, and resume at column 3, scrambling the audio.
  • Kobo flips pages by applying CSS transform: translateX(...) to the iframe stack. Standard extensions detect viewport changes too late and read paragraphs that are already off-screen left.
  • Kobo provides no "read aloud" button, no accessibility API for TTS, and no audio export. The only path is to render the iframe contents and read them in the browser — exactly what 99% of TTS extensions cannot do.

Tested on Kobo Web Reader

Real test on a paid Kobo book at readnow.kobo.com — what actually plays audio

✗ Fails

Read Aloud (Chrome extension)

Returns the navigation menu only. Cannot reach iframe.contentDocument.

✗ Fails

Speechify

Plays nothing. Iframe srcdoc content not detected as readable.

✗ Fails

NaturalReader

Reads page chrome and stops. Cannot navigate iframe boundary.

✗ Fails

Microsoft Edge Read Aloud (built-in)

Greyed out — Edge cannot detect readable text on Kobo's iframe layout.

✗ Fails

Chrome Live Caption / Select to Speak (Chromebook)

Reads system UI text only, never the book.

✗ Fails

macOS / iOS Speak Screen

Reads visible text but doesn't recognize Kobo's column layout — fragments break sentences mid-word.

✓ Works

CastReader

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.

How CastReader Handles the Kobo Iframe Layout

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.

1

Iframe enumeration with reading-order sort

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.

2

Visible-iframe detection by intersection area

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.

3

Fragment-level anchor selection (≥50% rule)

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.

4

Cross-iframe TTS with continuous highlight tracking

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.

5

Forward-only pager (never roll back)

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.

Get CastReader Working on Kobo in 30 Seconds

1

Install the extension

From Chrome Web Store / Edge Add-ons / Firefox Add-ons. Free, no signup.

2

Open readnow.kobo.com

Sign in with your Kobo or Rakuten account, open any book in your library — paid, free preview, or library borrow.

3

Click the CastReader icon

Reading starts immediately. Paragraphs highlight as audio plays. Pages flip automatically when the read-head reaches the bottom.

Common Issues & Fixes

I clicked CastReader but nothing happens. Why?

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.

CastReader reads but pages don't flip automatically.

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.

Reading started in the middle of the chapter, not where I'm looking.

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.

The highlight disappears when a paragraph fragments across columns.

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.

Does CastReader work on the Kobo desktop app for Mac / Windows?

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.

I'm using Firefox. Does it work?

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.)

Audio works on the first page but stops after one or two flips.

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.

My Kobo book is in French / German / Japanese. Will it sound natural?

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.

Is CastReader an official Kobo product? Will it break my account?

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.

Can I use CastReader to listen to Kobo books on my phone for commute?

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.

Stop Fighting Kobo's Reader

Install once. Open any Kobo book. Press play. Done.