VoiceOver and Safari: Screen reading on the Mac

One of the most interesting features of Mac OS X v10.4 Tiger, the newest version of Apple’s operating system, is VoiceOver, a built-in screen reader. Up until now, people needing a screen reader have been more or less forced to use Windows because of the lack of decent screen reader software for the Mac, but now it’s built right into the Mac OS.

This is very exciting for me as a Mac using accessibility advocate, and VoiceOver was the main reason for me to buy Tiger since I don’t care much about Spotlight, Dashboard and the other new gadgets. VoiceOver has made checking my work in a screen reader a lot easier. It doesn’t have all the features of a more advanced screen reader like JAWS, but from the testing I have done so far it seems to do a decent job. Especially when you take the price into account.

VoiceOver is yet another reason for all you Windows using web professionals to get yourselves a Mac for testing. Buy a Mac Mini and you get a cute little Mac and a decent screen reader for less than the price of a single JAWS license ;-). Heck, you could even buy two Mac Minis for that money.

Getting started

When I was getting started with VoiceOver I did get a little confused at first. I can’t find any good tutorials on using VoiceOver to browse websites with Safari, and that’s what I want to do. After reading the online help and the documentation I could find in the VoiceOver support area of Apple’s website, and spending some time browsing the web with VoiceOver, I’m beginning to get the hang of it.

For those of you who have Mac OS X Tiger installed, here’s a very basic guide to listening to a web site with VoiceOver:

  1. Activate VoiceOver by pressing Command-F5.
  2. Bring up Safari and load the site you want to listen to.
  3. VoiceOver will read the first item of the page and stop. This is where things get a little confusing. To me the most logical thing to do when a new site is loaded would be to start reading the whole page. I haven’t been able to make VoiceOver do that automatically.
  4. To get VoiceOver to read the entire page, first press Control-Option-Up Arrow. VoiceOver will say Stop interacting with HTML content. If you look carefully you’ll see that the VoiceOver cursor (defined by a black two pixel outline) is covering Safari’s viewport area.
  5. Now press Control-Option-A. VoiceOver will read the contents of its cursor, in this case the whole web page, from start to end unless you interrupt it.

That should get you started.

Basic navigation

Of course, just listening to a web page being read out loud is not enough. For starters, you need to be able to move around on the page and follow links. That’s when you need a few basic navigation commands:

Interact with an item
Control-Option-Shift-Down Arrow
Stop interacting with an item
Control-Option-Shift-Up Arrow
Read all text
Move up
Control-Option-Up Arrow
Move down
Control-Option-Down Arrow
Move to previous
Control-Option-Left Arrow
Move to next
Control-Option-Right Arrow
List the items in a window
List all links in a document
Perform the default action for a selected item (e.g. follow a link)
Control-Option-Space bar
Pause/Continue reading

There are many more commands, but those are the ones I find myself using the most. For the rest, check out the online help and the keyboard layouts in the Keyboard Commands (pdf) document Apple provides.

Fine tuning

When you first listen to a page in VoiceOver you may be surprised by how much of the punctuation it leaves out. The default setting is to read no punctuation, which can be nice in some cases, but other times you actually want to hear everything. There’s an easy way to adjust how much it reads: press Control-Option-V to bring up the Verbosity menu, then use the arrow keys to choose a setting and change its level. I increased the verbosity slightly since I want to hear some punctuation.

You can also change a lot of other stuff, like which voice it uses, the pitch and speed of the voice, and the size and position of the visual feedback.

Missing features?

There are some things that I haven’t yet figured out how to do (if they are even possible):

  • Skip links. Skip links hidden with CSS are announced, and you can follow them. The problem is making VoiceOver continue reading from the link’s target. No matter what I do it always continues reading right after the skip link itself. This is obviously not what I want, since it makes skip links pretty useless. Unless I’m doing something wrong, VoiceOver doesn’t handle internal links very well.
  • Title attributes. It would be nice if you could configure VoiceOver to read title attributes if they exist.
  • Tables. VoiceOver seems to ignore HTML tables. Not their contents, but any accessibility enhancements such as summaries and headers. It basically treats all tables as if they were layout tables. I find this a little odd considering VoiceOver has specific commands for interacting with tables. Either I’m missing something or those commands are not meant for HTML tables.
  • Continue reading. If you interact with a form control or manually skip past something, VoiceOver will stop reading. I haven’t been able to find a way of making it continue reading the rest of the page once it’s been stopped. Stepping through the page manually works, but it would be nice to have it just keep reading until you tell it to stop.

