Inspiration

Reading on the web is hostile to dyslexic readers. Small fonts, tight line-height, low contrast, cluttered layouts: every page forces readers to spend their energy decoding text instead of comprehending it. Roughly 15-20% of people are dyslexic, and millions more (concussion survivors, aging readers, anyone with cognitive fatigue) face the same daily tax.

We searched for tools that help. Every existing option is all-or-nothing: reader modes strip the page, screen readers read everything aloud in a robotic voice, and most "dyslexia extensions" send usage data to servers, inject remote fonts, and track reading habits. One of us reads with dyslexia plus a concussion history and couldn't find a single tool that worked on every page, learned from the words they struggled with, and never phoned home.

So we built it: ReadEasy. Reading shouldn't cost this much effort.

────────────────────────────────────────────────────────────────────────────────

What it does

ReadEasy is a Chrome/Edge Manifest V3 extension that detects the article on any page and rebuilds it in place into a dyslexia-friendly reading surface, keeping navigation, images, video, and links intact. One click (Ctrl+Shift+E) and the page transforms:

  • Adaptive typography: 4 bundled dyslexia-optimized fonts (Lexend, Atkinson Hyperlegible, OpenDyslexic), full control over size, line-height, letter- and word-spacing, and 4 WCAG-AA themes with auto dark-mode detection.
  • Syllable scaffolding: hard words are split into syllables with middle-dot separators, computed entirely on-device.
  • Synced read-aloud: word-by-word karaoke highlighting via the Web Speech API; the single strongest reading intervention in the literature.
  • Struggle log & slow deck: right-click any word to define it (offline dictionary), pronounce it, flag it, or send it to a spaced-repetition practice deck.
  • On-device AI: a tiny contextual-bandit model scores every word's difficulty using your own flag history. Your clicks ARE the training signal; the model never leaves your device.
  • Bonus modules: YouTube caption overlay, paste-any-text mode, and a high cognitive-load mode designed for concussion-friendly reading.

And the headline feature: zero network calls after install. No CDN, no analytics, no remote fonts, no account. Everything, from fonts and the dictionary to the model and your data, lives inside the extension. You can verify it yourself in DevTools → Network: the panel stays empty.

────────────────────────────────────────────────────────────────────────────────

How we built it

From scratch in six days, as two university students:

  • Manifest V3 with a service worker, content script, and side panel. Zero runtime dependencies, using vanilla JS and Web APIs only. No frameworks, no build step, no CDN.
  • Hyphenation-based syllabification: we ported Frank Liang's hyphenation algorithm (from TeX) to JavaScript so syllable splitting works fully offline with no dictionary download.
  • CSS-variable typography engine: beats site !important rules via specificity, so ReadEasy wins on every site without inline styles.
  • Privacy by architecture: we built a static-analysis test ( tools/zero-network-test.js ) that scans the source for any network call and fails the build if one sneaks in. That test removed our own Google Fonts call during development.
  • Validated on 50+ sites (NYT, Medium, Wikipedia, GitHub, Reddit, academic journals), axe-core scanned with 0 violations, <50ms added to page load.

────────────────────────────────────────────────────────────────────────────────

Challenges we ran into

  • Beating hostile site CSS. Sites fight back with !important . We solved it with a CSS-variable layer + higher-specificity rules that wins on 99% of pages without inline styles.
  • Offline syllable splitting. No dictionary, no cloud, so we ported Liang's algorithm and built an exception list for neologisms.
  • Synced read-aloud. Keeping the karaoke highlight locked to the spoken word required carefully handling the Web Speech API's boundary events and pausing on user interaction.
  • Single-page apps. Articles that re-render without navigation would lose the transformation, so we solved it with a MutationObserver that re-applies it.
  • The zero-network discipline. It's easy to add one font from Google Fonts. We wrote a test that refuses to let us. Privacy had to be architectural, not aspirational.
  • Scope discipline. We said no to eye-tracking, diagnosis, and cloud sync. The hardest decisions were the ones we didn't build.

────────────────────────────────────────────────────────────────────────────────

Accomplishments that we're proud of

  • Real on-device AI that respects you: a contextual bandit whose training data is the reader's own flags, with zero upload. Training is O(1), inference is O(words on page).
  • Auditable privacy: a judge (or anyone) can run node tools/zero-network-test.js and watch it print OK, or open DevTools and see an empty Network panel.
  • 10 working modules in 6 days, from scratch, no frameworks.
  • Accessibility as the product: WCAG-AA themes, full keyboard navigation, aria-live announcements, reduced-motion support, and 0 axe violations.
  • Reaching a real need: including a high cognitive-load mode shaped by concussion-alliance input, for readers adjacent to dyslexia who pay the same daily tax.

────────────────────────────────────────────────────────────────────────────────

What we learned

  • Privacy is a design constraint, not a feature: when every byte must live on-device, you make better engineering decisions.
  • Small on-device models are enough. You don't need a cloud LLM to help someone read; a 50-line bandit that learns from clicks can do real good with zero cost and zero privacy risk.
  • Depth beats breadth. A polished tool that does one thing beautifully beat a sprawling half-finished one.
  • Accessibility is a material, not a checklist: building for dyslexic readers made the typography better for everyone.
  • Hackathons are won in the scoping, not the sprinting: the zero-network test we wrote on day two is what makes the whole story credible.

────────────────────────────────────────────────────────────────────────────────

What's next for Readeasy

  • Firefox & Safari ports via the WebExtensions API
  • PDF support: inject into PDF viewers the same way we inject into articles
  • Opt-in, end-to-end-encrypted shared struggle logs for tutors and parents (only when the reader explicitly asks)
  • On-device ML syllabification for morphologically rich languages
  • Local-only reading analytics: WPM, fixation heatmaps, regression counts, all staying on the device

ReadEasy is MIT licensed and open source at github.com/radhika-verma06/readeasy. Co-created by Radhika Verma and Aryaman Sharma.

+ 7 more
Share this project:

Updates

Submission history