Speak Selection not working on Mac? Make ⌘C read it instead
Selected some text, pressed the shortcut, heard nothing? Here are the real fixes, in order — and an honest explanation of the apps where no setting will ever fix it.
First, the fixes that usually work
1. Make sure Speak Selection is actually on
Apple’s read-aloud feature lives in Accessibility settings, and macOS updates occasionally leave it switched off:
- Open System Settings → Accessibility → Spoken Content.
- Turn on Speak Selection.
- While you’re there, check System Voice is set and its volume slider isn’t at zero.
2. Check the keyboard shortcut
The default shortcut is ⌥⎋ — Option + Escape. Click the ⓘ (info) button next to Speak Selection to see or change the current key combination. If you’ve remapped Escape (or use an app that captures it), pick a different combination here.
3. Test somewhere it should definitely work
Open TextEdit or Notes, type a sentence, select it, and press the shortcut. If it speaks there but not in the app you were using, your settings are fine — the problem is the app, and that’s the next section.
4. Try a quick restart of the feature
Toggle Speak Selection off and on again, or log out and back in. Speech services occasionally wedge after a long uptime; this clears them.
Why it fails in Warp, VS Code, and Figma — and always will
Speak Selection doesn’t “see” your screen. It asks the frontmost app, through macOS accessibility APIs, “what text is selected right now?” — and then speaks the answer. That works beautifully in apps built on Apple’s native text system. It fails silently in apps that draw their own text on the GPU, because they never register that text with the accessibility tree. There is nothing for the system to read.
- Warp renders its terminal with a custom GPU engine and exposes no accessibility tree at all. Users have been asking for Speak Selection support since 2022 — see open issues warpdotdev/Warp #7139 and #10954 — and it remains unfixed, because it would require building that tree from scratch.
- VS Code (and Electron apps generally) render text inside a web view. Accessibility support exists mainly for screen readers and is partial; Speak Selection often reads nothing, or something other than your selection.
- Figma paints text onto a canvas. To the accessibility APIs, your selected text simply doesn’t exist.
No System Settings toggle fixes this, because the missing piece is inside each app. Warp’s issues have been open for years; canvas tools like Figma are unlikely to ever expose selections this way.
A workaround that needs no new software
Copy works in all of these apps — every app implements ⌘C. So you can pipe your copied text into the built-in say command:
pbpaste | say
Copy the text, switch to a terminal, run that, and macOS speaks it. It genuinely works — the catch is doing that dance every single time, and say won’t switch voices when you copy Chinese or Japanese.
The automatic version: ClipSpeak. ClipSpeak is a tiny menu bar app that does the pbpaste | say trick for you, instantly, on every copy — in Warp, VS Code, Figma, and everywhere else, because ⌘C never breaks. It auto-detects the language (Traditional Chinese is spoken in Cantonese, Simplified in Mandarin, Japanese and Korean auto-picked), keeps a searchable history of your copies that you can replay aloud, and runs 100% on-device with Apple’s voices. US$4.99 once — no subscription.
The short version
- Re-enable Speak Selection: System Settings → Accessibility → Spoken Content.
- Check the shortcut (⌥⎋ by default) and test in TextEdit.
- If it works in TextEdit but not Warp / VS Code / Figma, the app has no accessibility text to read — that’s a known, years-old limitation, not your settings.
- In those apps, copy instead:
pbpaste | saymanually, or ClipSpeak to make every ⌘C read itself aloud automatically.