Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>Varterm TTSNew to Visual Studio Code? Get it now.
Varterm TTS

Varterm TTS

Varterm TTS

|
190 installs
| (1) | Free
Text to speech for Cursor and VS Code. Hear agent replies read aloud as they finish, or highlight any text and listen. Speed, voice, and playback from the status bar. Free, MIT licensed, no account.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Varterm TTS

Varterm reads Cursor and VS Code aloud. Turn on Agent Auto-read and finished agent replies play while you keep working. Highlight text in any file and hear it. Jump through long replies part by part. 66 free neural voices in 29 languages, or your own ElevenLabs key. Play, pause, and change speed from the status bar. Works on macOS, Windows, and Linux. MIT licensed. No account.

Install

Extensions panel → search Varterm TTS → Install. Works in Cursor (Open VSX) and VS Code.

Running many Cursor windows? Install once for your user — not Install Workspace Extension. Workspace installs only cover one folder, which is why the button seems to flip back and forth. Reload your other windows and you are done.

Prefer a file? Grab varterm-cursor-*.vsix from GitHub Releases and run Extensions: Install from VSIX....

macOS and Windows need nothing installed. Playback uses what the OS already ships.

Windows users: if you tried Varterm before October 2026, try it again. Builds 0.1.62 and earlier refused to play on Windows with Background playback currently uses macOS afplay, and 0.1.63 through 0.1.70 started a player that produced no sound. Both are fixed in 0.1.71 and later: playback runs through Windows' own media player, and a failed clip now says why in the Varterm output channel instead of failing silently. The one-star review on Open VSX quoting that error is from 0.1.62, and it was right at the time.

On Linux, one MP3 player needs to be on your PATH: ffplay (from ffmpeg), mpv, mpg123, mpg321, cvlc (VLC), gst-play-1.0, or play (SoX). Installing ffmpeg covers it. Varterm takes the first it finds and checks before synthesising, so a missing player is named up front rather than surfacing as a failure once audio is ready.

More at varterm.com/extensions.

Highlight to listen

Select text in a file and press Play, or the selection / clipboard icon to the right of Auto-read. The highlight is read directly. Copy is only used when nothing is selected.

  • Right-click a selection → Read Selection Aloud.
  • Markdown is stripped before speech. Headings, emphasis, lists, tables, code fences, links, and escapes are removed first, so the voice does not say "hashtag" or "backslash" through a plan or a README.
  • The status bar icon turns into a selection mark while text is highlighted, and a clipboard when it will read what you copied.
  • Click the speed chip (1×) at the end of that row for a menu: 0.75×–2×, voice, and settings. In the voice list, click the speaker to preview; Enter uses that voice.
  • Build plans. Cursor’s plan view is not a text editor and often cannot copy. Press the selection button to hear the markdown file behind the plan (~/.cursor/plans or .cursor/plans). To hear a highlight only, open the plan with Open With → Text Editor.
  • Agent chats. Play and the reply button read the last reply in the sidebar tab you are on. In the Agents window the status bar has its own switch, Agents window on, which reads every finished reply in that window. An editor's Auto-read does not take a reply from another project. A copy from a plan is dropped once you leave that tab. To hear one bug out of a long reply, copy that text in the chat you are on. The status bar icon turns into a clipboard when the copy is seen.

Agent Auto-read

Click Auto-read in the status bar. When an agent reply finishes, it plays.

It changes the loop: send the prompt, go back to your file, and let the answer come to you. No parking on the chat panel watching tokens stream, no scrolling back up to find the one line that mattered — jump back and hear it again.

  • One install covers every Cursor window, and only one window speaks at a time, so parallel agents never talk over each other. Finished replies from every open project join one queue and are read in the order they arrived; whichever window is free reads the next. Other windows show the mark dimmed while one is talking, and pressing Play there moves playback over instead of starting a second copy.
  • Playback stays in the editor — no Music.app, no extra tab. macOS and Windows need nothing installed; Linux wants an MP3 player, covered under Install.
  • Transport is icon-only while playing: jump back, pause, stop, jump forward, replay. A queue icon appears when something is waiting or you can go back. Auto-read joins the queue instead of cutting off the current listen.
  • The queue lists which project each waiting reply came from. Anything still waiting after ten minutes is dropped rather than read out late (vartermCursor.queueItemExpiryMinutes). Set vartermCursor.sharedListenQueue to false to keep each window's queue to itself.
  • Agents window. Cursor does not run extensions inside its Agents window, so an editor reads for it: toggle Agents window on in the status bar (or Varterm: Toggle Agents Window Reading) and that editor reads every finished reply from the Agents window. An editor's own Auto-read never picks up a reply from another project.
  • The logo mark animates between Play and Auto-read so you can spot the window that is talking — five solid capsules rippling out from the centre line. It settles into the static mark when paused and vanishes when idle.
  • The mark also tells you which window is next: green and moving means the reading is happening here, amber means this window has a reply waiting and hovering says where it sits in the line, and a dim static mark means another window is talking.
  • Each jump moves one part, so you can skip the preamble without losing the rest of the reply.
  • Clipboard and pasted text interrupt whatever is playing. The next finished agent reply takes the speaker back — you do not need to toggle Auto-read.
  • Missed it? Press the speech bubble in the status bar, or ⌘⇧⌥A / Ctrl+Shift+Alt+A, to hear the last reply again. It appears once there is a reply to repeat and replays cached audio when there is some, so nothing is re-synthesised. Each window keeps its own last reply, so opening a dozen projects at once does not cost you the one you were listening to, and a window never reads out an answer to a question another project asked.