First impressions

I think VoiceOver works well, and having a screen reader built into the operating system is great. Hopefully having easier access to a screen reader will make more people aware of how horrible it can be to try to navigate an inaccessible website when you can’t see it. Oh, the insane alt attributes I’ve been listening to…

I’m by no means as experienced with screen readers as someone using one on a daily basis, so if there are any expert screen reader users reading this, I’d love to hear your impressions of VoiceOver (assuming you’ve had a chance to try it out). Knowing how VoiceOver compares to other screen readers like JAWS would also be very interesting.

There’s obviously room for improvement (there always is), but I think it’s a very good thing to have a screen reader built into the OS. Let’s hope the developers at Apple listen to feedback and work to make VoiceOver even better.

Posted on May 9, 2005 in Accessibility


  1. It is marvellous having a screen reader built right into the OS, for free. I haven’t yet made the time to learn how to use it, but the process will be quicker thanks to this. Thanks Roger!

    I’m not surprised that it doesn’t seem quite polished yet: Apple software seems to need to get to version 2.0 before it irons out annoyances. That is a shame, as it might not until then be a realistic alternative for visually impaired people. But we’ll see.

    I do think it’s genuinely useful for web developers who want to spot obvious screen reader incompatibilities: I’ve now learnt that my domain name sounds terrible in Voiceover, so that’s great :)

    But I’ll be looking forward to when it supports the basic accessibility features of HTML: if assistive devices don’t support these, there’s much less motivation for web developers to use them, and you can’t properly demonstrate their usefulness.

  2. I have to wonder though if it is so hard to learn how to use this screenreader for a sighted educated computer savvy professional then how hard would it be for someone who is blind or illiterate? I’m just wondering because it seems a bit crazy to develop a tool for the disabled that the ‘abled’ struggle getting to work.

    Of course I haven’t played with it yet myself so I may be wrong. Just a question in the air really.

  3. Sounds cool, I’m looking forward to VoiceOver, my Mac Mini’s in Luxembourg so I’m still waiting.

    What I really want to know is does it pronounce my name correctly?

  4. This sounds like the text to speech capability that’s been hidden inside OSX for some time. It was once called “Start Speaking.”

    While I don’t have a Mac and haven’t used either the old Start Speaking or the newer Voice Over, your description and others I have read lead me to deduce it is a relatively simple “screen scraper” feeding a text to voice engine. In that sense, it is a screen reader, but a very basic screen reader.

    There are small clues that suggest it does not read style sheets, nor understand the DOM. That means it has a long way to go before it can be very helpful to those who really need it.

    Yet as you say, it can show all Mac based developers how truly difficult it is to work with pages that don’t meet even the simplest accessibility needs.

    THANKS for the write up and the command summary … and encouraging our fellow designer / developers to try out yet another tool for illustrating accessibility concerns.

  5. Great, I haven’t thought of it yet, as I’m still waiting for my iBook. I’ll have to check it at friend’s machine. BTW I expect it reading only English texts, am I right? Do you know about any possibility of localisation?

  6. May 9, 2005 by pass

    I’ve tried it quickly on a two column layout and it seems to ignore the flow of the markup. It will skip from the first coulum to the second where there is a break in the divs on the first… hard to explain but it doesn’t respect document flow.. An unual circumstance but none the less suggests that this isn’t the grail we are hoping for. yet…

  7. That could be the one reason why I would upgrade to tiger. The rest is I can easily live without. Voiceover is a real benefit to me as a webdesigner.

    Although I doubt that it will usefull to me for the dutch language. Because of the lack and expence of screenreaders in the Netherlands this option is mostly pointless. Unless it does do speech in Dutch, either through a supplied language pack or through a third party plugin. Does anybody know if Tiger can speak Dutch? Braille browsers do seem to be more popular and available over here. So it’s looking less of a bonus the more I think about it. Ah maybe next year.

  8. It’s got to be better than Opera. Voice control with that is even worse. Perhaps you could do a bit of a comparison between the two, see how they compare?

  9. May 9, 2005 by Roger Johansson (Author comment)

    Small Paul: A lot of words are pronounced in an unexpected way. Luckily there is a pronounciation editor which lets you tell VoiceOver how to pronounce your favourite words.

    nortypig: Yes, it should be easier to get started. It’s very difficult for a sighted person to even imagine how hard it would be to use a computer when you can’t see.

    Tom Phippen: Would “Tom Fippen” be correct?

    Bob: I think VoiceOver is more than that. It does read the alt attribute of images, for one thing. It also announces list items (“bullet”). But yes, it needs more polish and features.

    Jan, Egor: It’s only available in US English, and I wouldn’t expect localisations any time soon. It works reasonably well for some other languages - Swedish is, well, understandable ;-).

    pass: That depends on how you have configured it. Under the “Navigation” tab in the VoiceOver Utility there’s an option called “Group items in web pages”. If it’s checked, VoiceOver behaves the way you describe.

    Tom: I haven’t tried Opera Voice since only the Windows version has it. I’ll give it a try in Virtual PC, but I suspect it will stutter badly.

  10. Nice sum-up, Roger! I’ve also played around with Voice-Over a bit and noticed that it stops right before some quotation marks, can you confirm this? I tried it using “speak text below mouse” or whatever the setting was called.

  11. Tom Phippen: Would “Tom Fippen” be correct?

    yay, now I just need every call center to replace the staff with Mac Minis.

  12. How could you pronounce Phippen any other way?

  13. I’ve had
    and the classic pippin (which does have an Apple nerd bonus)

  14. May 12, 2005 by dave p

    As a blind veteran of screen reader use, I found VoiceOver fairly streight forward to learn. I found it especially interesting to work along with someone with vision and appreciate your comment about the VO cursor covering the entire viewport because that was exactly what I envisioned it doing. Practice it takes, but doable it is.

  15. May 12, 2005 by Carlos Taylor

    I’m a blind computer user and am thrilled that I now actually have access to a Mac running the latest OS. The first experience I ever had using screen reading technology came when I was a child using an Apple II that my dad purchased for our family. I don’t own a Mac at the moment, but I have one at work which I use to test Voice Over. Although I an excited about having Voice Over and am soaking up as much about it as I can, I see areas where it can definitely be improved. I am also hopeful that there will be a wide variety of applications that will work with Voice Over. After all, what good is a screen reader if it can’t access many applications that a blind person needs to use? So for now, I’m learning as much as I can and hoping for the best for Voice Over and its future.

  16. Just spotted a few good links about using the Automator to save any web page as an audio file. Check out, Mac OS X hints and Engadget.

  17. May 13, 2005 by Roger Johansson (Author comment)

    dave p, carlos: Thanks for sharing your impressions of VoiceOver. It’s very valuable for fully sighted web developers like me to get that kind of information.

    I’d really like to see VoiceOver’s interpretation of semantics and use of HTML’s accessibility features be improved, and I hope it will be.

    Jaakko: Cool. And it shows that accessibility features can benefit everybody.

  18. I actually just started working with my dad who’s visually handicapped. There are a few limitations, and this thing definitely needs a tutorial.

    http://www.jasonwong.org/articles/2005/05/09/voiceover-day-1 is our first day experience with it. My dad usually uses JAWS.

  19. This feature is good, but for me (I’m italian) it doesn’t work. I pay Tiger like american or english version but I can forget to use this feature

  20. This feature is good, but for me (I’m italian) it doesn’t work. I pay Tiger like american or english version but I can forget to use this feature

  21. Re: “Skip links hidden with CSS are announced, and you can follow them.”

    How did you get it to follow them? I’ve tried everything I can think of and I can’t get it to work. For one thing “mouse clicking” (i.e. pressing command-option-shift-spacebar) seems to always act on wherever the visual mouse cursor is located not what is in focus in the voiceover cursor. If the link is visually located on the page you can force the mouse cursor to that location by pressing control-option-command-F5, but if (as is often the case with skiplinks) the link is off the visual page even though voiceover will announce, “Moving mouse to link (the link under voiceover focus)” the mouse cursor stops at the edge of the screen and pressing command-option-shift-spacebar acts on whatever link if any is under the visual mouse location and won’t act on the skiplink.

  22. Oops! Cancel my last post. Command-option-space bar is the correct way to trigger the default action of the item in focus.

    I agree with Roger that it’s still a problem that voiceover focus doesn’t move to the link location when it’s on the same page.

    I’d initially had trouble getting command-option-space bar to work because I was in group mode and I’d taken to using control-option-command-F5 followed by command-option-shift-space bar which moves the mouse cursor to the voiceover focus and then triggers the action under the mouse.

  23. June 2, 2005 by Caitlyn mcFarland

    I’ve been playing around with voiceover for the last day and a half now. I’ve used jaws in one form or other for the last fourteen years, and it took quite a lot of getting used to! thanks, roger, for this little tutorial on how to get safari to work-I’m still playing with it, though. I got excited when I heard about voiceover, because I used an Apple when I was sighted, and liked it a lot! so far, my impressions are that it doesn’t do everything that jaws does, but since this is the first release of it, there are bound to be bugs. I wish I could gleefully say I’m selling my pc and not having to pay through the nose to keep jaws current, but it’s too early to tell yet if that’s possible yet.

  24. June 2, 2005 by Roger Johansson (Author comment)

    Jason, Caitlyn: Thanks for reporting on some real world use of VoiceOver. I’m happy to hear that it is at least somewhat usable.

    ilduca69: I’m guessing that VoiceOver will only be available in English for a long time to come. I’d love to see support for more languages, but I don’t have much hope of ever seeing a Swedish version.

    Bill: Are you sure you don’t mean Control-option-space bar?

  25. Roger: First: Thanks for this help. I only wish I’d found it before struggling through the voiceover help pages myself.
    Second: Yes. I meant Control. Apparently yesterday wasn’t my day to communicate!

    All: Keep in mind that Safari/voiceover is one of the few screenreaders that honors the CSS media attribute aural. So if you use media=”all” voiceover is going to take you at your literal word and traverse the page the way it is laid out visually by that CSS rather than “following the DOM” as most other screenreaders do. Likewise if you use media=”screen,print” as far as voiceover is concerned the page has no stylesheet.

    Anybody tried anything like:
    a:link {voice-family: harry, male;}
    a:visited {voice-family: betty, female;}
    a:active {voice-family: betty, female; pitch-range: 80; pitch: x-high;}

    to hear how/if it works?

  26. June 2, 2005 by Roger Johansson (Author comment)

    Bill: I don’t think VoiceOver supports any aural style sheets. I just tried a few things and nothing seems to take effect. Where did you get that information?

  27. Roger: It’s sounding like you’re correct and VoiceOver/Safari doesn’t support aural.

    I got the information that Start Speaking/Safari/OSX supported aural (quite a while ago) from a table of sceen reader support on the CSS discuss wiki (http://css-discuss.incutio.com/?page=ScreenreaderVisibility). Like Bob I think of VoiceOver as an extension of Start Speaking and I assumed it wouldn’t drop support of aural. I felt fairly confident because I’d noticed navigation was very different when I had no style sheet set to aural and when I had my visual style sheet set to aural (e.g. with no aural stylesheet VoiceOver went first to a “skip to” div that is the 1st block in the body, (but way off screen to the left), but when I had my visual stylesheet set to aural VoicOver skipped this div and went straight to the 1st item on the “visual” page). What I hadn’t realized, until I just tested more, was this difference was due to the coincidence of my having had the “Group items in web pages” setting checked when I had my visual stylesheet set to aural and off when I had no aural stylesheet. It still doesn’t make sense to me that grouping items causes VoicOver to skip over the first block in body, while that was what I expected with my screen stylesheet.

    It’s great having multiple people trying VoiceOver. By myself I never would have caught the error of my conclussion so quickly. Thanks.

  28. June 23, 2005 by Ramirez

    Just out of curiosity, has anyone here tried Fire Vox and CLC-4-TTS, a freeware screen reader for Firefox?

    I believe it will solve many of the listed problems.

    Fire Vox: 1. Respects cursor positioning, which means skip links work as following a skip link would reposition the cursor.

    1. Fire Vox does read titles… but I am not sure if that is what you were saying was missing…

    2. Fire Vox handles tables and you can check to see which row and column you are in as you read through it.

    3. Fire Vox can start auto reading at any time.

    You can download Fire Vox for free from here: http://clc-4-tts.cjb.net

    Note: This also works for Windows and Linux.

    Tip for Mac users: The author apparently is not familiar with Mac command keys and some of his default keys appear to be in conflict with those. Luckily, this is easily corrected by activating the FireVox options menu and reassigning them (Ctrl+Shift+M is the default for brining up that options menu).

  29. October 9, 2005 by Jacob Schmude

    I’d like to post my observations on Voiceover. First, let me start by saying I am a completely blind computer user who has been using various operating systems for about ten years, just to give everyone here some background. I have now had a chance to play with Voiceover for quite a while, as the college I go to upgraded their MAC to OS X Tiger. First, you can’t really compare Voiceover to a windows screen reader like Window-Eyes or JAWS. This is because Voiceover is not, in the traditional sense, a “screen reader.” Due to the way it has been implemented, it actually monitors the objects the program employs to create its user interface. The on-screen representation is irrelevant, which is in contrast to the way windows screen readers handle most things. This has some major advantages, but it does require some adjustment to get used to and requires thinking about the UI in a slightly different way. Rather than think about what’s on screen, and what I have to do to move my mouse pointer there, I must think of how to move the Voiceover focus to that object and how to interact with said object. The reason this is such a major advantage is that, since all the objects used have an internal representation, how the controls are actually drawn is not a concern—hense, the problem of unknown controls never comes up as it so often does in windows screen readers. Voiceover knows the object, knows how to interact with it, and so it is relatively seemless. It isn’t perfect yet, but in my opinion it’s a heck of a lot closer to perfect than the windows screen readers were five versions into their development cycle. Now, for some observations more prevalent to web design. 1. Same-page links. If anyone here’s ever used a windows screen reader, you would know that these links don’t work correctly with any screen reader. Some work, some don’t, and there’s no way of predicting which ones will and won’t. It has to do with how the page gets rendered by the browser, if the screen reader or browser thinks the same-page link actually changes the page even though it doesn’t, they won’t work. Firefox does better than internet explorer in windows, but I’m at the point where I just ignore them. JAWS does the best at handling these links, but even it gets thrown off about 25% of the time. The good thing is that, due to the way Voiceover and Safari—and the rest of the OS, for that matter—interact, apple should be able to fix this problem for good for accessibility-oriented users. 2. Tables. I’ve not had a chance to really play with this, I didn’t give it much thought when I was browsing. I’ll check this out tomorrow and report back. So, those are my impressions on Voiceover as it stands now. Is it JAWS or Window-Eyes? No. Does it do everything those screen readers need to? No. But it doesn’t really have to. Apple has created what I’d call a revolutionary approach to this type of accessibility and, because of this, it doesn’t need to be able to do what the windows screen readers have been required to do for so long. When Apple gets the web browsing smoothed out, Voiceover will be the perfect alternative—though, if one has a little patience, it can be a very good alternative now. My $0.02

  30. October 9, 2005 by Roger Johansson (Author comment)

    Jacob: Thanks for posting your impressions of VoiceOver. It seems like Apple is on the right track with it.

  31. January 17, 2006 by It's never been a hidden feature

    Macintosh has had the ability to read text since system 6 or 7, like 1995-ish. it wasn’t hidden - it was in simpletext, the all-purpose text editor that came with mac preOSX . it was in a menu item called “speak all” and was a very high status feature when it came out. since then it has been just as prominent in the “universal access” panel…

  32. January 17, 2006 by Roger Johansson (Author comment)

    Sure, but VoiceOver does a lot more than that.

Comments are disabled for this post (read why), but if you have spotted an error or have additional info that you think should be in this post, feel free to contact me.