Windows Narrator and Edge With Data Grids
Permalink to "Windows Narrator and Edge With Data Grids"Narrator is the screen reader built into Windows. It is rarely the primary tool of experienced screen reader users, who mostly use NVDA or JAWS, but it is the one available on every Windows machine without installation — on locked-down corporate laptops, on shared devices, and for people who have recently lost sight. Its table and grid behaviour in Edge is close to NVDA’s and JAWS’s in principle and different in the details: its own keys, its own “scan mode”, and its own verbosity choices.
This page describes how Narrator reads data tables and grids in Edge, how to test with it, and which differences are worth fixing. It belongs to assistive technology behaviour differences.
Spec reference
Permalink to "Spec reference"Narrator uses the UI Automation (UIA) accessibility API, which Edge and Chrome implement. It reads the same roles, names, states and relationships as other screen readers, mapped through UIA patterns:
- Tables and grids expose the UIA Table and Grid patterns; header relationships come from
th/scope,headers, orcolumnheader/rowheaderroles. aria-sortmaps to UIA properties Narrator reads on header cells.- Live regions map to UIA LiveRegionChanged events; Narrator honours polite and assertive.
Narrator’s scan mode (toggled with Caps Lock+Space or Insert+Space) is its browse mode: arrow keys read the page. It turns off automatically on many interactive controls and composite widgets; when it is on, arrow keys do not reach the page’s scripts.
Criteria are the same as for any screen reader: SC 1.3.1, 4.1.2 and 4.1.3 are where Narrator differences show up.
When Narrator testing matters — and how much
Permalink to "When Narrator testing matters — and how much"Include Narrator in the audit matrix for products used on managed Windows fleets — enterprise tools, government services, education platforms — where installing NVDA may be blocked, and in any product whose users include people new to screen readers.
It does not need to be in every per-pull-request smoke test. A per-release manual pass over the critical data journeys is usually enough, because most Narrator failures share causes with NVDA and JAWS failures.
The misapplication to name is treating Narrator differences as bugs to work around with Narrator-specific markup. The fix for a Narrator problem is almost always correct, standard semantics; Narrator-specific hacks tend to break NVDA or JAWS.
Annotated code example
Permalink to "Annotated code example"Narrator + Edge test script for an interactive data grid
1. Ctrl+Win+Enter → Narrator on
2. Load the page in Edge; press H until "Open invoices" heading is read
3. Tab into the grid → expect: "Open invoices, grid, …, INV-1042, row 1, column 1"
(scan mode should switch off; if not, Caps Lock+Space)
4. Right Arrow ×2 → expect: "Due, 2026-03-04" (column header then value)
5. Down Arrow → expect: "row 2, 2026-03-09"
6. Tab to the Amount sort button, Enter
→ expect: "Amount, sorted ascending" then the status message
7. Type in the filter field → expect: one count message after typing stops
8. Caps Lock+Space (scan mode on); Ctrl+Alt+Down
→ expect: table navigation works in scan mode for a static table
Record: exact strings, any missing header, any extra "clickable" or "group" noise
<!-- What makes step 3 work: a named grid with proper header roles -->
<div role="grid" aria-labelledby="inv-h" aria-rowcount="241">
<div role="row" aria-rowindex="1">
<div role="columnheader">Invoice</div>
<div role="columnheader" aria-sort="none"><button type="button">Amount</button></div>
</div>
<div role="row" aria-rowindex="2">
<div role="rowheader" tabindex="0">INV-1042</div>
<div role="gridcell" tabindex="-1">1,280.00</div>
</div>
</div>
Narrator tends to announce “clickable” for elements with click handlers but no role — a useful signal that a <div onclick> has crept into a grid. Treat “clickable” in a Narrator transcript as a finding.
Keyboard & AT behaviour
Permalink to "Keyboard & AT behaviour"| Key | Narrator result | Difference from NVDA/JAWS |
|---|---|---|
Caps Lock+Space |
Toggle scan mode | NVDA: Insert+Space; JAWS: Insert+Z or automatic |
Ctrl+Alt+Arrows (scan mode, table) |
Move by cell with headers | Same keys as NVDA and JAWS |
T (scan mode) |
Next table | Same as NVDA; JAWS also T |
Tab into role="grid" |
Scan mode usually turns off | NVDA/JAWS switch reliably; confirm with Narrator |
| Polite status update | Read after current speech | Narrator sometimes reads it before finishing the focused item |
Caps Lock+F1 on an element |
Detailed element info | Useful for checking names and roles |
Integration context
Permalink to "Integration context"Narrator’s scan mode is the same concept as NVDA’s browse mode and JAWS’s virtual cursor; the implications for grids — why arrow keys sometimes never reach your handler — are explained in JAWS virtual cursor versus forms mode in data grids. Sort announcement differences across readers are compared in NVDA versus JAWS aria-sort announcement differences.
Whether a component should be a grid at all — and therefore whether mode switching happens — is covered in choosing between grid and table roles.
Gotchas
Permalink to "Gotchas"Chrome versus Edge. Narrator works in Chrome too, but Edge is the default on Windows and the combination most Narrator users have. Test Edge first.
Narrator versions. Narrator improves with Windows feature updates; record the Windows build with every transcript.
Keyboard layout. The Narrator key can be Caps Lock, Insert, or both depending on settings. Write test scripts that mention both.
Design system notes
Permalink to "Design system notes"Add a Narrator + Edge column to the component library’s AT support matrix, with the date and Windows build of the last check. Flag components where Narrator needs a manual scan-mode toggle so product teams can mention it in help content if needed.
Testing checklist
Permalink to "Testing checklist"FAQ
Permalink to "FAQ"Should data grids be tested with Windows Narrator?
Yes, at least per release for products used on managed Windows devices or by people new to screen readers. Narrator is available on every Windows machine without installation.
What is Narrator's scan mode?
Narrator’s equivalent of NVDA’s browse mode or JAWS’s virtual cursor. Arrow keys read the page instead of reaching its scripts. It is toggled with Caps Lock plus Space and usually turns off automatically in interactive widgets.
Why does Narrator say "clickable" on my grid cells?
Because the elements have click handlers but no interactive role. Give cells and controls proper roles — gridcell, button — so Narrator and other readers announce what they are.
Do I need Narrator-specific markup?
No. Fix differences by making the markup correct and standard; Narrator-specific workarounds tend to break other screen readers.
Related
Permalink to "Related"- JAWS virtual cursor versus forms mode — the JAWS equivalent of scan mode
- NVDA versus JAWS aria-sort — sort announcements compared
- Choosing between grid and table — why mode switching happens