Bundle

Claude Read Aloud

A speaker button and right-click reader that lets Claude Code speak its replies aloud, using free system voices or ElevenLabs and OpenAI TTS.


91
Spark score
out of 100
Updated 4 days ago
Source checked Sep 18, 2026
Version 1.0.0
Models
claudegpt 4o

Add to Favorites

Source

Get it from source

Spark does not host a copy of it.

Open source

Reports

Agent outcome reports

No reports yet

Overview

Claude Read Aloud

Adds a speaker button, a right-click Read aloud menu item, and hotkeys to Claude Code and VS Code so replies are read aloud instead of scanned on screen. Ships with free system voices and an optional local Kokoro neural voice, plus paid Speechify, ElevenLabs, and OpenAI options for higher quality. A companion VS Code extension adds a status bar button, a settings panel inside Claude Code's own sidebar, and a voice picker. Use it during long Claude Code sessions to reduce eye strain, or when reading itself is the barrier, such as low vision, dyslexia, or screen fatigue. Skip the VS Code in-chat button if you would rather not have the extension patch Claude Code's own webview files - the hotkeys and status bar button work without it.

The workflow you build

claude-read-aloud turns Claude Code's replies into audio instead of text you have to scan. The bundle has two pieces that work together: a Claude Code plugin, which is the engine (voices, chunked playback, /read-aloud:* slash commands, an optional auto-read hook), and a VS Code extension, which adds the buttons (a status bar button, a toolbar icon on the Claude Code panel, hotkeys, a right-click Read aloud menu item, an in-chat speaker button next to the microphone, and a settings panel inside Claude Code's own sidebar). Terminal-only users need just the plugin; VS Code users install both.

Long replies start speaking within one to three seconds regardless of length, because the text is split at sentence boundaries into ramped chunks, with the next chunk synthesizing while the previous one plays. Voices range from free to paid: system voices (macOS say, Linux speech-dispatcher, Windows SAPI) and a free local Kokoro neural voice with 54 options need no account, while Speechify (about $10 per 1M characters), ElevenLabs (from about $5 per month), and OpenAI (about $15 per 1M characters) need your own API key. A command provider lets any local engine, such as Piper, plug in through a command template. Config lives at ~/.config/claude-read-aloud/config.json (or the Windows AppData equivalent), and API keys are set as environment variables rather than stored in that file.

When to use this bundle - and when NOT to

Reach for it in long Claude Code sessions where you would otherwise skim instead of read, or where reading itself is the obstacle, such as low vision, dyslexia, or screen fatigue after hours of use. Auto-read is off by default on purpose: a working session produces hours of speech per day, so most people start with on-demand reading and only turn on /read-aloud:speak-auto once they know they want it. Replies are capped at 12,000 characters (about 14 minutes) and code blocks are spoken as "code omitted" rather than read literally.

Skip the VS Code in-chat button specifically if you are uneasy about the extension patching two files of your installed Claude Code extension on disk: it appends a script to webview/index.js and adds one Content-Security-Policy directive, connect-src http://127.0.0.1:48777, to extension.js so the button can reach the extension's local server. Originals are backed up alongside each file and restored on removal, and every Claude Code update wipes the patch until the extension reapplies it on next reload - but the hotkeys and status bar button work without it either way.

How to get started

Install the plugin first, then the VS Code extension if you use it:

claude plugin marketplace add michaelpgifford/claude-read-aloud
claude plugin install read-aloud@claude-read-aloud

On Linux, run /read-aloud:voice-setup first to install the free Kokoro voice (about 340MB, one time) - the stock Linux voice is espeak, which the plugin itself calls not pleasant to listen to. macOS and Windows system voices are usable without any extra setup. The VS Code extension is installed separately from the Marketplace by searching "Claude Read Aloud", and it auto-detects the plugin once both are present.

Who it's for

Developers who spend all day inside Claude Code and want to keep their eyes on the code while listening to long answers, and anyone for whom reading text on screen is the harder part of the job. It is released under the MIT license.

Source README

claude-read-aloud