Long form

Built for text that does not fit in one request — whole files, RFCs, and long agent dumps.

  • Text is split into paragraph-sized parts before synthesis.
  • Playback starts on part one while the rest is still generating, so there is no single-request timeout wall.
  • Hover the jump arrows to see part n of total, and move through them one at a time.
  • vartermCursor.maxTotalTextChars caps a single run (default 1,000,000 characters).

Voices and languages

66 neural voices across 29 languages (31 locales). Pick one from the 1× chip → Voice, or Varterm: Select Read-Aloud Voice, and preview it before committing. Each entry shows its locale and a short description, so typing a language name finds its voices. All of them are free, with no account.

Arabic, Bengali, Chinese (Simplified), Chinese (Traditional), Dutch, English (US, UK, Australia), Farsi, French, German, Hebrew, Hindi, Indonesian, Italian, Japanese, Korean, Malayalam, Polish, Portuguese, Romanian, Russian, Spanish, Swahili, Tamil, Telugu, Thai, Turkish, Ukrainian, Urdu, and Vietnamese.

Varterm reads, it does not translate — a Spanish voice reads Spanish text as written.

The list comes from the service rather than the extension, so voices added later show up without an update.

Voices are locale specific, and a mismatched one returns silence rather than an error. Hand an English voice a page of Chinese and Varterm names a voice that can read it instead of leaving you with a failure and nothing to act on.

Bring your own ElevenLabs key. Run Varterm: Set ElevenLabs API Key, then pick a voice marked Premium in the voice list (this sets readAloudProvider to premium). Your key is kept in the editor's secret storage and your ElevenLabs account is billed directly; Varterm adds nothing on top. If the key is missing or rejected, the read falls back to the free Edge voice and tells you.

Commands

  • Varterm: Read Selection Aloud — speak the highlight. Nothing is copied.
  • Varterm: Read Selection or Clipboard — status bar icon: selection if you have one, otherwise clipboard.
  • Varterm: Read Editor/Selection Aloud — selection first, otherwise the whole file.
  • Varterm: Read Clipboard Aloud — speak whatever you copied.
  • Varterm: Read Errors & Warnings Aloud — speak diagnostics for the current file.
  • Varterm: Toggle Auto-Read — agent replies play when they finish.
  • Varterm: Toggle Agents Window Reading — this editor reads every finished reply from Cursor's Agents window.
  • Varterm: Listen Queue — see and pick from the replies waiting to be read.
  • Varterm: Read Last Agent Reply — hear the last reply again, from the status bar speech-bubble or ⌘⇧⌥A / Ctrl+Shift+Alt+A. No copying.
  • Varterm: Pause Playback / Resume Playback / Stop Playback / Replay Last Audio / Jump Back / Jump Forward.
  • Varterm: Reading Speed and Voice — status bar speed chip: 0.75×–2×, voice, settings.
  • Varterm: Select Read-Aloud Voice — 66 free Edge voices across 29 languages, plus Premium (ElevenLabs, your key).
  • Varterm: Set ElevenLabs API Key — stored in secure extension storage.
  • Varterm: Connect — only for a custom server or token.
  • Varterm: Open Settings / Customize Keyboard Shortcuts.
  • Varterm: Clear Audio Cache / Save Last Audio as MP3.

Shortcuts

Action macOS Windows / Linux
Read editor / selection ⌘+Shift+⌥+R Ctrl+Shift+R
Read clipboard ⌘+Shift+⌥+L Ctrl+Shift+Y
Read last agent reply again ⌘+Shift+⌥+A Ctrl+Shift+Alt+A

Change or remove them with Varterm: Customize Keyboard Shortcuts.

Settings

Everything lives under vartermCursor.*:

  • readAloudVoice, readAloudRate, readAloudProvider — voice, speed, Edge or Premium. Speed is also the 1× chip on the status bar.
  • autoReadAgentOutput — mirrored from the status bar. Off/On after restart comes from ~/.cursor/varterm-autoread.json, so an update cannot turn it back on.
  • autoReadAgentsWindow — this editor reads every finished reply from Cursor's Agents window (default off).
  • showPlayingIndicator — the animated meter in the status bar (default on).
  • resumeRewindMs — how far resume rewinds after a pause (default 600ms) so no words are lost at the join.
  • sharedListenQueue (default on) — every window feeds one queue. Off keeps a window's queue to itself.
  • queueItemExpiryMinutes (default 10; 0 never expires) — drop queued replies that have waited longer than this.
  • maxCachedAudioFiles (default 8), maxCachedAudioAgeHours (default 24; 0 keeps until the count limit).
  • maxTotalTextChars (default 1,000,000), requestTimeoutMs, requestRetries — for very long passages.
  • elevenLabsApiKey — plain-text fallback; the secure command is preferred.
  • telemetry — send crash and failed-read reports to Sentry (default on). Never includes the text you listen to. Also off when Cursor/VS Code telemetry is off.

Build it yourself

npm install
npm run build
npm run package

MIT licensed. Source: varterm/extensions.

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft