UnderText

English as it’s spoken.
Chinese right beneath it.

Live English subtitles with a Chinese translation, running entirely on your Mac.
No internet. No cost. Almost no delay.

Requires a Mac with Apple silicon (M1 or later) and macOS 13 or later

Recorded on a MacBook Air M4 during an English podcast. Faded words are still being recognised or translated.

Three promises. All kept.

On-device

0 bytes

sent over the network

Your audio never leaves this Mac. All five models run on its own CPU and GPU, and once they are downloaded, it works offline.

Free

$0

no account, no subscription

No API keys either. The code is MIT-licensed, and every model it uses is openly released.

Near real time

< 0.1 s

from English to Chinese draft

The Chinese draft appears almost with the English (median). When a sentence ends, the accurate translation follows in about 0.4 s (power saving).

Listen first.
Then confirm.

Grey words are still being recognised and may change. Once they turn white, they stay.
The same goes for the Chinese: confirmed text on screen is never rewritten.

S1
Confirmed Still being recognised or translated

Every sentence. Three translations.

A fast model goes first, and a better one confirms it. That is how it is both quick and accurate.

1

Draft

Opus-MT, on the CPU

Translates the whole sentence so far right away, including words not yet confirmed. Results come in tens of milliseconds, and each new draft replaces the last.

2

Continue

Qwen3.5-2B, on the GPU

After every 3 newly confirmed words, or at a comma or semicolon, Qwen continues from the Chinese already confirmed, with the previous 3 sentences as context. Characters two answers agree on are confirmed.

3

Finish

Qwen3.5-2B, on the GPU

When the sentence ends, Qwen gets the complete sentence and translates the rest after the confirmed Chinese.

Five open models.
One Mac.

Silero VAD

Finds where speech is

0.6 MB · CPU

Parakeet-TDT 0.6B

Speech to English, updated every 0.5 s

630 MB · CPU

Opus-MT

Chinese draft

150 MB · CPU

Qwen3.5-2B

Final translation

1.2 GB · GPU

TitaNet

Voice prints for speaker labels

39 MB · CPU

0.4 s

of silence ends a segment

0.5 s

between English updates

2×

a word must match twice to turn white

Who’s talking?
You’ll know.

Every 1.5 s, TitaNet listens to the latest audio and compares its voice print with everyone heard so far. A familiar voice is labelled in about 1.5 s; a voice that matches no one becomes a new speaker after about 4.5 s. A new paragraph starts when the speaker changes or after a 1.2 s pause.

Built to last the hour.

A fanless MacBook Air M4, translation and speaker labels on, running for 30 minutes.
With power saving, Qwen is called less often with shorter prompts: lower latency, steady throughout.

Qwen time per call (average per minute)

DefaultPower saving

313 ms

Qwen per call with power saving (median). 730 ms with the default settings.

0.37 s

From the end of a sentence to the final Chinese (median). 0.92 s with the default settings.

25%

Share of time Qwen keeps the GPU busy with power saving. 69% with the default settings.

Everything you need.

Any audio source

Your microphone, a WAV file, or anything playing on your Mac (Zoom, Teams, YouTube) through BlackHole.

Always on top

The subtitle window floats above everything. Drag it anywhere, and it opens in the same place next time.

Stacked or side by side

English above Chinese, or the two side by side. Set each text size and the background opacity separately.

Save with one click

Saves everything since the last clear as text, with the real time and speaker for each paragraph.

Power saving

Made for the fanless MacBook Air: less computing, a cooler Mac, and even lower latency.

Models download themselves

On first launch it lists the models and their sizes, picks the faster server, and resumes if the download stops.

Try it now.

Free and open source. Three steps to install.

  1. 1

    Download the .dmg from GitHub Releases

  2. 2Drag UnderText into Applications
  3. 3Open it. It downloads about 2.2 GB of models the first time

Requires a Mac with Apple silicon (M1 or later), macOS 13 or later, and about 2.2 GB of disk space.
The app is not signed by Apple: the first time, click Open Anyway in System Settings → Privacy & Security.

Questions

Does it really work without the internet?

It only needs the internet once, to download the models (about 2.2 GB) on first launch. After that, recognition, translation and speaker labels all happen on your Mac, and no audio or text is sent anywhere.

Is it really free? Will that change?

The code is open source under the MIT License, with no account, subscription or paid features. Silero VAD, Parakeet-TDT, Opus-MT, Qwen3.5 and TitaNet are all openly released models; their licences are listed on GitHub.

Which languages does it support?

It recognises English and translates into Simplified Chinese. You can also turn translation off for English subtitles only.

Can it subtitle Zoom or YouTube?

Yes. Install the free BlackHole driver, create a Multi-Output Device in Audio MIDI Setup, then choose BlackHole as the audio source in UnderText.

Does it run on Intel Macs?

Not yet. The app and the model runtimes are built for Apple silicon (M1 or later), and the translation model needs the Apple GPU to keep up in real time.

Will my MacBook Air get hot?

For long sessions, turn on power saving. In a 30-minute test it cut the time Qwen keeps the GPU busy from 69% to 25%, with lower latency too.