Testing with the NVDA Screen Reader

NVDA logo

Note: This is a piece about how I configure and use NVDA. For a more detailed guide on using this screen reader, see our NVDA tutorial.

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.

  1. Preferences > Synthesizer and then Preferences > Voice Setting > Voice. 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.
  2. Preferences > Voice Settings > Rate. 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.
  3. Preferences > Keyboard Settings
    1. If you are going to use a laptop, check "Use CapsLock as an NVDA modifier key".
    2. By default, NVDA reads every character as you type. I find this too distracting, so I uncheck "Speak typed characters" and check "Speak typed words".
  4. Tools > Manage add-ons > Get add-ons > Search for "Focus Highlight". 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 focus outlines.

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, 16
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.

Comments

  1. Corey

    Thank you for the Focus Highlight add-on tip, very useful!

  2. Šime Vidas

    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.

  3. Jon Whiting

    Š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.

  4. Quentin Christensen

    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

  5. Jon Whiting

    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.

  6. Carolina

    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!

  7. maruthi

    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!

  8. Jon Whiting

    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.

  9. sindhu

    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 ?