JAWS Screen Reader Testing: The Complete Guide
JAWS is the screen reader your enterprise and government users are most likely running — and you can test with it today without buying a license. This guide covers the JAWS key, the Virtual Cursor and Forms Mode, quick navigation keys, and a repeatable testing workflow, with full command cheat sheets mapped to WCAG 2.2 AA.
Why Test with JAWS
A screen reader turns the visual interface into speech and braille. It reads out headings, links, buttons, form labels, and status messages, and lets the user navigate by those structures instead of by sight. If your markup is wrong — a button with no name, a table with no headers, an update that never announces — the screen reader has nothing meaningful to say, and the feature is unusable no matter how good it looks.
JAWS (Job Access With Speech), from Freedom Scientific, is the longest-established Windows screen reader and has consistently been among the most used in WebAIM’s screen reader user surveys. It is especially entrenched in the environments where accessibility is legally required — government, higher education, banking, healthcare, and large enterprises, where it is often the standard-issue assistive technology. If your audience includes those users, testing with NVDA alone does not cover them.
JAWS also has a testing personality worth knowing about: it is aggressive about inference. It works hard to guess what an author meant, which is wonderful for its users and slightly dangerous for you — JAWS can quietly paper over sloppy markup that NVDA or VoiceOver read literally and get wrong. That cuts both ways. Something that fails in JAWS is almost certainly broken; something that passes in JAWS is not automatically fine elsewhere. Automated scanners like axe and WAVE catch roughly a third of issues; the rest needs a human listening. This guide is the JAWS-specific companion to our VoiceOver testing guide and our broader screen reader testing guide.
1. Install JAWS & Configure It for Testing
JAWS is commercial software, but you do not need a license to test with it — and that surprises a lot of teams into skipping JAWS entirely.
Getting a copy
- Download JAWS from Freedom Scientific. It is Windows only.
- Unlicensed, it runs in 40-minute demo mode — fully functional, then restart Windows for another 40 minutes. That is enough for a testing pass.
- A Home Annual License covers personal, non-commercial use cheaply; organizations need a professional license.
- No Windows machine? Use a VM or a cloud Windows desktop.
Configure before you test
- Pick your keyboard layout: Desktop (JAWS key =
Insert) or Laptop (JAWS key =CapsLock). Laptops have no Insert key or numpad — choose Laptop. - Test in Chrome, the most common JAWS pairing. Edge behaves nearly identically.
- Slow the speech rate down at first (
JAWS+VQuick Settings) — default JAWS speech is fast. - Press
Ctrlanytime to silence speech.
One practical tip: turn on Speech History (JAWS+Space, then H) early. It shows you a transcript of what JAWS just spoke, which is invaluable when a live region fires once and you are not sure whether you actually heard it.
2. The JAWS Key, the Virtual Cursor, and Forms Mode
Two concepts explain most of how JAWS works. Get these right and the rest of the commands fall into place — and one of them is the source of the most common JAWS-only bug you will find.
The JAWS key
Most commands start with the JAWS key, which depends on your layout setting:
- Desktop layout:
Insert - Laptop layout:
CapsLock
So JAWS+F6 means Insert+F6 or CapsLock+F6. If cheat sheet commands are not working, a mismatched layout is almost always why.
Virtual Cursor vs Forms Mode
- Virtual Cursor — reading mode. Arrow keys and single-letter quick nav keys (
H,B,F) move you through a virtual copy of the page. - Forms Mode — interaction mode. Keystrokes pass through to the control so you can type.
JAWS enters Forms Mode automatically on a text field, or on Enter. Leave it with Numpad Plus or Escape.
Here is why this matters more than any other JAWS concept. In the Virtual Cursor, pressing B jumps to the next button — it does not type the letter B. So if you build a custom text input or combo box that JAWS does not recognize as a form control, JAWS never switches to Forms Mode, and every letter the user types teleports them somewhere else on the page instead of entering text. The widget looks fine, passes an automated scan, works with a mouse — and is completely unusable. That failure mode is the single best reason to test with JAWS specifically, and it comes down to giving controls a role JAWS understands. See the ARIA roles & attributes reference and the focus management guide.
3. Quick Navigation Keys (Cheat Sheet)
Single letters that jump between element types. These work when the Virtual Cursor is active — not in Forms Mode. Add Shift to go backwards. This is how a JAWS user actually moves around a page, so it is also the fastest way to audit whether your structure exists at all.
| Key | What it does |
|---|---|
H / Shift+H | Next / previous heading |
1 – 6 | Next heading at that level (Shift for previous) |
R / Shift+R | Next / previous region (landmark) |
K / Shift+K | Next / previous link |
B / Shift+B | Next / previous button |
F / Shift+F | Next / previous form field |
E / Shift+E | Next / previous edit box |
X / Shift+X | Next / previous checkbox |
C / Shift+C | Next / previous combo box |
T / Shift+T | Next / previous table |
L / Shift+L | Next / previous list |
G / Shift+G | Next / previous graphic |
If H finds no headings, R finds no regions, or B skips a control that looks like a button, you have found a real structural defect — not a JAWS quirk.
4. Essential JAWS Commands (Cheat Sheet)
JAWS below means the JAWS key — Insert in the Desktop layout, CapsLock in the Laptop layout. These commands cover almost everything you need to test a web page.
| Command | What it does |
|---|---|
JAWS+Down Arrow | Say All — read continuously from the cursor |
Ctrl | Stop speech immediately |
Tab / Shift+Tab | Move to the next / previous focusable control |
JAWS+Tab | Say the currently focused control (name, role, state) |
Enter | Activate the control, or enter Forms Mode on a field |
Numpad Plus | Leave Forms Mode, return to the Virtual Cursor |
JAWS+Z | Toggle the Virtual Cursor on or off |
JAWS+F6 | Headings List — the page outline |
JAWS+F7 | Links List |
JAWS+F5 | Form Fields List |
JAWS+F9 | Frames List |
JAWS+F3 | Virtual HTML Features — every element list in one dialog |
JAWS+T | Read the page title |
JAWS+B | Read the active window or dialog from top to bottom |
JAWS+F1 | Screen-sensitive help for the current control |
JAWS+Space, then H | Open Speech History — re-read what JAWS just said |
JAWS+V | Quick Settings for the current application |
JAWS+F12 | Toggle verbosity / speech on many builds — check Quick Settings |
To learn what any key does without triggering it, turn on keyboard help with JAWS+1 and press keys freely; press JAWS+1 again to leave. Command sets do shift slightly between JAWS releases — the authoritative list is always in the JAWS Help menu on the version you have installed.
5. Audit Structure with the JAWS Lists
JAWS can dump every element of a given type into a dialog. Open each list and read it as if it were the page’s table of contents — this is exactly how a JAWS user surveys an unfamiliar page, and it takes about ninety seconds.
- Headings List (
JAWS+F6). Confirm there is exactly one<h1>, that levels do not skip, and that the outline alone tells you what the page is about. Maps to 1.3.1 Info and Relationships. - Links List (
JAWS+F7). Read out of context, every link should still make sense — no wall of “click here” or “read more” (2.4.x link purpose). This list is the single most damning view of lazy link text. - Form Fields List (
JAWS+F5). Every field should show a real label, not “edit.” Cross-check with the accessible forms guide. - Virtual HTML Features (
JAWS+F3). One dialog with every element type — regions, lists, tables, buttons, graphics. Check that banner, navigation, main, and contentinfo regions all exist.
6. A Repeatable JAWS Testing Workflow
Run this pass on every key page or flow. It fits comfortably inside one 40-minute demo session.
- Check the page title. Press
JAWS+T. It should be unique and describe the page, not just the site name. - Survey the structure. Open the Headings List (
JAWS+F6), then Links (JAWS+F7), then regions viaJAWS+F3. - Read it all. Press
JAWS+Down Arrowto Say All from the top. Note anything that sounds wrong — an image reading its file name, a button that says only “button,” content in the wrong order. - Walk it with quick nav keys. Press
Hrepeatedly, thenB, thenF. Every heading, button, and field should announce a name and a role. - Tab through it. Now use
Tabonly. The order should be logical, andJAWS+Tabshould announce a sensible name, role, and state for each stop. - Operate each widget — and watch Forms Mode. Open menus, toggle disclosures, type into custom inputs. If typing jumps you around the page, JAWS never entered Forms Mode and the widget is broken.
- Trigger dynamic changes. Submit a form with an error, add to cart, filter a list. JAWS should announce the change without you moving focus — that is 4.1.3 Status Messages. Verify in Speech History if unsure.
- Check modals and focus. When a dialog opens,
JAWS+Bshould read it; focus should move into it, stay trapped, and return to the trigger on close.
Common JAWS Findings & How to Fix Them
These are the problems JAWS surfaces most often. Each one is a real WCAG failure that automated tools frequently miss or can only partially detect.
| What you hear | Why it fails | The fix |
|---|---|---|
| A <div onclick> that JAWS skips entirely with the B quick nav key. | It has no button role and is not focusable, so it is invisible to a screen reader (WCAG 2.1.1, 4.1.2). | Use a real <button>. If you cannot, add role="button", tabIndex, and key handlers. |
| A custom widget where typing does nothing — letters jump you around the page instead. | JAWS never entered Forms Mode, so quick nav keys consumed the keystrokes (WCAG 2.1.1, 4.1.2). | Give the widget a role that triggers Forms Mode (textbox, combobox, listbox) and manage focus into it. |
| A field JAWS announces as just "edit" with no label. | Unlabeled input — the user does not know what to type (WCAG 1.3.1, 4.1.2). | Associate a <label> with for/id, or use aria-label / aria-labelledby. |
| An error appears on submit but JAWS says nothing. | The update is not in a live region (WCAG 4.1.3 Status Messages). | Render errors into an aria-live="assertive" or role="alert" container, or move focus to the summary. |
| A data table where JAWS reads cell values with no column context. | Missing header association, so relationships are lost (WCAG 1.3.1). | Use <th scope="col">/<th scope="row">, and a <caption> naming the table. |
| The Headings List (JAWS+F6) is empty or shows one flat level. | Styled <div>s instead of real headings — no structure to navigate (WCAG 1.3.1, 2.4.6). | Use <h1>–<h6> in a logical, non-skipping order. |
Fixing most of these comes down to correct roles, names, and states — verify them programmatically under 4.1.2 Name, Role, Value. When you report a JAWS bug, always name the JAWS version and the browser: behavior is a product of both working together, and a report without them is often unreproducible.
What JAWS Testing Verifies in WCAG 2.2
| Criterion | Level | What JAWS reveals |
|---|---|---|
| 1.1.1 Non-text Content | A | Graphics announce meaningful alt text, not file names. |
| 1.3.1 Info and Relationships | A | Headings, lists, and table headers appear in the JAWS lists. |
| 2.1.1 Keyboard | A | Every control is reachable and operable — including in Forms Mode. |
| 2.4.3 Focus Order | A | Tabbing follows a logical, meaningful order. |
| 4.1.2 Name, Role, Value | A | Controls announce a name, role, and current state via JAWS+Tab. |
| 4.1.3 Status Messages | AA | Dynamic updates are announced without moving focus. |
See the full picture in the WCAG 2.2 Level AA requirements and track your coverage with the WCAG 2.2 checklist.
JAWS vs NVDA in brief
- Both are Windows-only. JAWS is paid (40-min demo); NVDA is free.
- JAWS key is Insert/CapsLock; NVDA key is Insert/CapsLock too — but commands differ.
- JAWS “Virtual Cursor / Forms Mode” ≈ NVDA “browse / focus mode.”
- JAWS infers more from imperfect markup; NVDA is more literal. Test both.
- JAWS dominates enterprise and government; NVDA is common everywhere else.
See the NVDA testing guide for the free alternative.
Test the keyboard first
- A screen reader relies on the keyboard working.
- If Tab cannot reach a control, JAWS will struggle too.
- Fix keyboard operability before chasing speech bugs.
Start with the keyboard accessibility guide.
JAWS Testing Checklist
- Setup. JAWS installed (demo mode is fine), keyboard layout matches your hardware, testing in Chrome, Speech History available.
- Title & structure. Unique page title; one
<h1>; heading levels do not skip; regions present inJAWS+F3. - Names & roles. Every link, button, and field announces a clear name and role — no bare “button” or “edit.”
- Quick nav.
H,B,F, andRall find what they should — nothing structural is missing. - Forms Mode. Every text input and custom widget lets you actually type; no keystroke ever teleports you across the page.
- Tables. Data tables announce column and row headers with each cell.
- Dynamic updates. Errors, cart counts, and filter results are announced — confirmed in Speech History.
- Dialogs. Focus moves into modals, is trapped, and returns to the trigger on close.
- Cross-check. Anything that passes only in JAWS re-verified in NVDA or VoiceOver, since JAWS is the most forgiving of the three.
Scan Before You Listen
Automated scanning clears the obvious issues so your 40-minute JAWS session is spent on the problems only a human can hear. Run a free axe-core scan first, then work through the JAWS pass above.
Frequently Asked Questions
Is JAWS free, and how can I test with it without buying a license?▾
JAWS is commercial software from Freedom Scientific and is not free, but you do not need to buy a license to test with it. JAWS runs in a 40-minute demo mode: install it, use it fully for 40 minutes, then restart Windows to get another 40 minutes. That is enough for most testing passes, and it is how many teams do their JAWS verification. Freedom Scientific also offers a Home Annual License for personal, non-commercial use at a much lower cost than a professional license. If you are testing on behalf of an organization, the professional license is the correct route, and many enterprises and government agencies already own one.
Why test with JAWS if NVDA is free?▾
Because your users are on JAWS. In WebAIM's screen reader user surveys, JAWS has consistently been among the most used screen readers, and it is dominant in exactly the environments where accessibility is legally required — government agencies, universities, banks, healthcare, and large enterprises where it is the standard-issue assistive technology. More importantly, JAWS and NVDA do not behave identically: they differ in how they interpret certain ARIA patterns, how aggressively they switch into Forms Mode, and how they announce tables, live regions, and custom widgets. A pattern that sounds perfect in NVDA can be silent or confusing in JAWS. If your audience includes enterprise or government users, NVDA testing alone does not cover them.
What is the JAWS key?▾
The JAWS key is the modifier that starts most JAWS commands. Which key it is depends on your keyboard layout setting. In the Desktop layout — the default on machines with a full keyboard — the JAWS key is Insert. In the Laptop layout, it is Caps Lock, which matters because most laptops have no Insert key and no numeric keypad. So a command written as JAWS+F6 means Insert+F6 on a desktop and Caps Lock+F6 on a laptop. You can set the layout during installation or afterwards in JAWS Settings Center. If commands in a cheat sheet are not working for you, a mismatched keyboard layout is the most likely cause.
What is the difference between the Virtual Cursor and Forms Mode in JAWS?▾
The Virtual Cursor (also called the PC Cursor in virtual documents) is JAWS's reading mode for web pages. It builds a virtual copy of the page you can move through with arrow keys and quick navigation keys — press H for the next heading, B for the next button, and so on. Forms Mode is JAWS's interaction mode: your keystrokes pass straight through to the control so you can actually type in a field. JAWS switches to Forms Mode automatically when focus lands on a text input, and you can force it with Enter. To leave Forms Mode and get back to the Virtual Cursor, press Numpad Plus (Desktop layout) or Escape. This is the single most important JAWS concept for testers, because the classic bug it exposes is a custom widget that JAWS never enters Forms Mode for — meaning quick nav keys steal the keystrokes and the widget cannot be operated at all.
Which browser should I use for JAWS testing?▾
Chrome is the best default. Freedom Scientific officially supports Chrome, Edge, and Firefox, and Chrome is both the most-used browser among JAWS users and the pairing that receives the most attention from Freedom Scientific. Edge, being Chromium-based, behaves very similarly and is a reasonable choice in enterprises standardized on it. Whichever you pick, be consistent — reporting a bug as "fails in JAWS" without naming the browser makes it hard to reproduce, since screen reader behavior is genuinely a function of the screen reader and browser working together.
Does passing JAWS testing mean my site is accessible?▾
No. JAWS testing proves your content works with one screen reader on one platform. It does not cover NVDA on Windows, VoiceOver on macOS and iOS, or TalkBack on Android — all of which interpret ARIA and announce content differently — and it says nothing about low vision, cognitive, or motor needs. JAWS is also, in one specific way, a deceptively forgiving tester: it is aggressive about guessing what an author meant, so it can paper over sloppy markup that other screen readers read literally and get wrong. Treat JAWS as one layer alongside keyboard-only testing, an automated scan, color contrast checks, and at least one other screen reader. Meeting WCAG 2.2 AA is the standard; JAWS is one of the tools you use to verify you have met it.
Essential Accessibility Resources
Comprehensive tools, checklists, and guides to help you create inclusive digital experiences