Skip to main content

100% Private

No Signup

Free Forever

One of 64 free AI tools by Mahmoud Zalt.

Free Subtitle Generator

Audio and video to SRT/VTT captions, fully private|
4.8 (767)

A free, private subtitle and caption generator that turns audio or video into timestamped SRT and WebVTT files without uploading anything. It is built on Hugging Face Transformers.js, the open-source library that runs state-of-the-art machine learning directly in your browser, and it loads OpenAI Whisper, the most widely used open-source speech recognition model. Drop in an MP3, WAV, M4A, MP4, WebM, or MOV file and the tool decodes the audio track, runs Whisper locally with segment-level timestamps, and produces ready-to-use .srt or .vtt subtitles you can preview, copy, or download. Because the model runs on your own device via WebAssembly, your media is never uploaded, logged, or stored, which makes it safe for unpublished videos and confidential recordings. The model downloads once on first use and is cached by your browser, and it shares that cache with the speech-to-text tool.

Free and provided as is, without warranty. Use at your own risk. Terms

Generate subtitles from audio and video without uploading anything

Most online subtitle generators ask you to upload your file to a server, run it through a hosted speech model, and send a caption file back, which means your video leaves your control and often counts against a paid minutes quota. This free subtitle generator works the other way around: the speech recognition model runs inside your browser tab. Once the model is downloaded, your audio or video is decoded and transcribed on your own device, so the file never touches a server and there is no per-minute limit.

That makes it a strong fit for unpublished footage, client work, internal training videos, and any recording you would rather not hand to a third party. You still get standard SRT and VTT files you can drop straight into YouTube, a video editor, or an HTML5 player, and you can confirm nothing is uploaded by watching the Network tab in your browser DevTools while it works.

Powered by OpenAI Whisper, running in your browser via Transformers.js

This tool is built on Transformers.js, the open-source library from Hugging Face that runs Transformer models directly in the browser using ONNX Runtime compiled to WebAssembly, with no backend. It loads OpenAI Whisper, the most widely used open-source automatic speech recognition model, and runs it with segment-level timestamps so each caption line is aligned to when it is spoken.

You can choose between three Whisper sizes, Tiny, Base, and Small, to trade speed for accuracy, and either let Whisper auto-detect the language or set it manually. The model files download once from the Hugging Face Hub, are cached by your browser, and are shared with the speech-to-text tool on this site, so moving between the two does not trigger another download. Both Transformers.js and Whisper are released under the permissive Apache 2.0 license.

SRT vs VTT, and tips for clean captions

Pick SRT (SubRip) when you are uploading captions to YouTube or a video editor, or playing the video in a desktop player, since SRT is the most broadly supported format. Pick VTT (WebVTT) when you are embedding captions in a web page through the HTML5 video <track> element. This tool builds both from the same transcription, with the only practical difference being the timestamp punctuation and the WEBVTT header, so you can regenerate in the other format with a single click.

For the cleanest results, start with the Base model and feed it reasonably clear audio; background music and overlapping voices are the main things that reduce accuracy. Whisper produces a solid first pass, but for anything you publish it is worth skimming the captions for names, numbers, and any cue boundaries that fall in the middle of a sentence, then nudging them in a subtitle editor. For long videos, the Tiny model is the fastest way to get a draft, and you can re-run a tricky section with the Small model for higher accuracy.

Who actually needs a subtitle file, and why

Content creators caption short-form video for a specific engagement reason as much as an accessibility one, a large share of social video is watched with the sound off, so a video without captions loses a meaningful chunk of its potential audience before it even gets a chance to be heard. Course creators and corporate learning and development teams caption training videos both because captions measurably improve comprehension and retention and because many organizations have a compliance obligation, ADA in the US, EN 301 549 in the EU, to provide accessible video content.

