Skip to content

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:

  1. Builds a page-shape map of the current page (landmarks, headings, focusable elements, images, lists, tables, forms, live regions).
  2. 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.
  3. 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).
  4. 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

PressWhat it does
Tab / Step to next element
Shift+Tab / Step to previous element
HomeFirst element on page
EndLast element on page
Enter or SpaceActivate (single-click)
Shift+SpaceRead continuously from here
Ctrl+Shift+RRead continuously from the top
Ctrl+SpacePause / resume
ControlStop reading
Ctrl+Shift++Speak faster
Ctrl+Shift+-Speak slower
ARead everything
SSpell the current word

Quick navigation

In Browse mode, single letters jump to the next element of that kind. Add Shift to jump backwards.

PressElement kind
HHeading (any level)
16Heading at that level
KLink
BButton
FForm field
TTable
LList
IList item
GImage
DLandmark
RRegion

Tables

When the cursor lands on a table cell, you switch to grid navigation:

PressWhat 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-invalid are announced as they happen.
  • aria-errormessage content 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:

  1. If the image has good alt text, that’s spoken.
  2. 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.
  3. 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 patched lang attributes, no synthetic aria-label on 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.