What you need
You need a Mac, the Safari browser, and the address of the page you want to test. A page you built yourself works well, such as a sign-up form. Set aside about thirty minutes for your first run, because VoiceOver speaks quickly and the keys take a little practice.
What you will have at the end
You will know how to turn VoiceOver on and off, move around a page, and jump between headings, links and form fields. You will also have a short test pass you can repeat on any page, and a way to write up each problem so the next person can fix it without asking you.
Turn VoiceOver on and learn the main keys
Almost every VoiceOver command starts with the VoiceOver modifier, called VO in this guide. By default, VO means holding down Control and Option together. When a step says VO + A, hold Control and Option, then press A. On many MacBooks, Command + F5 also needs the fn key, unless you have set the function keys to act as standard function keys.
- Press Command + F5 to turn VoiceOver on. On a Mac with Touch ID, you can instead hold Command and press the Touch ID button three times quickly.
- Wait for VoiceOver to start speaking. If a welcome window opens, read it, then close it.
- Open Safari and go to the page you want to test.
- Press VO + A to hear the page read aloud from where you are.
- Press Control to stop the speech at any time.
- Press Command + F5 again when you want to turn VoiceOver off.
Move around the page
VoiceOver has a cursor of its own, which shows as a black outline around the item it is reading. A link, a heading or a paragraph is one item, and the steps below move that cursor.
One step below uses Tab, and I can't promise what it does on your Mac. What Tab reaches depends on your macOS version and your settings. In Safari, you may need to turn on "Press Tab to highlight each item on a webpage" in Safari's Advanced settings, or turn on Full Keyboard Access in System Settings. If Tab skips links, check both and note which one fixed it.
- Press VO + Right Arrow to move to the next item.
- Press VO + Left Arrow to move back to the previous item.
- Press VO + Space to activate the item, for example to follow a link or press a button.
- Press Tab to try to jump to the next control, such as a link, a button or a form field.
Some parts of a page, such as a table or a group of controls, hold items of their own. VoiceOver reads the group as one item until you go inside it, which is called interacting with the group.
- Press VO + Shift + Down Arrow to interact with the group and move inside it.
- Press VO + Shift + Up Arrow to stop interacting and step back out.
Jump around with the Web Rotor
Reading a long page item by item is slow. The Web Rotor is a menu of lists that VoiceOver builds from the page: headings, links, form controls and landmarks. A landmark is a labeled region of the page, such as the main content or the navigation. With the rotor you can go straight to the part you want.
- Press VO + U to open the Web Rotor.
- Press Left Arrow or Right Arrow to switch between lists, such as Headings, Links, Form Controls and Landmarks.
- Press Up Arrow or Down Arrow to move through the items in the list you picked.
- Press Return to jump to the item you chose.
- Press Escape if you want to close the rotor without jumping.
Run a short test pass
A test pass is a fixed list of checks that you run the same way every time, so results are easy to compare from one page or one release to the next. You are listening for anything that would confuse someone who cannot see the screen. The look of the page tells you nothing here, since a page that looks right can still read badly aloud.
- Load the page and listen for the page title. It should describe this page, not only the name of the site.
- Open the Web Rotor and choose Headings. Read the list from top to bottom. It should work as an outline of the page, with one main heading and sensible sections under it.
- Choose Landmarks. A page should have at least a main region and a navigation region, and each should have a clear name.
- Choose Links. Read each one out of context. A link that says only "click here" or "read more" tells the listener nothing.
- Press VO + Right Arrow through the content and listen to each image. A useful image has a short description, and a purely decorative image should be skipped in silence.
- Choose Form Controls. Each field should announce a label, such as "Email", and not only "edit text".
- Fill in the form with a mistake on purpose and submit it. The error message should be spoken without you having to hunt for it.
- Press Tab to try to move through the whole page. Focus should never vanish, and it should never get stuck in one place. Menus, dialogs and buttons should all be reachable without a mouse.
- Press Command + F5 to turn VoiceOver off.
Write up what you find
A finding is only useful if someone else can act on it. Each one should say where the problem is, what happens, how to reproduce it, and how to confirm the fix. A note like "form is broken" gives the next person nothing to start from.
Here is a worked example. Where: the Email field on the sign-up page. What happens: VoiceOver says "edit text" and nothing else, so a listener cannot tell what to type.
How to reproduce: open the sign-up page in Safari and turn on VoiceOver. Press VO + U and choose Form Controls. Move to the first field with Down Arrow and press Return. Listen to what VoiceOver says.
How to confirm the fix: repeat the same steps. VoiceOver should now say "Email, edit text", or something close to it, which shows that the field has a label.
Common problems
If VoiceOver does not start, check that the shortcut is turned on in your keyboard settings in System Settings. If the keys do nothing, make sure you are holding both Control and Option, since VO needs both. If you get lost, press Command + F5 to turn VoiceOver off, then start again.
If the speech is too fast or too slow, open the VoiceOver settings in System Settings and adjust the speaking rate. If a page seems to have nothing to read, you may still be inside a group, so press VO + Shift + Up Arrow to step back out.
If you are not sure whether something is a real problem, run the same steps on the page again. A problem you can repeat every time is the easiest one to report.