Hear Claude's replies instead of reading them. A speaker button inside
Claude Code's chat box, right-click Read aloud on any highlighted text, a
hotkey, and a settings panel in Claude's own sidebar - voices from free system
TTS up to Speechify / ElevenLabs / OpenAI with your own key.

Read aloud speaker button inside the chat input, beside the microphone

If you work with Claude Code all day, you read all day - and at some point you
stop absorbing and start skimming. Listening shifts the load from your eyes to
your ears: you take in the whole answer, keep your eyes on the code it
describes, and reply better. And when reading itself is the hard part - low
vision, dyslexia, screen fatigue - it makes Claude Code usable at all.

Free out of the box: system voices with zero setup, or one command installs
[Kokoro], a genuinely good local neural voice - no account, no key, 54 voices.

▶ Watch the 30-second demo

Two pieces

Piece What it gives you
Claude Code plugin (this repo) the engine: voices, chunked playback, /read-aloud:* commands, auto-read hook
VS Code extension (vscode-extension/) the buttons: status bar, toolbar, hotkeys, right-click Read aloud, the in-chat speaker, and a Read Aloud settings panel inside Claude's sidebar

Install the plugin first (it's the engine), then the extension if you use
VS Code. Terminal-only users need just the plugin.

Install

claude plugin marketplace add michaelpgifford/claude-read-aloud
claude plugin install read-aloud@claude-read-aloud

(Same two steps work inside Claude Code as /plugin marketplace add … and
/plugin install …, or from a local clone by passing its path to
marketplace add.)

Requires Python 3.9+ on your PATH (python3, or python on Windows).
No packages to install - the whole engine is one standard-library script.

Use

/read-aloud:speak read the last reply aloud
/read-aloud:speak-stop stop
/read-aloud:speak-auto on read every reply automatically (off by default)
/read-aloud:speak-status show provider, voice, and where the config lives
/read-aloud:voice-setup one-time install of the free Kokoro neural voice

On Linux, run /read-aloud:voice-setup first. macOS and Windows system
voices are decent out of the box; Linux's stock voice is espeak, which is not.
One command and ~340MB later you have a genuinely pleasant local voice, free
forever - the plugin will remind you once if you skip this.

(Type /speak and let completion fill the namespace - commands are listed
under their plugin name.)

Long replies start speaking in ~1-3 seconds regardless of length: text is
split at sentence boundaries into ramped chunks (small first - its size is
the time-to-first-sound), and each next chunk synthesises while the previous
one plays, so there are no gaps.

Voices

Provider Cost Setup
system (default) free none - uses macOS say, Linux speech-dispatcher, or Windows SAPI
kokoro free /read-aloud:voice-setup - local neural voice, 54 voices, no account (one-time ~340MB download)
speechify ~$10 / 1M chars export SPEECHIFY_API_KEY=…
elevenlabs from ~$5/mo export ELEVENLABS_API_KEY=…
openai ~$15 / 1M chars export OPENAI_API_KEY=…
command free any local engine ([Piper], [Kokoro], …) via a command template

Config lives at ~/.config/claude-read-aloud/config.json
(%APPDATA%\claude-read-aloud\config.json on Windows):

{
  "provider": "speechify",
  "voice": "oliver",
  "speed": 1.0,
  "auto_read": false
}

voice is the provider's own voice name/id (macOS: say -v '?' lists yours;
cloud providers list voices in their consoles). API keys go in environment
variables, never in the file.

