Overtone review (2026): an honest verdict on the open-source caption tool that recuts subtitles for 16:9 and 9:16 from one file — accuracy, limits, and fit.
Overtone is one of the best-engineered open-source caption tools available: its word-once model, LLM-corrected wording with code-owned timestamps, and standout line-breaking make it a strong choice for developers who need provider-grade subtitle files cut for multiple screen shapes. It is a CLI and libraries with no GUI, narrow language depth, and no video output — so it is a component, not a finished creator product.
Overtone (the `lonthq/overtone-captions` project, made by Lont at lont.ai) takes a clear position on an unglamorous problem: captions look right in the frame they were cut for and wrong in every other one. Its answer is to store each spoken word once, with its time and speaker, and derive a separate caption track for each picture shape — 16:9 and 9:16 by default, or any aspect you name. "Captions cut for every screen shape, from one file" is the whole pitch, and the project largely delivers on it.
This review covers what Overtone does well, where it stops, and who it is actually for, based on the project's documentation, its published benchmark, and its stated limits as of the verification date. It is open-source and MIT-licensed, so there is no product to buy and no vendor roadmap to weigh — the trade-offs are about scope and audience, not price.
The short version: for a developer or a small studio that wants precise, provider-grade subtitle files cut correctly for both a wide and a vertical frame, Overtone is excellent and genuinely thoughtful. For a creator who just wants captioned video posted to their feeds, it is the wrong layer of the stack — it makes caption files, not finished clips, and you drive it from a terminal.
Overtone is an open-source caption toolkit that ships as three npm packages: a CLI (`overtone-captions`, Node.js 22.12+) with commands like `transcribe`, `recut`, `burn`, `export`, and `validate`; a video.js plugin (`videojs-overtone`) with five style packs; and a format package (`overtone-format`) that defines the `.overtone.json` file along with a JSON Schema, a validator, and WebVTT, SRT, and text exporters. There is also an agent skill for Claude Code and Codex. The core data model stores each word once and holds any number of per-shape "cuts" that reference those words, so a vertical track and a horizontal track come from the same source rather than being hand-wrapped twice. It runs two ways. `recut` is fully offline — no API key, no ffmpeg — and rebuilds the line breaks of an existing SRT or WebVTT file, estimating word times from the cues. `transcribe` needs ffmpeg and provider keys: OpenAI's gpt-transcribe and Azure AI Speech are the defaults, ElevenLabs Scribe is optional, and `--local` runs it with whisper.cpp and Ollama. Where engines disagree an LLM picks the wording, a second LLM step corrects terms and names against your glossary and flags uncertain edits for review, and a versioned rule set handles line-breaking — but the LLM never sets a timestamp; code validates only the structure of its edits.
Overtone is for developers, technical video teams, and tool-builders who care about caption quality and want to own the pipeline. If you process a library of talks, courses, or podcasts and need clean subtitle files cut for multiple aspect ratios — or you want an offline recut of captions another tool produced — it fits well, especially since it can run entirely local. It also suits anyone embedding captioning into their own app via the format package or the video.js plugin. It is not for a non-technical creator who wants captioned, platform-ready video: there is no GUI, the output is subtitle files rather than rendered clips, and you operate it from a command line. Those creators are better served by a tool that builds captioning into the render, like Kompozy.
| Dimension | Score | Why |
|---|---|---|
| Line-break quality | 4.6 / 5 | The standout: a published benchmark reports 0.3% of breaks landing on a weak word, versus 28.8% for fill-to-limit and 16.1% for ElevenLabs SRT. |
| Transcription accuracy | 4.0 / 5 | A small public benchmark shows ~5.3% WER by combining engines, beating either engine alone — but the sample is small and provider-dependent. |
| Multi-shape caption design | 4.5 / 5 | Storing words once and deriving per-shape cuts is a clean, correct model that avoids the usual double-wrapping rework. |
| Provider flexibility & local mode | 4.3 / 5 | OpenAI, Azure, and optional ElevenLabs, or fully offline with whisper.cpp + Ollama; a dry-run estimates cost before sending. |
| Developer experience | 4.0 / 5 | A coherent CLI, a documented .overtone.json format with a validator, a video.js plugin, and an agent skill for Claude Code and Codex. |
| Language coverage | 3.0 / 5 | Full line and number rules only for English and Dutch; five more languages get detection with neutral rules; no translation. |
| Feature completeness | 2.8 / 5 | No GUI editor, no sound tags like [music], and a two-hour media cap — deliberately scoped, but limiting for some jobs. |
| Value (open-source) | 4.2 / 5 | MIT-licensed and free; you pay only provider API costs on the transcribe path, and nothing at all for offline recut. |
There is nothing to buy. Overtone is open-source under the MIT license, so the software itself is free, and the offline `recut` workflow — rebuilding caption cuts from an existing SRT or WebVTT — costs nothing at all because it uses no API and no ffmpeg. That alone makes it a fair deal for anyone who already has transcripts and just needs them cut well for multiple shapes.
The only money involved is on the `transcribe` path, and it is pass-through provider cost, not an Overtone fee. The project cites roughly $0.023–0.025 per audio minute with its default OpenAI + Azure setup, or about $0.029 with ElevenLabs Scribe, at list prices — and a `--dry-run` flag estimates that cost before sending anything. If even that is unwelcome, `--local` runs the whole thing on whisper.cpp and Ollama for no per-minute charge beyond your own compute.
For a developer, this is close to ideal pricing: free tooling, transparent and optional provider costs, a dry-run to avoid surprises, and a local escape hatch. The honest caveat is that "free" assumes you can operate a CLI and wire it into your workflow; the cost Overtone does not show up on an invoice is the engineering time to run it, which is exactly the cost a finished creator app is charging you to avoid.
| Use case | Fit | Why |
|---|---|---|
| Recutting existing subtitles for vertical and horizontal | Strong | The offline recut rebuilds line breaks for any aspect from one file, with no API key or ffmpeg needed. |
| A developer building captioning into their own app | Strong | The documented .overtone.json format, validator, and video.js plugin are made to be embedded. |
| High-quality, privacy-sensitive local transcription | Strong | The --local path runs on whisper.cpp and Ollama, with code owning timestamps for reliable timing. |
| Captioning a large library of talks or courses | OK | Strong for English/Dutch and batchable via CLI, but the two-hour media cap and no-translation limit can bite. |
| Captioning in a language other than English or Dutch | OK | Five more languages get detection, but only neutral line rules apply and there is no translation. |
| A creator who wants captioned, posted short-form video | Weak | Overtone makes caption files, not rendered or reframed clips, and has no scheduler or publishing. |
| A non-technical user who wants a point-and-click editor | Weak | There is no GUI — everything runs through a command line on Node.js. |
It would be unfair to frame Overtone and Kompozy as rivals, because they sit at different layers. Overtone is a caption component — a library and CLI that produces provider-grade subtitle files, cut well for multiple shapes, for a developer to use. Kompozy is a content generation and publishing engine; captioning is one step inside a pipeline that also generates video, images, carousels, blogs, and newsletters, and ships them. If your need is literally "high-quality caption files I control," Overtone wins that slice and Kompozy is not trying to.
Where they touch is the shared insight — captions should be correct for every screen shape, not re-wrapped by hand. Overtone applies that to text files you then take elsewhere to render; Kompozy applies it to the finished video itself, burning on-brand auto-captions into a Persona Short or Clipped Short and reframing the clip to each platform's aspect ratio in one pass, then scheduling it across the eight social platforms plus blog and email. The honest way to choose: if you are technical and want the files, use Overtone; if you want captioned, reframed, published video without a terminal, Kompozy does the whole job. The two can even coexist — recut a transcript in Overtone, produce and distribute the video in Kompozy.
For a developer or technical video team that wants precise caption files cut for multiple aspect ratios, yes — it is well-engineered, open-source, and free, with excellent line-breaking and an offline mode. For a non-technical creator who just wants captioned video posted to their feeds, it is the wrong layer; it makes subtitle files, not finished clips, and runs from a command line.
Yes. It is open-source under the MIT license, and the offline recut of an existing subtitle file costs nothing. The AI transcribe path uses third-party providers (OpenAI, Azure, optionally ElevenLabs) that charge roughly $0.023–0.029 per audio minute, or you can run it locally with whisper.cpp and Ollama for no per-minute fee.
A small public benchmark reports about 5.3% word error rate by combining engines — better than either engine alone — and 0.3% of line breaks falling on a weak word, far below the fill-to-limit and ElevenLabs-SRT baselines. The sample is small and results depend on your audio and chosen provider, so treat the numbers as directional.
Full line-cutting and number rules exist for English and Dutch. German, French, Spanish, Italian, and Portuguese get language detection with neutral rules, and other languages fall back to neutral rules. Space-less scripts like Chinese, Japanese, and Thai are cut by phrase. Overtone does not translate.
No. Overtone deliberately does not translate captions and does not add sound-event tags such as [music]. It also has no GUI editor and caps media at two hours per file. It is focused on transcribing, correcting, and cutting captions, not on being a full subtitling suite.
No. It outputs caption files (.overtone.json plus WebVTT/SRT/text) and can burn captions via its tooling, but rendering, reframing, and publishing video are out of scope. To generate captioned, platform-ready video and schedule it, pair a transcript with a content engine like Kompozy.
OpusClip and Submagic are polished, GUI creator apps that auto-caption and style clips for you. Overtone is a developer-facing library and CLI that gives you precise control over the caption files and runs offline or local, but has no GUI and does not render finished social clips.