tvsub for macOS
Watch K-dramas and Korean films in your language.
When an Apple TV purchase does not include the subtitles you need, translate a source file with Claude directly inside tvsub. Then tvsub keeps it in sync without touching the movie itself.
K-content is the focus, not a restriction: tvsub works the same way with any movie you bought in Apple TV.app.
Verify your download (SHA-256)
This release is not Developer ID-signed or notarized, so verify the download before opening it.
c44706c870ea2de616d556cc8ec8ff8e6c0f351802b5b7f6ef1a3ce814b5646a
Run shasum -a 256 tvsub-v0.2.1.zip and compare the result with the value above.
How it works
From missing subtitles to your language.
Your language may not be included
A Korean film or episode you bought in Apple TV.app may not offer subtitles in the language you want.
Translate it inside tvsub
Double-click translate.command, choose a lawfully obtained SRT or SMI file and your language, review the estimate, then translate.
tvsub keeps it with the scene
A transparent overlay follows play, pause, rewind, and seek while Apple TV.app keeps playing normally.
The video and its DRM-protected stream stay inside Apple TV.app. tvsub does not decrypt, copy, capture, or alter either one.
Built-in translation · Experimental
Turn a source subtitle into the language you speak.
Double-click translate.command, choose a source file and target language, then review the cost estimate before you approve the translation. The result is saved into the same subtitles folder and appears in tvsub automatically.
A source subtitle is still required. Translation cannot recover dialogue that was never captioned, and LLM output can miss Korean honorifics, relationships, wordplay, or cultural references. Review the result before relying on it.
No Claude Code, Python, MCP client, or extra package is required.
Choose a target language
Ask for the language you want; the source can be Korean or another subtitle you trust.
Keep the timeline intact
Cue IDs, cue count, and timecodes are checked before the translated SRT is saved.
Carry names and context
Adjacent cues help preserve names and conversational context, but do not guarantee translation quality.
See cost before and after
Review an estimate before approval, then see a token-based usage estimate after completion.
Private by design
tvsub v0.2.1 · macOS 13+ · your Anthropic API key and API credits
Your API key is stored in macOS Keychain, never a plaintext settings file. When you approve a translation, the selected subtitle text and nearby context are sent only to Anthropic. Usage is billed to your Anthropic account.
Advanced automation
The optional MCP extension remains available for developers who want to control tvsub from Claude Code. It requires a separate Python and MCP setup; everyday translation does not.
Download tvsub MCP v0.1.0 →Verify your download (SHA-256)
This release is not Developer ID-signed or notarized, so verify the download before opening it.
f788503b4d9b88d021055dc0ca85383be619f176760f5f307052c90881ed4468
Run shasum -a 256 tvsub-mcp-v0.1.0.zip and compare the result with the value above.
Install
Direct, transparent distribution.
This direct download has only an ad-hoc signature: it is not signed with an Apple-issued Developer ID certificate and is not notarized. Because macOS cannot verify it with Apple, Gatekeeper keeps its executable files in download quarantine until you explicitly remove that attribute.
- 1.
Download and unzip the folder
Keep the folder together. Add your own subtitle file to its
subtitlesfolder. - 2.
Remove download quarantine once
First compare the downloaded ZIP's SHA-256 with the value above. Then, in Terminal, type the command below, add a space, drag only the unzipped tvsub folder into the window, and press Return. This removes Gatekeeper's quarantine attribute recursively from that folder, so only do it if you trust the source and the checksum matches.
xattr -dr com.apple.quarantine <folder> - 3.
Translate if needed, then open run.command
Double-click
translate.commandfirst if you need another language. Then openrun.commandand keep its Terminal window open while you watch.
Sync
Two lines fix the whole movie.
One anchor corrects a fixed delay. A second, far apart, also corrects gradual timing drift between different cuts or frame rates.
- 01
Pause on a spoken line
Press Space at the moment a line is spoken.
- 02
Open sync.command
Search for a few words and select that exact subtitle cue.
- 03
Resume and check
The first anchor removes the immediate offset.
- 04
Repeat near the end
Do it again in the last 30 minutes to correct timing drift.
FAQ
Before you download.
Where do I get subtitle files?
tvsub does not include movie subtitles. Use an .srt or .smi file that you lawfully obtained or created for your own viewing. Subtitles and translations may be protected by copyright; do not redistribute them.
Can tvsub create subtitles from Korean audio?
Not in v0.2.1. tvsub needs a source subtitle file; it does not transcribe dialogue from the movie. The source can be Korean or another language you trust.
How reliable is the translation?
Translation is generated by an LLM and should be reviewed. Honorifics, relationships, wordplay, names, and cultural references can be wrong or inconsistent, especially when the source subtitle has already been translated once.
Does tvsub bypass Apple TV DRM?
No. It does not read, decrypt, capture, or modify the video. It only reads playback timing that macOS exposes and draws a separate window above Apple TV.app.
Is this made by or affiliated with Apple?
No. tvsub is an independent personal project. Apple, Apple TV, and macOS are trademarks of Apple Inc.
Could a macOS update break it?
Yes. tvsub relies on a private MediaRemote API. It works on the tested macOS versions, but Apple can change or remove that API without notice.
Why is it not in the Mac App Store?
The private API is not suitable for Mac App Store review. This release is not Developer ID-signed or notarized; the download includes the source code and is distributed directly.