Skip to content

OpenCaptions documentation

OpenCaptions adds animated, word-by-word captions to a video. It listens to the speech, writes the words with their timing, lets you style and fix them, and saves the captioned video or subtitle files. It is free software (AGPL-3.0), has no telemetry, and keeps your videos where you put them: on your phone, or on your own server.

The OpenCaptions editor: a video with word-by-word captions next to the style panel, over the caption timeline

The web app, on your serverThe iPhone and iPad app
RunsIn Docker, on your computer, NAS or serverOn the phone
Speech to textWhisper or Parakeet on your machine, a GPU box of yours, or the OpenAI API with your keyWhisper, Parakeet or Apple Speech on the phone, or your own server
AccountA local account on your instanceNone
Start hereQuick startThe iPhone app

The two share one caption engine, written in Rust, so a caption looks the same in the browser, on the server and on the phone. What the preview shows is what the export draws.

  • Word-level transcription in about 100 languages, with the speech model of your choice.
  • Animated looks: thirteen presets, and a style panel for fonts, colours, outline, background, animation and position.
  • A real editor: fix a misheard word right on the video, retime captions on a timeline, undo and redo.
  • Export a captioned MP4, WebM or ProRes video, SRT, VTT or JSON subtitles, or only the captions on a green screen to key out in your video editor.
  • An HTTP API for everything the app does, with API keys, to put it in a pipeline.
  • Private by design: no tracking, accounts are local to your instance, and audio leaves your machine only if you pick a hosted provider.
  1. Add a video. Upload a file, or give a link.
  2. Get the words. Choose where to transcribe, the speech model and the spoken language. Each word gets its own start and end time.
  3. Pick a look and export. Choose a style, fix words and timing, then save the captioned video.

Your first captions walks through it.

OpenCaptions is before its first release (v0.1). The interface and the self-hosting setup work today, but the API and the data formats may still change until the first tagged release.