tvsub for macOS
Your language and Korean, side by side.
Start with one SRT, SMI/SAMI, or VTT subtitle file you lawfully obtained. tvsub translates the missing track — Korean or your language — with your Anthropic API key, Claude subscription, or ChatGPT subscription, then keeps both tracks independently in sync, side by side or one at a time, without modifying the movie.
정당하게 보유한 자막 파일 하나에서 시작합니다. 외화에 한글 자막이 없으면 한글로 번역하고, 한국 영화에는 시청자의 언어 자막을 만들어 원어 자막과 나란히 볼 수 있습니다. 두 자막은 각각 싱크를 맞출 수 있고, 하나만 표시할 수도 있습니다.
K-content is the focus, not a restriction. Supported player: purchased and rented films in macOS Apple TV.app — Prime Video support is being explored and is not currently available.
Verify your download (SHA-256)
This release is not Developer ID-signed or notarized, so verify the download before opening it.
e3069cdb8255bb9cdeeb021211ee186fa39d10baf7b383ec9ef4b1c1f00a403c
Run shasum -a 256 tvsub-v0.4.0.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.
Pick a backend, or let auto decide
Auto prefers an Anthropic API key, then a signed-in Claude Code CLI (Claude subscription), then a signed-in Codex CLI (ChatGPT subscription).
See cost before and after
API usage shows an estimate before approval and a token-based figure after. Subscription backends show $0 (included in subscription).
Private by design
tvsub v0.4.0 · macOS 13+ · Anthropic API key, Claude subscription, or ChatGPT subscription
Translation text and nearby context go only to the backend you select: the Anthropic API, Claude Code CLI with a Claude Pro/Max subscription, or Codex CLI with a ChatGPT Plus/Pro subscription. API keys stay in macOS Keychain, never a plaintext settings file. Subscription CLI usage adds no API charges.
Advanced automation
The optional MCP extension (tvsub-mcp, a separate package) lets an AI assistant drive tvsub from Claude Code: pick subtitles, keep per-title glossaries with honorifics intact, translate, review provenance, and calibrate sync. It requires a separate Python and MCP setup; everyday translation does not.
Download tvsub MCP v0.2.2 →Verify your download (SHA-256)
This release is not Developer ID-signed or notarized, so verify the download before opening it.
5169baeaf4d353cf9f1681b1ace9ee0628ce245293552aa83deb00328ae00870
Run shasum -a 256 tvsub-mcp-v0.2.2.zip and compare the result with the value above.
한국어 안내
한국어 자막으로 시청하는 방법
먼저 정당하게 보유한 SRT, SMI/SAMI 또는 VTT 자막 파일을 준비합니다. translate.command를 더블클릭하고 파일과 한국어를 선택하면, tvsub가 Anthropic API·Claude 구독·ChatGPT 구독 가운데 사용할 수 있는 번역 백엔드를 자동으로 선택합니다. Claude 또는 ChatGPT 구독 백엔드를 사용하면 예상 비용에 $0 (구독 포함)으로 표시되며 별도 API 비용이 발생하지 않습니다. 번역이 끝나면 Apple TV.app에서 영화를 재생하고 tvsub 오버레이를 실행합니다.
자막 파일은 직접 준비해야 하며, 처리·번역할 권리가 있는 파일만 사용합니다.
자막이 영상과 어긋나면 tvsub의 싱크 보정 기능으로 재생 시점에 맞춥니다.
자막이 겹쳐 보이면 TV.app의 내장 자막을 끕니다.
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.4.0. 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.