← All reviews

WebReader: a screen reader for everyone, everywhere

Aurelio De Rosa, Donovan Justice · 2016 · Proceedings of the 13th International Web for All Conference (W4A) · doi:10.1145/2899475.2899510

Summary

This extended abstract presents WebReader, a free and open source JavaScript library that implements a subset of screen reader features directly within web pages, requiring no software installation beyond a web browser. The project addresses two key limitations of traditional screen readers: they are tied to specific operating systems (limiting portability), and they must be installed on the user's machine (preventing use on shared or public computers). While cloud-based alternatives like WebAnywhere and the Farfalla project have tackled similar problems, WebReader takes a client-side approach built entirely on standard Web APIs. The library uses the W3C Web Speech API for both speech recognition (voice commands) and speech synthesis (reading content aloud), enabling keyboard and/or voice interaction. Users can navigate by headings (all or by specific level), browse links, read main content, and identify/focus the main content area. The interaction is fully asynchronous—users can continue interacting while speech processing occurs. Written in ECMAScript 2015 and transpiled to ECMAScript 5 for broader compatibility, the library supports multiple languages through the Web Speech API's built-in internationalization (Chrome alone supports 16+ languages).

Key findings

WebReader uses HTML semantic elements and WAI-ARIA roles/attributes to understand page structure, with heuristic fallbacks—for example, to find main content it first looks for a <main> element, then an element with role="main", then elements with class names containing "main-content" or "main". The Damerau-Levenshtein distance algorithm is employed to correct inaccurate speech recognition results, matching imprecise voice commands to the closest recognized command. The Web Speech API choice provides broad cross-browser support (Chrome, Firefox, Opera, Safari, iOS Safari, Chrome for Android) without requiring users to change browsers. Being a client-side library embedded in web pages, WebReader can access and manipulate the DOM but cannot interact with the operating system beyond browser-permitted features like vibrations and notifications. The project was explicitly positioned not as a replacement for full screen readers but as a complementary tool ensuring basic accessibility is available on any device with a browser, particularly useful when users cannot access their usual assistive technology setup.

Relevance

WebReader represents an interesting approach to democratizing basic screen reader functionality by shifting responsibility from the user (who must install and configure assistive technology) to the web developer (who embeds the library in their pages). This addresses real-world scenarios where blind users encounter public computers, borrowed devices, or unfamiliar operating systems without their usual assistive technology. The open source, standards-based approach also serves an educational purpose—web developers integrating WebReader must engage with semantic HTML and ARIA, potentially increasing accessibility awareness. However, the approach has significant limitations: it only works on pages where developers have explicitly included the library, it implements only a subset of screen reader features, and it cannot provide system-level accessibility. The project was at a very early stage with no user testing reported, and the fundamental question of whether website-embedded screen readers create a sustainable accessibility model (versus improving native assistive technology portability) remains open.

Tags: screen readers · web accessibility · JavaScript · Web Speech API · open source · assistive technology · speech synthesis · speech recognition

Standards referenced: WAI-ARIA · Web Speech API