Screen reader
The Wholisphere screen reader is the heart of the product. It is designed to replace NVDA / JAWS / VoiceOver / ChromeVox for daily web use. This page is the deep dive.
If you only have a minute, the Getting started “Try the screen reader” section is a faster intro.
What it does
When you turn the screen reader on, Wholisphere:
- Builds a page-shape map of the current page (landmarks, headings, focusable elements, images, lists, tables, forms, live regions).
- For complex or unfamiliar pages, asks the cloud AI for a one-time understanding of what the page is about, what’s on it, and how it’s organized — used to make announcements smarter.
- Drops a cursor at the page’s most useful starting point (after the skip-link target if there is one, otherwise at the first meaningful focusable element — not H1, see below).
- Speaks the cursor’s element with a smart prefix: “Heading 2, Search results”, “Link, About us”, “Button, Submit”, “Image, Two cats sitting on a fence”. You can navigate by element kind, step by step, or read everything continuously.
The screen reader stays on across page navigations, SPA route changes, and tab switches until you turn it off.
Turning it on and off
In the popup, click Screen reader. Wholisphere announces “Screen reader on” and starts.
Click again to turn it off. Wholisphere announces “Screen reader off.”
The cursor
Wholisphere has its own cursor, separate from browser focus. The cursor is what’s currently being read. Browser focus is where your typing goes. They move together when you press Enter (activate) or Tab (explicit focus), but you can read ahead with arrow keys without losing focus inside a form field.
A green ring overlay shows the cursor’s location on the page. This overlay belongs to Wholisphere — it does not modify the host page’s DOM.
Modes
Two modes: Browse and Focus. Browse for reading, Focus for
typing. Toggle with \. Auto-switches when you focus a
contenteditable element.
The full explanation is in Modes. Read that page if you haven’t yet — it’s the single most useful concept for getting the most out of the screen reader.
Reading
| Press | What it does |
|---|---|
Tab / ↓ | Step to next element |
Shift+Tab / ↑ | Step to previous element |
Home | First element on page |
End | Last element on page |
Enter or Space | Activate (single-click) |
Shift+Space | Read continuously from here |
Ctrl+Shift+R | Read continuously from the top |
Ctrl+Space | Pause / resume |
Control | Stop reading |
Ctrl+Shift++ | Speak faster |
Ctrl+Shift+- | Speak slower |
A | Read everything |
S | Spell the current word |
Quick navigation
In Browse mode, single letters jump to the next element of that kind. Add Shift to jump backwards.
| Press | Element kind |
|---|---|
H | Heading (any level) |
1–6 | Heading at that level |
K | Link |
B | Button |
F | Form field |
T | Table |
L | List |
I | List item |
G | Image |
D | Landmark |
R | Region |
Tables
When the cursor lands on a table cell, you switch to grid navigation:
| Press | What it does |
|---|---|
Ctrl+Alt+→ | Next column |
Ctrl+Alt+← | Previous column |
Ctrl+Alt+↓ | Next row in same column |
Ctrl+Alt+↑ | Previous row in same column |
Wholisphere announces the column header on column changes and the row header on row changes — same as JAWS table-reading mode.
Modals and dialogs
When a modal opens, Wholisphere:
- Announces “dialog” and the dialog’s title.
- Restricts cursor navigation to elements inside the dialog until it closes (focus-trap behavior).
- Returns focus to the element that opened the dialog when it closes.
- Listens for Escape to close the dialog if a likely close-button exists in the dialog.
Forms
When you focus a form field:
- Wholisphere announces label, type, required state, current
value, and any associated description (
aria-describedby). - HTML5 validation errors and
aria-invalidare announced as they happen. aria-errormessagecontent is read so you know why the field is invalid.- The mode auto-switches to Focus on input/textarea/contenteditable so your typing reaches the page.
When you submit a form, any error summary that appears (a list of errors near the top) is announced via the live-region observer.
Images
For each image, Wholisphere does a smart cascade:
- If the image has good alt text, that’s spoken.
- If alt text is empty/missing or too short, and the image is meaningful (not decorative), Wholisphere captures it and asks the cloud vision model for a description.
- The result is cached per image so repeated visits don’t re-call the cloud.
You can also describe a specific image on demand with
Ctrl+Alt+D — see Vision tools → Describe image.
Live regions and status messages
Anything the page publishes through aria-live, role="status",
role="alert", or role="log" is observed automatically.
Polite live-regions are queued; assertive and alert regions
interrupt the current speech.
The standalone capability Status monitor (under Cognitive) also surfaces these in a side panel so you can review what was spoken — see Cognitive tools → Status monitor.
Carousels and dynamic widgets
Wholisphere recognizes common carousel patterns and announces
slide changes. ARIA tabs / tabpanels, ARIA tree (expand /
collapse), and aria-activedescendant-driven listboxes
(comboboxes, autocompletes) all flow correctly.
SPA navigation
Single-page apps that change the URL via history.pushState
(Gmail, GitHub, Slack, Linear, most modern apps) are detected.
Wholisphere announces the new page title and re-anchors the
cursor at the new content’s top, without re-running the heavy
LLM page-shape analysis (heuristic only is enough for in-app
nav).
What it does NOT do
This is important and explicit:
- It does not modify your page’s DOM or ARIA. No injected
alt text on
<img>, no patchedlangattributes, no syntheticaria-labelon host elements, no forced focus rings on the page. Wholisphere reads the page as a sighted user does and drives its own UI on top. - It does not feed traditional assistive technology. If you also have NVDA, JAWS, or VoiceOver running, Wholisphere does not pretend to be them or write into the accessibility tree for them. It speaks directly through the Web Speech API.
If you’d rather use the screen reader you already know, Wholisphere stays out of the way — turn off the Screen reader capability in the popup and use only the cognitive / vision / hearing helpers.
Performance and limits
- Page-shape scan runs once on page load (typically <500ms) and once on SPA route changes.
- LLM analysis runs at most once per page on activation (skipped on SPA in-app nav). Token-bounded; cheap pages cost ~1¢ in cloud spend on Wholisphere’s side.
- Per-image describe is cached; repeated views of the same image are free.
Troubleshooting
If the screen reader is silent, see Troubleshooting.
If the screen reader read the wrong thing, double-spoke, or landed on something unexpected, see Troubleshooting → Wrong-place issues.