I spend a significant amount of time evaluating website accessibility and a large percentage of that time is spent using a screen reader. I have access to full versions of JAWS and Window-Eyes and while they are both capable screen readers, the screen reader I use most often is NVDA.
NVDA is:
- Lightweight: I am constantly turning my screen reader on and off, switching browsers, etc. I need a screen reader that can keep up with me. Other screen readers take too long to start up and tend to crash, especially JAWS.
- Free: I am not faulting companies that charge for their product, but it is much harder to justify the hefty price tag if you are using it for evaluation purposes only.
- Always up to date: Updates are regular and I have always found them seamless.
- Literal: Some screen readers will attempt to fill in accessibility gaps, for example, by guessing at a label for an unlabeled form control. NVDA does less of this. While you can argue the merit of one approach over another for the end user, this ‘literal’ presentation is excellent for accessibility evaluation.
Configuring NVDA
I want my testing experience to be as ‘typical’ as possible, so I try not to configure my screen reader too heavily. However, I do make a few changes that I feel make the experience more pleasant and efficient without altering the information that is presented.
- and then . The default synthesizer is not the easiest to understand, so the first thing I do is change the default voice. The voice I use is Microsoft Zira because I find it a natural sounding voice at lower speeds, but still understandable at higher speeds.
- . I typically hover around the 80-90, but it took me some time to be comfortable at that speed. I often change the rate based on the complexity of the webpage.
- If you are going to use a laptop, check " ".
- By default, NVDA reads every character as you type. I find this too distracting, so I uncheck " " and check " ".
- focus outlines. Search for " ". The Focus Highlight add-on adds a rectangle on the element that you are currently reading or interacting with. I find this add-on extremely useful, especially when testing a site that does not have keyboard
Common Commands
Although NVDA contains dozens, or possibly even hundreds, of keyboard commands, I typically use fewer than 20. These are my go-to keyboard commands:
Command | Description |
---|---|
"NVDA" key | Insert/Caps Lock |
Stop | Ctrl |
Open | Ctrl + Alt + N |
Quit | NVDA + Q |
Faster/Slower | Ctrl + NVDA + ↑/↓ |
Read previous/next line | ↑/↓ |
Re-read current line | NVDA + ↑ |
Read all | NVDA + ↓ |
Forms/Links | Tab |
Headings | H, 1–6 |
Forms | F |
Buttons | B |
Links | L |
Landmarks | D |
Tables | T |
Table Cells | Ctrl + Alt + ↑/↓/←/→ |
Navigate Backwards | Shift (+ Tab, H, etc.) |
Toggle forms mode | NVDA + Space |
Update April 5: Added the ↑ and NVDA + ↑ commands
An Excellent Screen Reader
I admit that I am an NVDA fanboy. The work of Michael Curran, James Teh, and others on the NV Access team has benefited thousands of people worldwide, and helped raise the bar for all screen readers in the process. If you use Windows and test for web accessibility, it should be in your toolbox.
Thank you for the Focus Highlight add-on tip, very useful!
Does “Microsoft Zira” have to be installed separately? I’ve installed NVDA on Windows 10, and there are only eSpeak, and Microsoft Speech API version 5 in the list of synthesizers.
Å ime, after choosing “Microsoft Speech API version 5” synthesizer, you need to select a voice. Go back into “Preferences”, and select “Voice Settings…”. Then you can choose from a list of available voices.
Great post Jon!
Re reading:
Down arrow moves down to the next line and reads it (up arrow moves up one line)
NVDA+up arrow reads the current line without moving.
Another tool which can help confirm exactly what is being read is the speech viewer – press NVDA+n to open the NVDA menu, (T)ools, (S)peech viewer which displays an always on top window with what NVDA is reading out.
The full user guide is available from NVDA’s help menu (NVDA+N then H then ENTER) or from the NV Access site at: http://www.nvaccess.org/files/nvda/documentation/userGuide.html
Thank you Quentin for your excellent feedback. These are both commands that I commonly use, especially the up arrow. I updated the table to include your recommendations.
I went back and forth on including the speech viewer. It’s a great tool, but I don’t use it very often. I find that I have more success when I look at element I am evaluating and listen to the screen reader, or sometimes I close my eyes so I’m not distracted by what I see. Since this was a post on personal preferences, I decided not to include it. Maybe I should have added an “Honorable Mention” section.
Thanks for this usefull text! PArt of my work is evaluate accesibility on web sites and i use NVDA all the time, cause is free and a very good tool.
A big hug from Chile!
Hello All,
I’m working for Accessibility Project as developer, here I’m always caught by QA Engineer saying that not able to access web page using up&down arrows. I would like to know how and when we should use up&down arrows?
QA concern: if we have save and cancel button in same line, NVDA reading it as together, not able to access cancel button.
As a developer, I’ve been told to QA saying that as these are in same line/region its reading together when we use arrows and if you really want to access these buttons use TAb.
does my developer comment make sense?
It would be great if you guys help me out here. Thanks in advance!
Maruthi,
Yes, your comment makes sense. It is common for groups of buttons to be read together in a single “line.” For example, on this button example from the WebAIM site, NVDA will read “button Submit Search button Reset Button Activate” without pausing between buttons.
When navigating with the Tab key, each button will be read separately.
This is the correct behavior.
hello all , myself sindhu , in few web pages i have observed that the links are activated only when if i am navigating with tab and they are not activated when i am focusing to the links with arrow keys . and it is seen only in few web pages . so , is it actual behavior of NVDA ?