About ReadWave
Inspiration
Finding out whether a page is relevant is exhausting with a screen reader—you plow through navigation, ads, and pop-ups before hitting the first paragraph. I wanted a privacy-preserving way to surface a short, trustworthy summary immediately so blind and low-vision readers can triage pages quickly and move on if the article isn’t relevant.
What it does
ReadWave scans the current page for the dominant article text, generates a 2–4 sentence on-device summary using Chrome’s built-in AI, and injects it at the very top of the document inside an accessible region. Audio cues, an ARIA live region, and a keyboard shortcut make the experience fast and screen-reader friendly.
How I built it
- Architecture: Manifest V3 extension (service worker + content script + options page).
- Content extraction: Heuristics favor
<article>/<main>and long visible paragraphs, skippingaria-hidden, off-screen, and boilerplate sections. - AI pipeline: Prefer the Summarizer API when available; fall back to the Prompt API or language model surface—normalizing outputs so the UI stays consistent.
- Accessible injection: A summary card is inserted before
<main>(or top of<body>as a fallback) within
<section id="readwave-summary" role="region" aria-label="Page summary" aria-live="polite"></section>
It preserves focus, avoids layout shifts, and uses a shadow root to prevent CSS collisions.
- UX: Toolbar button, context-menu item, and
Ctrl+Shift+S/⌘⇧Sshortcut. Per-site settings are stored inchrome.storage.local. A small cache avoids re-summarizing unchanged pages. - Resilience:
MutationObserverre-validates the insertion on SPAs that reflow content.
Challenges I ran into
- Capability variance: API availability differs by Chrome version/flags, so I implemented capability detection and graceful degradation across Summarizer / Prompt / language model surfaces.
- Reliable extraction: Complex news layouts buried articles; I iterated on landmarks + visibility checks to avoid nav bars, comments, and paywall stubs.
- Accessible presentation: Injecting a summary without hijacking focus or clashing with site styles required careful ARIA, contrast, and theming decisions.
Accomplishments I'm proud of
- A working prototype that screen-reader users can trigger with a single shortcut and get immediate audio/voice feedback.
- A fully on-device pipeline—no page content leaves the browser.
- A summary card that feels native on modern sites while remaining robust and compliant with accessibility semantics.
What I learned
- How Chrome’s built-in AI surfaces differ and why capability detection is essential.
- Practical techniques to extract readable text without heavy libraries while respecting ARIA landmarks and reading order.
- The power of small affordances (tones, polite live regions, scroll margins) to make assistive experiences delightful, not just functional.
What’s next for ReadWave
- Image-aware summaries: incorporate captions/alt text and, when permitted, image context.
- Smarter caching: revalidate with ETag/last-modified and SPA-aware diff detection.
- Customization: per-site auto-summarize rules, TL;DR length presets, and optional translate-then-summarize flow using Chrome’s Translator API.
- Shareability: copy/share summary and minimal provenance (“sections used”) for trust.
Built With
- chrome-built-in-ai-(summarizer-api
- chrome-extensions-(manifest-v3)
- css
- eslint
- html
- javascript
- prompt-api)
- typescript
- vite
- web-accessibility-(wai-aria)

Log in or sign up for Devpost to join the conversation.