Skip to main content

Subtitld

A free and open source subtitle editor for Linux, Windows, macOS and Haiku.
Time subtitles on the waveform, transcribe and translate them with engines that can run on your own machine, and dub them with synthetic voices.

Tests Snap Flathub AUR PyPI License: GPL-3.0 Discord

Install · Features · Add-ons · Formats · Run from source · Website · Discord

Subtitld editing the subtitles of Tears of Steel: the list of subtitles, the video with the current one over it, and the timeline with the waveform

Features

⏱️ Timing on the waveform

  • A timeline with the audio's waveform: drag a subtitle to move it, drag its edges to retime it.
  • Snapping to the neighbouring subtitles and to a grid of frames or seconds, with zoom for fine work.
  • A vertical timeline beside the list, for working down the subtitles.
  • Set a subtitle's start or end to the playhead, slice it in two, merge it with its neighbour, nudge it by a step.
  • A quality check against reading speed (characters per second, words per minute), duration, line count and line length, with the usual limits as defaults.

🎬 Video and audio

  • The video with the current subtitle drawn over it, as it will be seen, with safe-area guides.
  • Playback speed, looping and frame stepping.
  • A mixer for the video's sound and the dubs, with EQ, compressor and gate per track.
  • 4K and 8K videos get a lighter proxy to edit with, made on the GPU where there is one.

🗣️ Speakers

  • Name the speakers and give them a face from the video; each one gets a colour, and a lane of their own on the timeline if you like.
  • See how long each one speaks.

🤖 Transcription, translation and dubbing

  • Transcribe the video's speech into timed subtitles: all of it, a range, or the selection. Or speak into the microphone and watch it become subtitles.
  • Translate the subtitles, keeping each language's translation alongside the original.
  • Dub: speak every subtitle with a synthetic voice, one voice per speaker. Dubs can be fitted to each subtitle's duration, and voices that clone take their sample from the video. Or record your own voice instead.
  • Export the dub as WAV, FLAC or MP3: the whole mix, a track per speaker, the clips, or the background or the voices alone.
  • Transcription and translation engines, and more voices, are add-ons, many of them fully offline. Two online voices (Edge and Google) come built in.

✍️ Editing

  • Undo, find and replace (with regular expressions), autosave and backups.
  • A plain-text view to edit all the subtitles as one document, as SRT, Markdown or JSON.
  • Keyboard shortcuts, which you can change.
  • Recent files reopen where you left off.
  • Import a transcript from a text or Word file, sliced into subtitles.

🌐 subtitld.cc

subtitld.cc is Subtitld's community hub. When a video opens, Subtitld can look up subtitles made for that exact file (it sends a fingerprint, never the video or its name). You can also search, rate and open subtitles there, and publish your own, all from inside the app.

Speakers, each on their own timeline track The vertical timeline beside the video
Speakers, each on a track of their own The vertical timeline

Screenshots: Tears of Steel, © Blender Foundation, CC BY 3.0.

Install

Linux Get it from the Snap Store Get it on Flathub
Arch Linux: subtitld on the AUR · Any distribution: the AppImage from the latest release
Windows Get it from Microsoft
Or the installer, or the portable version, from the latest release
macOS With Python, from PyPI
Haiku Coming to HaikuPorts; the recipes are in packaging/haiku

From PyPI

On any system with Python 3.10 to 3.14 and FFmpeg on the PATH:

pip install subtitld
subtitld

On Linux, the audio also needs PortAudio (libportaudio2 on Debian and Ubuntu).

Add-ons

Speech recognition, translation, more voices and audio separation come as add-ons, installed from inside Subtitld (Add-ons in the global settings). Each one brings its own models, so the app stays small and you only download what you use.