Podcasters repurposing an episode as video content generate SRT files to burn captions into a clip for social media, and teams recording internal meetings or all-hands videos caption them so the recording becomes searchable and skimmable rather than something nobody has time to watch start to finish.

How this compares to YouTube auto-captions and Rev or Kapwing

YouTube generates automatic captions for free once a video is uploaded, which is genuinely convenient, but it requires the video to already be public or unlisted on YouTube's platform, and the captions live inside YouTube's system rather than as a portable file you control from the start. Rev and Kapwing both offer AI auto-captioning with human-review upsells, typically priced per minute of video (Rev's automated captions run a small fraction of a dollar per minute, with human-reviewed captions costing significantly more) or as a subscription in the 10 to 30 dollar a month range, and both require uploading the video to their servers.

This tool generates the same SRT or VTT file before the video ever gets uploaded anywhere, for free, with the media staying entirely on your device. That makes it the right choice specifically when you want a portable caption file independent of any platform, or when the footage itself is not ready to be public yet, exactly the case where YouTube's built-in captioning does not apply.

Making captions people can actually read in time

Accessibility guidelines generally recommend keeping each subtitle line under about 32 to 42 characters and limiting a cue to two lines, with a reading speed of roughly 15 to 17 characters per second so viewers have enough time to read before the cue changes, a Whisper transcript segmented purely by natural speech pauses will sometimes produce a cue that is too long or too fast to comfortably read at those thresholds. Reviewing the generated file and manually splitting an overly long cue into two shorter ones is a small edit that meaningfully improves the caption experience for anyone reading rather than just listening.

Timing also matters for genuine accessibility compliance beyond just having captions exist at all: WCAG guidance expects captions to be reasonably synchronized with the audio, not just present somewhere in the file, so it is worth spot-checking that a few cues land close to when the words are actually spoken, especially around scene changes or fast dialogue, before publishing captions for a video where accessibility compliance is the actual requirement, not just a nice-to-have.

How It Works

1

Pick a Whisper model and the subtitle format you want (SRT or VTT), then upload an audio or video file: nothing is sent to a server.

2

The tool decodes the audio track and runs Whisper locally with timestamps, downloading the model once on first use.

3

Preview the generated captions, then copy them or download a ready-to-use .srt or .vtt file for your video.

Need expert help with AI?

Looking for a specialist to help integrate, optimize, or consult on AI systems? Book a one-on-one technical consultation with an experienced AI consultant to get tailored advice.

Key Features

Powered by OpenAI Whisper, the most widely used open-source speech recognition model, run in the browser through Hugging Face Transformers.js
Exports industry-standard SubRip (.srt) and WebVTT (.vtt) files with segment-level timestamps
Accepts both audio and video files (MP3, WAV, M4A, FLAC, OGG, MP4, WebM, MOV) and extracts the audio track on-device
Three Whisper model sizes (Tiny ~45MB, Base ~80MB, Small ~250MB) to trade speed for accuracy
Automatic language detection or a manual language choice across dozens of languages
Runs entirely on your own hardware via ONNX Runtime and WebAssembly, with no server and no upload
The model downloads once, is cached by your browser, and is shared with the speech-to-text tool so there is no repeat download
No signup, no API keys, no server calls, and no rate limits: caption as much as you want for free
Copy-to-clipboard and one-click download of the finished subtitle file
Released under the Apache 2.0 license, the same permissive open-source license as Transformers.js and Whisper

Privacy & Trust

Your media never leaves the browser: decoding and transcription run entirely on your device via Transformers.js and WebAssembly with zero upload
No audio, video, or generated captions are uploaded, logged, stored, or transmitted to any server
No tracking or analytics of the files you process or the subtitles produced
Built on open-source Hugging Face Transformers.js and OpenAI Whisper (both Apache 2.0) downloaded directly into your browser cache
Verify privacy yourself by checking the Network tab in your browser DevTools while captioning: after the one-time model download, you will see no further requests carrying your media

Use Cases

1Add captions to YouTube, TikTok, or Instagram videos by generating an SRT to upload alongside them
2Create WebVTT tracks for HTML5 video players using the <track> element
3Caption podcast episodes, interviews, lectures, or webinars for accessibility
4Produce a first-pass subtitle file to edit and fine-tune instead of timing captions by hand
5Generate subtitles for sensitive or unpublished footage that cannot be uploaded to a cloud service
6Make recorded meetings and training videos searchable and accessible with timed captions

Limitations

  • The first run downloads the chosen Whisper model (45MB to 250MB), which is cached by your browser afterward
  • Audio is decoded with the browser AudioContext, so very unusual containers or codecs may not decode; exporting to MP3, WAV, M4A, or MP4 (AAC audio) fixes most cases
  • Whisper transcription is highly accurate but not perfect: review and lightly edit captions before publishing, especially for names, numbers, and noisy audio
  • Transcription runs on your CPU via WebAssembly, so long files take time, and larger models are slower than the Tiny and Base models

Frequently Asked Questions

Is this subtitle generator really free?

Yes, it is completely free with no signup, no account, and no usage limits. Because Whisper runs on your own device through Transformers.js instead of a paid cloud API, there are no per-minute costs to pass on. You can caption as many files as you want, as often as you want, without a credit card, an API key, or a rate limit.

Is my audio or video uploaded to a server?

No. The entire process, decoding the audio and running Whisper, happens locally in your browser using Transformers.js and WebAssembly. After the model is downloaded once, your media is processed on your own device with zero network requests carrying it. Nothing is uploaded, logged, or stored, which makes this safe for unpublished videos and confidential recordings. You can confirm this by opening the Network tab in your browser DevTools while you caption a file.

What is the difference between SRT and VTT?

SRT (SubRip) is the most widely supported subtitle format, accepted by YouTube, most video players, and editing software. VTT (WebVTT) is the format used by the HTML5 video <track> element for captions on the web, and it supports a few extra styling and metadata features. This tool generates both from the same transcription, so pick SRT for uploads and players, and VTT for embedding subtitles in a web page.

Can it caption video files, not just audio?

Yes. You can upload common video files such as MP4, WebM, and MOV, and the tool extracts and decodes the audio track in your browser before running Whisper. Decoding relies on your browser AudioContext, which handles the most common containers and codecs. If a particular file will not decode, export or convert it to MP3, WAV, M4A, or MP4 with AAC audio and it will work.

Which model should I choose?

Whisper Tiny (~45MB) is the fastest and works on any device, but is the least accurate. Whisper Base (~80MB) is a good balance of speed and accuracy and is the default. Whisper Small (~250MB) is the most accurate but uses more memory and runs more slowly. Start with Base, and move up to Small if you need higher accuracy on difficult audio, or down to Tiny if you want maximum speed.

Do I need to install anything?

No installation is needed. It is a pure web tool that runs in any modern browser. The only thing that downloads is the Whisper model itself, which Transformers.js fetches on first use and caches in your browser. There is no extension, no desktop app, and no Python or Node environment to set up.

How accurate are the timestamps?

Whisper produces segment-level timestamps that align each caption line to where it is spoken, which is accurate enough for most subtitling. Exact boundaries can drift slightly on music, overlapping speech, or long pauses, so for professional broadcast subtitles you may want to nudge a few cues in a subtitle editor after exporting. For social videos, lectures, and accessibility, the output is typically ready to use as is.

Does it work offline and on mobile?

Once the model has been downloaded and cached, captioning runs without an internet connection because everything happens on-device. It also works on mobile browsers that support WebAssembly, though phones are slower than a laptop or desktop, so the Tiny or Base model is the better choice on mobile. For the smoothest experience, load the model once over Wi-Fi.

Q&A SESSION

Got a quick technical question?

Skip the back-and-forth. Get a direct answer from an experienced engineer.