2026-09-28 · 7 min read
Zubtitle alternative for developers: captions without the editor
Zubtitle does its job well, as long as your job looks like this: a handful of videos a week and a person in the loop. You upload a clip, it auto-transcribes, you fix a few words, pick a style, download. For a social manager posting the occasional clip, that workflow is genuinely fine.
The moment captions become a step in a pipeline - a UGC tool generating dozens of videos a day, a clipping product, an agent that posts on a schedule - the editor turns into the bottleneck. Two walls show up fast: a human has to click through every single video, and the plan itself meters you. As of writing, Zubtitle's paid plans cap how many videos you can process each month and the free tier watermarks your output. Check their pricing page for current numbers.
What the API alternative looks like
caption.sh is built for the pipeline case. There is no editor to open because there is no editor: one POST with a video URL (or a file upload), and you get back an MP4 with word-timed, karaoke-style captions burned into the frames. The output is a plain video file that looks the same in every player and every feed.
curl -X POST https://api.caption.sh/v1/videos \
-H "Authorization: Bearer $CAPTION_API_KEY" \
-H "Content-Type: application/json" \
-d '{"source_url": "https://example.com/raw.mp4"}'
# -> 202 { "job_id": "..." }
# poll GET /v1/jobs/{id} until status is "done",
# then GET /v1/jobs/{id}/result for the MP4Styling is data, not a design canvas. max_words controls how many words appear per caption group (one to three is what makes it feel like karaoke), highlight recolors the active word, decoration picks an outline stroke or a backdrop box, and position puts the captions anywhere in the frame. Every field has a default that looks decent, so the zero-config call above already ships a clean result.
The pricing model matters more than the price
A subscription with a monthly video cap is a fine deal when you fit inside it, and a bad one the week you do not - either you pay for headroom you never use, or you hit the cap mid-pipeline. caption.sh is prepaid usage instead: $0.10 per minute of video, debited only for successful renders, no monthly cap, no watermark tiers. A 60-second video costs ten cents, whether it is your first of the month or your ten-thousandth.
When Zubtitle is still the right call
Be honest about the fit. If a human wants to review and hand-fix the transcription on every video before it ships, an editor is the right interface and Zubtitle is a good one. If your team does not write code, an API will not help you. caption.sh has no editing UI at all - you set the style once, in JSON, and every video comes out that way. That is the whole point for a pipeline, and the wrong trade for a one-off.
Try it in five minutes
The landing page playground at caption.sh runs a real render in your browser, no account needed. The docs walk through uploads, webhooks, and idempotent retries, and if you work in Claude Code or Cursor, the hosted MCP server lets your agent caption videos as a native tool. Failed renders never charge, so the worst case for an experiment is a few minutes of your time.