Tips for power users/anyone that does more than read emails/light web browsing to be more productive on Mac OS with voiceover than windows with NVDA/JAWS.

macOS & Mac Apps

Hi all

I’m a Software developer that recently made a complete switch from Windows to mac. I have very low vision and use a combination of Voiceover, Zoom and inverted contrast.
I thought I’d write up a few tips/suggestions that made me just as much if not more productive in Mac OS using voiceover than on Windows using NVDA.
I decided to do this as I read of/hear of many blind/low vision users that switch to running windows on Bootcamp or a VM as they can’t get comfortable with voiceover or think that voiceover can’t perform some task/s NVDA can etc etc.
Initially when I got my first Macbook pro in 2011 I did the same (installed Windows using Bootcamp) as I couldn’t get comfortable with Voiceover having used JAWS at the time

Things have changed quite a bit since then (Especially in the last year) to the point where I am now able to do my work (Full Stack Web/mobile development) on a Macbook air using Voiceover.
I met a developer online a few weeks ago who was/is busy losing his vision and I had a call with him where I showed him how I go about performing certain tasks which made me think it might be a good idea to post this as I struggled a lot to get to this point and hopefully this might help someone at some point…

My voiceover settings: (personal preference however I’ll try justify my reasoning for every setting)
Please note: I only listed the settings I changed.
VO category: General:

Keys to use as the VoiceOver modifier: ⇪
- Not sure why anyone would want to use the alternative 2 keys (CTRL + option)

Allow VoiceOver to be controlled with AppleScript (ticked)
- This allows apple scripts to control voiceover e.g. (keyboard commander + t) will read the date and time.

Category Verbocity:

tab: speech

Default Speech Verbosity: low
- This is personal preference and maybe better for someone just starting out to set to a higher level.

tab: text

Punctuation: some
- again personal preference…

While typing speak: nothing
- I’m comfortable typing and don’t need voice feedback every time I type something.

When moving the cursor: Speak text that the cursor passes.
- I definitely need feedback while moving the cursor through a document.

When reading a capital letter: Play tone
- I find this easier to follow than the alternative pitch change.

Append phonetic pronunciation to single characters (ticked)
- Some characters sound very similar sometimes so this can be useful when navigating by character.

tab: anouncements:

Speak size and position in:milimeters
- Personal preference…

category: Speech:

voices tab:

I am using the Tessa compact voice with rate set to 100% (Again personal preference)

Pronunciation tab:

I have to read through a lot of code using Voiceover and I added a few Pronunciations which makes it sound similar to the synthesizer i’m used to (Eloquence).

