I built a small open-source reading tool for low-vision Mac users — not a screen reader, very early, sharing anyway

By falcon1337, 19 July, 2026

Forum
Low Vision Accessibility on Apple Products

Hi all,

I have low vision — enough sight to see the screen, but reading by ear is a lot more comfortable for me. VoiceOver was always more than I needed (and, as plenty of threads here cover, not always in a good way), while the built-in Spoken Content stuff was less than I needed. So, over the past while I built myself something in between. It's called Marduk, it's free and open source, and I'm sharing it in case even one other person finds it useful. Fair warning: this is going to be a long list of caveats with a small tool attached.

What it does: it runs in the background and adds vim-style keyboard modes to the Mac. You select some text, hit a key, and it reads to you. While it reads, it pauses your music or YouTube instead of talking over it, and resumes it after. Space pauses and resumes a long read. It speaks symbols sensibly ("arrow", "not equals"), shortens those giant hex strings ("md5 ending in 2 7 e" instead of thirty-two characters of gibberish), and plays little sounds when you change modes so you always know where you are. If you're a vim person, the h j k l selection stuff will feel like home. If you're not, it will feel like a strange cult, and honestly that's fair.

What it is NOT — please read this part before getting excited or annoyed: it is not a screen reader, and it is not a VoiceOver replacement. There is no braille support, and there isn't going to be — that's far beyond what I'm able to build, and I'd rather be honest about that than pretend otherwise. If you rely on VoiceOver, keep VoiceOver. Marduk is aimed at low-vision folks like me who mostly navigate visually but want reading, and everything around reading, to be effortless and audio-first.

The honesty section: this is an early alpha that has been tested on exactly one computer, which is mine. It needs macOS 26 on Apple Silicon. Some of my design trade-offs will absolutely feel like bugs the first time you hit them.

Why I'm posting: reading this forum's threads about the state of things on the Mac made me feel a lot less alone in wanting something different, so it seemed wrong to keep this to myself. If you try it and it breaks, that's genuinely useful to me — file an issue or reply here. If you look at it and tell me why the whole approach is wrong, that's useful too. I have thick skin and no illusions.

Get it here:
https://ssdollahite.com/marduk

Thanks for reading. Happy to answer anything.

Options

Comments

By David S on Monday, July 20, 2026 - 21:36

Sounds like a great idea. Even though I use VoiceOver reading long pieces of texts such as pdf's or other material is clunky in my opinion. If your program has variable reading speed (especially that you can set in the app) that is great. The ability to use space to pause is a must, but how about the ability to move back a sentance or paragraph or move forward through repetitive sentences or paragraph?
Those would be great additions and make it extremely useful!
Thanks

By falcon1337 on Tuesday, July 21, 2026 - 07:07

It does allow for variable speech rate, and I have added vim-style sentence, word, paragraph movement commands. That is not something I use personally, but I know many others might find that useful.

By David S on Tuesday, July 21, 2026 - 11:57

It appears to open Apple Music and is that necessary for the app to work? When I quit music it seems to stop but I get errors when I use a custom function keystroke I use for another action suggesting the app is still active but it is not a running app or in the menu bar... .
Also, it would be great to have a function to start and stop the reading so that if you don't want everything read under the cursor you can activate it when necessary.
Perhaps this is not what you want to do, but in my opinion the Mac built in screenreader for long text is inflexible and you sound like you are are creating something better. To get just text spoken under the cursor, all you need to do built in is activate VoiceOver and customize it to only read text under the cursor when a CMD key is held down.
As I lost my vision and acuity that is the path I started with.
Thanks
David

By falcon1337 on Tuesday, July 21, 2026 - 12:08

This is all good feedback! I know my working style is likely quite...niche? Unique? So, I don't know exactly how to help you transition from where you are to my working style, and it might not be the best. Like I said originally, if you are already using VoiceOver, that might be the better solution. I am not trying to replace VoiceOver. I assume VoiceOver is NOT being used. Without VoiceOver, yes...there are Speak Content options that marduk interacts with. By default, I have Speak content under the cursor turned OFF. In marduk, from normal mode, typing "s" enables that option temporarily. Tapping "s" again turns it OFF again. I usually do not use that as it gets quite noisy for my taste, but the option is there. And yes, once you use r, R, or the shortcut to Speak selected content (I use option plus escape), then you can pause reading, jump forward and back with vim motions, go to X page with 12G, and other vim-style move commands and search forward and back...f and F, for example...

The reason Music was invoked is again, based on my working style, I usually have audio playing in the background...Music, YouTube, etc...and so marduk stops media when reading, so it does kinda have that assumption built-in right now...I will think about how to handle other working styles if the read mode engine ends up being the thing folks want...

Also, marduk does assume karabiner elements is being used, so without that, I am not sure how it would behave...that is on my list of things to test...

By David S on Tuesday, July 21, 2026 - 20:00

My comments were intended to make the app appropriate for more than a single user with an individual work style.
My observation is that neither VoiceOver nor the Screen Reader are very good for longer texts. Your program sounded like it could fill a niche and work with and without VoiceOver as. a text reader but I don't think you either completely understood my comments or it is not your intention to make an app with more general appeal.There is little reason in a general purpose app to load Music because a utility such as this should do what it says and not open other apps.
If it doesn't work alongside VoiceOver, that is a shame since VoiceOver needs too much intervention to simply sit back and listen to text.
This app could be very useful. if you are up to making some changes..

By falcon1337 on Tuesday, July 21, 2026 - 20:09

To clarify the Music thing, that is a macOS behavior where when a play is triggered and no current media player is loaded, it will pop open the default player. Marduk itself does not try to do music management...its only interaction is to play/pause media in relation to spoken content...it should work with whatever your media style is...it is not trying to be a music app or anything...that was a bug I fixed, so it should not open the Music app anymore...unless that is what you are already listening to, in which case Marduk will pause when speaking and resume automatically...if no media is playing, marduk should respect that and NOT trigger anything anymore...

I am certainly willing to take feedback and add options others ask for, provided I decide they still fit within a reasonable scope for the kind of product I have in mind. And yes, my working style, with vim-based nav, is likely more niche than a more broad customer base would ask for...as it is still in alpha, all of this feedback is very helpful to help it go from my specific config to a more configurable product...I have already added a LOT of config options to allow folks to tune various options to their liking...

By Shine on Wednesday, July 22, 2026 - 00:44

This sounds really useful! I have low vision too and I really like the idea of having something between VoiceOver and Spoken Content. I’ll definitely check it out.

By falcon1337 on Wednesday, July 22, 2026 - 03:00

...I am looking forward to any feedback you may have, Shine!

By David S on Wednesday, July 22, 2026 - 11:27

If you are interested in comments as you progress, would you post when you have changes or is there another way to follow along with new builds

By falcon1337 on Wednesday, July 22, 2026 - 11:31

Thanks for the question! It is all on GitHub. You can pull updates with u or uu from normal mode. You can follow activity on GH and post issues, feedback, bugs there. No, I will not post updates here. Release notes are provided with updates.