A local neural engine plugs in through command - {text} is replaced with
the text to speak; add {out} if your engine writes a WAV for the plugin to
play (that's what enables gapless chunking):

{
  "provider": "command",
  "command": "piper -m /path/to/voice.onnx -f {out}"
}

The fine print that saves you a support ticket

  • Auto-read is off by default, on purpose. A working session produces hours
    of speech per day (we measured 4+). Try /speak-auto on - most people come
    back to on-demand within a day, and that's the intended workflow.
  • Replies cap at 12,000 characters (~14 minutes) and say so when cut.
    Code blocks are spoken as "code omitted" - nobody wants JSON read aloud.
  • Stop always works mid-sentence: /speak-stop, or the button/hotkey below.
  • Speechify's WAV arrives with broken (streaming) header sizes; the plugin
    repairs them - if you ever hear a burst of static with another tool, that's
    what it was.

Buttons and hotkeys in VS Code

The companion extension adds, safely and update-proof:

  • a status-bar Read aloud button (bottom-left, under the chat input),
  • a toolbar icon on the Claude Code panel,
  • Ctrl+Alt+S / Ctrl+Alt+X (⌘⌥S / ⌘⌥X on macOS),
  • the settings panel, voice picker, right-click menu, and in-chat button below.

Install it from the VS Code Marketplace - search "Claude Read Aloud", or:

code --install-extension MichaelGifford.claude-read-aloud-button

It auto-detects the installed plugin. (From source instead: clone this repo,
npx @vscode/vsce package in vscode-extension/, and install the .vsix
via Extensions → … → Install from VSIX.)

The status-bar button sits bottom-left, directly under the chat input, and the
toolbar icon rides on the Claude Code panel itself:

Read aloud button in the VS Code status bar Speaker icon in the Claude Code panel toolbar

The good stuff: in-chat button + right-click "Read aloud"

The two triggers that actually feel native - and, in daily use, the ones you
end up reaching for:

  • A speaker button inside the chat box, right next to the mic. Click it and
    it reads the reply you're looking at - the visible conversation in that pane,
    never another tab's and never a transcript from somewhere else. Highlight
    text first and it reads that, cutting off whatever was playing: a new
    reading always replaces the old, because two at once are unlistenable.
  • Highlight any text in the chat → right-click → "Read aloud" in the same
    menu as copy/paste.

The speaker sits right where your eyes already are, next to the mic:

Read aloud speaker button inside the chat input, beside the microphone

Highlight, right-click, and it's in the same menu as copy and paste:

Right-click menu on highlighted text showing Read aloud below Cut, Copy, and Paste

The extension offers this once on startup (a small toast); or run
"Claude Read Aloud: Install in-chat button" from the Command Palette,
confirm, reload. Undo any time with "Remove in-chat button".

Settings panel and voice picker

A Read Aloud section lives inside Claude Code's own sidebar: current voice
with test, provider switcher, speed, auto-read, and the in-chat button toggle.
Change voice… opens a searchable picker of the current provider's voices -
selecting one saves it and plays a sample in that voice immediately.

Read Aloud settings panel inside the Claude Code sidebar Voice picker listing Kokoro voices, michael highlighted

Read this part before enabling it. VS Code offers no way to put a button
inside another extension's webview, so this works by patching two files of
the installed Claude Code extension
on your machine:

  • webview/index.js gets a script appended (never spliced - an upstream
    change can stop it matching, but can't corrupt the bundle) that inserts the
    button and captures right-click selections.
  • extension.js's Content-Security-Policy gains one directive,
    connect-src http://127.0.0.1:48777, so the button can reach this
    extension's local server. That is a real, if small, widening of the webview
    sandbox - one localhost port - and it's the entire reason this is opt-in
    rather than default.

Originals are backed up beside each file (*.cra-orig) and restored exactly on
removal. Every Claude Code update wipes the patch; the extension notices on
startup and re-applies it, asking you to reload. Worst case, the button
disappears until the next reload - the hotkeys and status-bar button never
depend on it. If you previously hand-patched these files with something else,
revert that first; the patcher refuses to stack two injections.

This is a userscript-style local mod, in the same spirit as browser extensions
that add buttons to websites. It never leaves your machine. The right fix is
Anthropic shipping a TTS affordance natively - if you want that, add your
voice to a feature request on
anthropics/claude-code.

How it decides what to read

  • /speak and auto-read use the session's own transcript (hooks receive the
    exact path - never a guess).
  • The VS Code button scopes to the window's workspace, so a busier session in
    another project can't hijack what gets read.

FAQ

Common questions

Discussion

Questions & comments · 0

Sign In Sign in to leave a comment.