Add-ons
Speech to text whisper.cpp (offline) · Vosk (offline) · RealtimeSTT (offline, as you speak) · AssemblyAI (cloud)
Translation Offline translation (OPUS-MT models, no API key)
Voices Piper · Kokoro · Supertonic · sanoTTS · Parler-TTS · with voice cloning: Qwen3-TTS, Coqui XTTS and F5-TTS
Audio Audio separator: split the voices from the music and effects

The list Subtitld shows comes from Subtitld/addons-catalog. Some models are for non-commercial use only; each add-on's page says which.

Formats

Open and save SubRip (.srt) · WebVTT (.vtt) · TTML (.ttml) · DFXP (.dfxp) · SAMI (.smi, .sami) · Scenarist (.scc) · JSON · Universal Subtitle Format (.usf)
Open SubStation Alpha (.ass, .ssa; the text, not the styles) · MicroDVD (.sub) · iTunes Timed Text (.itt) · XML
Projects .usfx: the subtitles bundled with the speakers' faces and dubs, and, if you choose, the waveform and the video
Transcripts Import from .txt, .docx and .srt
Video MP4, MKV, MOV, WebM, MPEG, Ogg and M4V, through FFmpeg
Dub WAV, FLAC, MP3

Run from source

You need Python 3.10 to 3.14, FFmpeg, and on Linux PortAudio.

git clone https://github.com/Subtitld/subtitld.git
cd subtitld
python3 -m venv .venv
.venv/bin/pip install -e .
.venv/bin/subtitld

Tests

Each test is a script that runs Qt off-screen, with its own scratch settings:

for t in tests/test_*.py; do .venv/bin/python "$t" || echo "FAILED: $t"; done

Packaging

Every package is built by CI from this repository: build.yml builds them all without publishing, and release.yml publishes them on a version tag.

Package Where it's defined
Wheel (PyPI) pyproject.toml
AppImage AppImageBuilder.yml
Snap snap/snapcraft.yaml
Flatpak flatpak/
AUR packaging/aur/
Windows: installer, portable, Microsoft Store nsis-installer.nsi · packaging/msix/ · subtitld-windows.spec
macOS app subtitld-macos.spec
Haiku packaging/haiku/

The icons, installer pictures and this page's banner are drawn from two SVGs by packaging/branding/render-icons.py.

Contributing

Bugs and ideas go in the issues; pull requests are welcome. For questions, help, or just to talk subtitles, join us on Discord. If Subtitld is useful to you, you can also support its development.

License

Subtitld is free software, released under the GNU General Public License v3.0.

Metadata

Release files for subtitld 26.10.18.124

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for subtitld 26.10.18.124
File Size Uploaded Provenance Actions
subtitld-26.10.18.124.tar.gz 5.9 MB Without provenance Details for subtitld-26.10.18.124.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for subtitld 26.10.18.124
File Interpreter ABI Platform Actions
subtitld-26.10.18.124-py3-none-any.whl Python 3 none any Details for subtitld-26.10.18.124-py3-none-any.whl

Total release size: 11.8 MB

Release files / subtitld-26.10.18.124.tar.gz

Download URL subtitld-26.10.18.124.tar.gz
Size 5.9 MB
Tags Source
SHA-256 checksum
How to use checksums
55ed5f35b1bed9ac07f08c4292e4196d6e28c7cd3b52bcd4b17af82b7ebd8884
BLAKE2b-256 checksum
How to use checksums
5eb01bfa5bc5b0146c99e4f8c8d97b8aa76b62e8bc76fd8c55451f8ffe32cb63
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release files / subtitld-26.10.18.124-py3-none-any.whl

Download URL subtitld-26.10.18.124-py3-none-any.whl
Size 5.9 MB
Tags Python 3
SHA-256 checksum
How to use checksums
a67bf637af137bfed2a55e9432ea435bb0f8b28502f503f5b9ecc0d970507a15
BLAKE2b-256 checksum
How to use checksums
338d572135292225340c62d75a84d745cc1a642434f44730618881beb99b6b46
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Security for subtitld 26.10.18.124

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page