If you've ever pasted an SRT file into an LLM and asked for a translation, you've probably seen this: you send 400 subtitle cues and get back 397. Two short lines got merged into one sentence, one line disappeared, and from that point on every translation sits on the wrong timestamp. The output looks fine at a glance, and you only notice when the dialogue on screen no longer matches what people are saying.
We hit this problem constantly while building GeekLink's subtitle translator, so we pulled the core engine out and open-sourced it under GPL-3.0: jev-subtitle-translator .
Why LLMs mangle subtitles
LLMs are trained to write fluent text, and subtitles aren't fluent text. A single sentence often spans three cues, a cue can be just "Yeah." or "—no!", and a model that's trying to be helpful will happily join fragments into natural sentences.…