My Pronunciations (symbol followed by Pronunciation text:

- dash
. dot
“ quote
( left paren
) right paren
{ left brace
} right brace

Category: Navigation

Grouping behaviour: Ignore groups
- Groups only waste time and make Mac OS with voiceover feel like more work than it should. With this setting when I enter a new finder window I can start navigating right away instead of first needing to interact with the main view…

Mouse pointer:: Ignores VoiceOver cursor
- This setting could/should probably be changed dependant on the specific scenario however having it set to ignore VO cursor is probably best for most scenarios…

Allow cursor wrapping (unticked)
- If cursor wrapping is allowed it sometimes causes issues with the ignore groups setting above.

Enable fast searching: (ticked)
- I have the key set to the default (right cmd key) this allows me to speed up interactions with dialogs e.g. If Safari asks me to allow downloading from a certain site I hold right CMD and press a for allow, Voiceover focus then jumps to the allow button and I can just hit space or VO perform action.

Category: Web

tab: Navigation

Navigate web pages by:: DOM
- Not sure why they even have another setting here as it doesn’t make sense to re-arrange a web page from the way it was created as it can get quite confusing…

Speak column and row numbers When navigating web tables: unticked
- Personal preference however I can count and rarely navigate tables with 100+ lines where it’s important for me to know the row/col number…

Enable Live Regions ticked
- I wish there was a way to toggle this setting as this can get quite verbose in some instances e.g. Microsoft teams.

Always allow keyboard commands to navigate websites ticked
- This allows me to navigate and select text in web pages on Safari, chrome and Firefox like I’m used to in Windows using the arrow keys where holding option key + left or right arrows would navigate/select by word, CMD + up/down arrows by line etc…

Category: Sound

Enable audio ducking unticked
- I unticked this as Audio ducking would happen at random when browsing the web.

Category: Visuals

tab: panels

Display spoken text in a caption panel: (Unticked)
- This only adds unnecessary clutter.

category: Commanders

tab: keyboard

Enable Keyboard Commander: (ticked)

I have the keyboard commander set to right option key and have the following commands set:

c: Command Open Application: Microsoft Teams

.: Command Go to Linked Item
- - This helps me to jump to the main content in Safari easier/with one hand as I often prefer to use one hand to browse the web.

/: Command Perform Action for Item
- This allows me to perform the VO + space bar command to activate/click the item in the voiceover cursor using one hand.

e: Command Open Application: TextEdit
- Very convenient to quickly open the text edit application.

g: Command Open Application: Google Chrome

i: Command Open Application: IntelliJ IDEA 2021.1 EAP

p: Command Open Application: ExpressVPN

r: Command Open Utility: Terminal

s: Open Application: Safari
v: Command Open Application: Visual Studio Code

tab: quickNav

Enable Quick Nav: (ticked)
- Very important for navigating in general (especially in a browser with single key navigation turned on)

Allow toggling of Quick Nav using left and right arrow keys: (ticked)
- Toggling quickNav is probably the most frequent action I perform, will explain/expand on this below.

Enable single-key web page navigation when using Quick Nav: (ticked)
- Extremely important for navigating any webpage…

in dialog Assign commands:

modifier key: Single keys

I added the following shortcuts/mappings:

/: Command Find Next Searched Text.
- This makes it easier to jump to next search text online, One example of where I use this is on reddit. With quickNav enabled I search for ago and then press / to jump to the next match which means I can then press the right arrow to hear/read the next comment.

?: Command Find Previous Searched Text
- Same as above only ? jumps to the previous search text match.

.: Command Find Next Auto Web Spot
- This makes it easy to jump to the next auto web spot using one hand, I use this very often especially on sites with articles to jump to the main article content (However it’s sometimes hit or miss with auto web spots)…

category: activities.

I added an activity called code which I use when reading/writing code, I changed the punctuation to all and set this activity to active whenever I open Visual Studio Code, IntelliJ Idea or Terminal

Some general tips/ways I go about things.

Browsing the web:
I’ll press right option + s to open safari.
Then I’ll enter my search text or the URL I want to navigate to.
When the page has loaded sometimes focus will be in the main HTML content sometimes not, if not I’ll press my keyboard commander shortcut (right option + .) to jump to linked content (In this instance the HTML page).
With quickNav and single key navigation turned on I’ll press h to jump to different headings or . which I mapped to jump to next auto web spots.
When I reach the section I want to read With quicknav turned on I’ll press the right arrow key to read the next section (seems like it reads by paragraph)…
If I want to read by line or copy text I’ll turn off quickNav and use the arrow keys to navigate or select text.

Work/Software development:

For all my frontend work I use Visual Studio code which as far as I can tell is fully accessible with Voiceover.
For all my Java/Kotlin/Backend work I use the latest EAP release of IntelliJ Idea. After years of complaints Jetbrains finally invested a good amount of effort to make IntelliJ idea accessible and the latest EAP version is almost completely accessible with the odd issue here and there (If anyone finds a issue please report it on their bug tracker.

Terminal work:

This is the one thing that Voiceover does much better than any Windows screen reader.
When I enter a command in Terminal I turn off quickNav type the command and press enter.
If I want to then read the output I turn on quicknav interact with the shell and use the up/down arrow keys to read through the output.
I can select the current line/word by pressing VO modifier + shift + c which copies the last spoken phrase to the clipboard.
I can also select by pressing VO modifier + enter which makes voiceover play the drag sound, I can then navigate around using quicknav to select precisely up to the point I need to.
I can then press VO modifier + enter again and voiceover will jump out of selection mode, then I press CMD + C to copy the selected text to the clipboard.
If I’m reading through a very long stack trace/log file I can turn on quickNav and search for a text string e.g. “Caused by” which is extremely helpful/saves a log of time.

I installed the TDSR screen reader and it seems promising however it’s pretty useless as it’s not possible to read more than one terminal screen/ it can’t scroll up and down the window so pretty pointless unless you want to only read a few lines at a time and I see a issue on github someone created years ago without any response from the creator so…

The only thing I sometimes still miss on Mac OS is the eloquence Synthesizer as there’s no Mac OS equivalent that comes close in terms of speed/clarity… I tried the version someone posted on their website that uses Wine but it didn’t work on Big Sir with a M1 macbook air at all unfortunately (If anyone has managed to get this working please leave a comment).

It took me 10 years on and off to get to the point where I feel like I can get work done on Mac OS and be more productive on windows, I think when it comes to Voiceover it’s an amazing screen reader however the tutorials/guides online doesn’t go into nearly enough detail and seem to be aimed at very casual users in general e.g. people that read emails/do some casual web browsing so I hope someone finds some use/value in this post…
I’ve read a few blogs where authors suggest that Voiceover is old/needs a rewrite but I think it again comes down to those authors being used to another OS/screen reader and not learning Voiceover end to end (Which does take some time/effort).

To Justify the title (Why I now feel more productive on Mac OS than on Windows):
- It’s way less rare for voiceover to crash/stop reading anything which happens way too often on Windows with those third party screen readers.
- If the above ever happens it’s as simple as VO + F5 twice to get voiceover back and I haven’t yet encountered a time when that didn’t work where often on Windows I have to sign out or restart my laptop to get NVDA back…
- The Zoom magnifier on mac is way better integrated and never in the way.
- Siri is amazing at finding what I want e.g. keyboard settings which spares me searching through System preferences to find some setting/category.
- All the shortcuts for applications etc makes things VERY fast.
- Something I haven’t mentioned is hotspots which helps a lot when there are several regions In an application I need to jump to on a regular basis.
- The macbook air M1 doesn’t have a fan and I haven’t managed to get it hot at all where my Dell XPS Windows laptop sometimes doubles as a room heater/the fans turn on when the laptop turns on…
- The fingerprint reader and password autocomplete using Keychain is amazing/saves a lot of time.
- Overall very good quality components/machine compared to most Windows counterparts.
- I can mention many more but this post is already VERY long…



Submitted by Bruce Harrell on Sunday, March 21, 2021

vvo from the right side of the keyboard is often useful. Capslock in place of right side vo commands slow and awkward, e.g., capslock-f or capslock-w. I only mention this because you indicated you didn't know why anyone would want to use the control-option vo combo.

Smile. thanks for all your tips. I love helpful posts like yours.



Submitted by Will on Sunday, March 21, 2021

Very useful post, but doesn't the "chrome has new window" anouncement irritate you? only asking as you mentioned chrome?

Submitted by Piotr Machacz on Sunday, March 21, 2021

I've been using the Mac for a while and do a few things differently but you gave me a few useful ideas (assigning slash to go the next search result in quicknav particularly stands out.

I'm a little surprised by your preference over VoiceOver as opposed to TDSR for terminal output though, but I guess you care more about having a scrollback instead of good autoreading. Personally, I found VoiceOver's terminal support "nearly useless" as you put it because it can't follow what gets output and half the time says just new line or the last few words of output. So if this helps anyone, my take on the terminal workflow is I have a "silent" activity which mutes speech in the terminal letting TDSR take over. If I need access to a scrollback buffer, then I run screen (which is coincidentally also what the main developer does himself hence scrollback isn't a priority for him), and if I want to select a big chunk of output for copying I'll switch activities and select with VoiceOver as you described.

Another activity I have set up is one that mutes all VoiceOver sound effects which I have set to launch in any apps made with catallist and iOS apps running on my M1 Mac. Reason for this being is that for whatever reason in those apps VoiceOver waits for the sound effects to finish playing before it starts speaking, so having them muted makes those apps feel a bit more responsive.

Submitted by Deon588 on Monday, March 22, 2021

@Piotr Machacz THanks for that comment, I tried TDSR in tmux and it worked perfectly with split panes which Voiceover can't handle at all. And yes the scroll buffer is very important to me. I'm not experiencing the Voiceover terminal issues you mentioned (I'm on Big sir using a M1 Macbook Air). The only two things I miss/need from TDSR now that I can scroll in tmux + have 4 panes in one window is the ability to make TDSR stop speaking when I press a button as well as search for text when dealing with large output...

Submitted by Deon588 on Monday, March 22, 2021

@Will. I don't have that issue with chrome at all? Also one thing I forgot to add related to Chrome and Firefox is that if you want to navigate with quickNav turned off you have to enable caret browsing by pressing F7 and selecting turn on caret browsing in the dialog that pops up...

Submitted by Cobbler on Wednesday, March 24, 2021

Thank you for these great tips; several of which I have now followed.

However, I have a question about the following:

Enable fast searching: (ticked)

I have done this, but there is no change of behaviour to the right Command key, which still behaves the same as the left Command key.

This is on the latest public release of macOS 11.

I have toggled the setting option many times; tried it set to another key; and restarted my Mac multiple times. Nothing makes a difference.

Does anybody know if this is a bug? Or is there simply something screwy with my installation?

Submitted by Omar Altahaineh on Wednesday, March 24, 2021

thank you for this useful post, I would like to add that you can enable the trackpad commander and navigate your websites with just one hand., just like you do on the iPhone.
enjoy your Mac journey, peace.

Submitted by Greg Wocher on Thursday, March 25, 2021

For me both Chrome and Edge have the same issue. They both keep saying has new window. In Edge it will say Microsoft Edge has new window and in Chrome it say Google Chrome has new window. It gets very annoying. I took a quick look thru there settings but I am not sure what would cause this. If it were not for this I would probably use Edge as my default browser over safari.

Submitted by Seva on Thursday, March 25, 2021

Thank you for such an amazing post!
One thing why I switched back from MacOS to windows is that I need to use language switching often to be able to use Russian and english at the same time. Unfortunately MacOS doesn't have this automatic language switching support like windows or iOS have.
Also, my main point why I switched back to windows is because VoiceOver for Mac cannot read indentations like you can set it in NVDA so it will read indentations like 4 spaces or 8 spaces plus it can play the sound when indentation is changed so it really speeds up the work.
How do you do that on Mac?
And again thank you for such an interesting post!
Now i'll stick with windows and linux but I will also try to track what happens in MacOS accessibility because I have my MacBook air 2017.
And last question, do I understand correctly that you don't use trackpad at all?
Do you use the visual studio code's terminal or you use the mac's terminal only?
Thank you!

Submitted by Kevin Shaw on Thursday, March 25, 2021

I set right option and the = key as a shortcut to open Calculator. useful if you need to calculate something quickly or convert to hex.

Submitted by Deon588 on Friday, March 26, 2021

@Cobbler.When I turn on fast searching I can hold the right CMD key and type a letter, Voiceover focus would then jump to the found match not sure why It's not working for you...

Submitted by Deon588 on Friday, March 26, 2021

@Greg Wocher I've never experienced this, might be worth trying Firefox as well as they put a lot of effort into Mac OS accessibility last year......

Submitted by Deon588 on Friday, March 26, 2021

@Seva I'm not sure how to get Voiceover to read indentation, I tried adding a pronounceation for a space but it doesn't seem to work consistently... I very rarely have to write python so not that important for me. I know someone else that's a low vision Python developer on Mac Os so will ask him as well...

Submitted by Brett Lewis on Saturday, March 27, 2021

Thanks for this tip. turning this on helps a lot.
I had some trouble to enable it. I had to use the F7 key from the touchbar.
Generaly really great post. For the people who need indentation, the add-in for visual studio code works pretty well.
I also use braille so that helps too.

Submitted by Alan on Sunday, March 28, 2021

Very useful, it's, more or less, my own setup. However, I cannot agree. Just for the record, I am a developer too and Mac OS is unable to be as productive as Windows and Nvda right now.
It's only my opinion after trying everything: generally speaking, working with a Mac would require more key presses, less available apps, less responsiveness and less updates for the latest web apps and technologies.
So, if you are planing to switch, first try a Mac by yourself and see if it works for you.
A Mac can be very useful, but it's not for everyone and definitely it will not make you more productive.

Submitted by Deon588 on Sunday, March 28, 2021


Please expand on this? I know many serious web/mobile developers that prefer Mac OS so not sure at all what you're referring to...
As for the responsiveness I would suggest trying a M1 mac and deciding for yourself after that.
I have a 15" Dell XPS 9550 (I7 16GB RAM) that can't keep up with my M1 macbook air with 8GB unified memory in any scenario.
Some examples:

- When I compile an Angular app on windows it takes me about 2 minutes, On my mac it takes around 20-30 seconds.
- When I Open IntelliJ idea on Windows it takes about 30-60 seconds for everything to be ready, on Mac it takes about 3-8 seconds...

In terms of Software development you have a proper terminal + zsh and every command line tool you'll ever need, on Windows you have to use WSL to get some sort of useable linux environment and not everything works as it should + the terminal on windows is terrible compared to the one on Mac OS. While we're on the topic of terminals I don't know at all how to copy output spanning thousands of lines from Windows command prompt, powershell or Windows terminal using NVDA, is this even possible? The only thing I really miss from Windows/NVDA is IBM TTS (Eloquence) as none of the vocalizer synthesizers on Mac OS comes close to the speed/clarity of Eloquence. I wish someone with the required knowledge could write a driver for IBM TTS for mac. Seeing as it already works in Linux and Windows it can't be that hard, if I knew where to start I would write a driver myself...

Submitted by Karina Velazquez on Sunday, March 28, 2021

First of all thank you very much for this post. You exactly described part of my issues with macOS versus windows, and I'm still in that starting period when you have bootcamp with windows installed.

Well for this last, I would be very thankful if you could help with managing Microsoft office and Teams (this last is a nightmare) in the same way as on windows. I have seen your main work is with coding, but mine is with briefs and laws, so the main apps I use on windows for my job are outlook office, open book and teams, and I haven't found a way to make me feel as efficient with them as in windows, besides I haven't bought Fine Reader for Mac to replace open book in windows.

Think about it and hope you could give us some tips and tricks for these apps I mentioned.

Submitted by Voracious P. Brain on Sunday, March 28, 2021

for those of you with m1 Max, his voiceover more responsive than it is on slower machines? Every time I get a new Windows machine, like going to a quad core processor, I keep thinking Jaws and NVDA will eliminatedelays when things get complicated, like loading accessibility buffers, but it never happens. On Mac, I get a physical headache after an hour or two of using voiceover in situations where the number of objects slows down processing. Microsoft word is the chief example of this. in a multi page document with several comment annotations, there can be a half second delay with navigating by word, and also a noticeable lag when you even navigating by character. This quickly mounts up and makes using a Mac really frustrating. Otherwise, I’m in one of my ”I hate windows” phases. I have been using my ancient Mac a lot lately. For one thing, try pulling out an eight-year-old Windows laptop and having it run as good as new: it has never happened.

Submitted by a king in the north on Sunday, March 28, 2021

In reply to by Voracious P. Brain

I've had the same problems on windows. NVDA and jaws seem to become unresponsive if I'm doing anything intensive. Any idea as to why that may be, if you don't mind me asking?

Submitted by Voracious P. Brain on Sunday, March 28, 2021

In reply to by a king in the north

well, I don’t want to hijack the thread, but I think it has more to do with memory leaks than processing power. It happens most often when there are complex processing tasks in accessibility buffers, like word tooltips or Microsoft outlook HTML email messages with lots of formatting.

Submitted by Brett Lewis on Sunday, March 28, 2021

In VSCode the "indent report" extension basically plays a tone when the indentation level changes.
No real options but isn't really complicated.

Submitted by Greg Wocher on Monday, March 29, 2021

When I turn this on in either edge or chrome, focus does not seem to work right. If I move to a heading by using Quick Nav, I will turn it off and then try to move with the arrow keys. When I do this I am always at the top of the page instead of where I moved to with Quick Nav. I even try moving keyboard focus to VoiceOver focus using VO plus command plus F4. Even doing this with caret browsing turned on I am always take back to the top of the page when sing just the arrow keys to move. Anyone else see this?

Submitted by Matthew Whitaker on Monday, March 29, 2021

Hi. Thanks so much for creating this post. I found things I didn't know about with Voiceover... hope to start using these tips.
Keep doing your thing and have fun.