On this page
- 01The short answer
- 02Choose the output before choosing the tool
- 03Which local Whisper route should you use?
- 04Generate local captions in Rushilo
- 05Generate SRT with the Whisper command line
- 06What does “offline” require?
- 07Review words and timing separately
- 08Fix the subtitle problem you actually have
- 09Do the final check after export
- 10Sources
- 11Cite this page
The short answer
Short answer
To generate subtitles offline, use a local Whisper application or the open-source Whisper command line, download the model first, transcribe the video, correct the text and timing, and export SRT or VTT. If the words must always appear in the video, you also need to burn the corrected captions into the picture.
Whisper is a speech-recognition model. An application using its name may run the model on your computer or send audio to a hosted service. Choose the local path explicitly when keeping the recording on your machine is a requirement. OpenAI's open-source Whisper repository
The finished job has three parts: accurate words, usable timing, and the right delivery format. Getting a transcript alone does not finish the subtitles.
Choose the output before choosing the tool
Transcript
- What you receive
- Text without the timing needed for captions
- Choose it when
- You need notes, a draft, or searchable text
SRT file
- What you receive
- Numbered text cues with start and end times
- Choose it when
- The destination accepts a separate subtitle file
VTT file
- What you receive
- A timed WebVTT caption file
- Choose it when
- The web player or destination requests VTT
Burned-in captions
- What you receive
- Caption pixels inside the exported video
- Choose it when
- The words must remain visible wherever the video plays
| Output | What you receive | Choose it when |
|---|---|---|
| Transcript | Text without the timing needed for captions | You need notes, a draft, or searchable text |
| SRT file | Numbered text cues with start and end times | The destination accepts a separate subtitle file |
| VTT file | A timed WebVTT caption file | The web player or destination requests VTT |
| Burned-in captions | Caption pixels inside the exported video | The words must remain visible wherever the video plays |
A sidecar caption file can be loaded separately by a compatible player. Burned-in captions are part of the image and cannot be switched off. W3C explains these as closed and open captions respectively. W3C caption guidance
Check the destination's requirements rather than assuming either file format preserves the styling from your editor. For example, YouTube accepts basic SRT and WebVTT files, but describes limits on their supported formatting. YouTube's supported subtitle files
Which local Whisper route should you use?
Rushilo's on-device captions
- Fits
- People who want captions inside a video-editing project
- Main responsibility
- Select the local service, correct the captions, and save the intended output
OpenAI Whisper command line
- Fits
- People comfortable installing Python packages and FFmpeg
- Main responsibility
- Manage installation, model download, transcription, and subtitle review
whisper.cpp
- Fits
- People wanting a local C/C++ implementation and hardware-specific setup
- Main responsibility
- Follow its build and input instructions for the chosen backend
| Route | Fits | Main responsibility |
|---|---|---|
| Rushilo's on-device captions | People who want captions inside a video-editing project | Select the local service, correct the captions, and save the intended output |
| OpenAI Whisper command line | People comfortable installing Python packages and FFmpeg | Manage installation, model download, transcription, and subtitle review |
| whisper.cpp | People wanting a local C/C++ implementation and hardware-specific setup | Follow its build and input instructions for the chosen backend |
Rushilo documents on-device Whisper captions and SRT/VTT export. The open-source Whisper and whisper.cpp projects provide their own setup instructions. These are different implementations and interfaces; a command written for one should not be assumed to work in another. Rushilo caption capabilities, Whisper setup, whisper.cpp setup
We make Rushilo. The steps below are based on current documentation and product source, not a timed comparison of transcription speed or accuracy.
Generate local captions in Rushilo
- 1Download the local model. In Settings, open On this computer and download Whisper base. Complete this while you have an internet connection. Rushilo model setup
- 2Prepare the edit. Import your footage and place the clips you want to caption on the timeline. Finish large cuts before creating the final captions.
- 3Open Captions and check Service. Choose the downloaded local speech model, rather than an API provider. Downloading a model does not prove that the currently selected service is local.
- 4Generate captions. Use Caption whole video for the audible timeline or select a clip with sound and transcribe that clip.
- 5Correct words and placement. Review product names, punctuation, numbers, and captions that cover important screen content.
- 6Save the correct output. Export the captioned video for visible captions, or save an SRT/VTT subtitle file for separate delivery.
If the panel reports that nothing on the timeline has sound, check the source clip and mute state before retrying. A caption generator needs audible material to transcribe.
You do not need to connect an AI agent to use the on-device caption path. If you separately ask Claude Code, Codex, or a cloud provider to help, check what inputs that request sends. Local transcription and connected AI assistance have different data flows. Rushilo privacy policy
Generate SRT with the Whisper command line
The open-source Whisper package requires Python dependencies and FFmpeg. Use the project's installation instructions for your operating system, including its troubleshooting notes if a package cannot install. Official Whisper installation instructions
Install the package in the Python environment you intend to use:
python -m pip install -U openai-whisperAfter FFmpeg is installed and available on your command path, this example transcribes an English video on the CPU:
whisper "demo.mp4" --model base --language en --task transcribe --device cpu --fp16 False --output_format srt --output_dir "subtitles"Replace demo.mp4 with your own filename. The first use of a model may download its weights, so complete a test transcription while connected before expecting the same setup to work offline.
The example asks for an SRT file in the subtitles folder. Change --output_format srt to --output_format vtt if you need WebVTT. Set the language to the language actually spoken; --task transcribe keeps the transcription task separate from translation. These options are defined in Whisper's command-line source. Whisper command-line options
For another hardware backend, follow the relevant project's instructions. The example deliberately uses CPU settings for clarity; it is not a performance recommendation.
What does “offline” require?
For a local workflow, distinguish preparation from processing:
- Preparation: downloading the application, its dependencies, and model files.
- Transcription: running the downloaded model against audio on your computer.
- Review: editing wording and timing in local software.
- Delivery: uploading a video or subtitle file if the destination is online.
A computer can need the network for installation or publishing while still transcribing locally. Conversely, a desktop interface can call a remote transcription service.
Before processing sensitive material, test with a harmless sample: complete downloads, select the local engine, disconnect the network, and try transcription. This tests that path in that configuration; it does not establish a privacy guarantee for every feature in the application.
Review words and timing separately
Whisper's model card warns that predictions can include text that was not spoken, and that performance varies across languages and accents. Treat generated captions as a draft that needs checking. Whisper model limitations
Review in two passes.
First, listen for meaning. Correct names, numbers, negations, and specialised vocabulary. “Enable” and “disable” cannot be treated as interchangeable just because the sentence otherwise reads smoothly. Delete captions over silence if nothing was actually said.
Then, check timing and readability. Watch where each cue begins and ends. Break a long cue at a natural phrase boundary. Check whether it remains onscreen long enough to read and whether it covers the interface action it describes.
For accessible captions, include meaningful non-speech audio and speaker identification where needed, rather than expecting speech recognition to supply everything. W3C caption content guidance
A worked review example
The following cue is hypothetical:
1
00:00:03,000 --> 00:00:05,000
Open the workspace and choose the customer import settings.It contains 59 characters including spaces and punctuation. Over two seconds, that is 59 ÷ 2 = 29.5 characters per second. This calculation describes the cue; it is not a universal accessibility threshold.
Ask three questions:
- 1Are those the words actually spoken?
- 2Can the viewer read them while also finding the import settings?
- 3Does the displayed cue end before the next thought begins?
If the speaker's phrasing allows it, split the cue:
1
00:00:03,000 --> 00:00:04,500
Open the workspace
2
00:00:04,500 --> 00:00:06,000
and choose the customer import settings.Those times are illustrative. Adjust them to the recording rather than copying them as defaults. If speech is too fast for the intended audience, improving the narration may work better than shrinking the font.
Fix the subtitle problem you actually have
Wrong product name everywhere
- First thing to inspect
- Recognition of that word
- Useful next step
- Correct each occurrence in context; check possessives and nearby wording
Words appear during silence
- First thing to inspect
- Whether anything was spoken
- Useful next step
- Delete unsupported cues and review neighbouring segments
All captions are equally early or late
- First thing to inspect
- Alignment near the beginning and end
- Useful next step
- Apply a consistent offset only if the error stays constant
Timing drifts across the video
- First thing to inspect
- Whether subtitles match this exact edit
- Useful next step
- Regenerate or resynchronise against the final cut
Caption file opens but words never appear on the video
- First thing to inspect
- Player's caption-track selection
- Useful next step
- Load the sidecar, or export with burned-in captions
Font and animation disappear after upload
- First thing to inspect
- Destination's subtitle format support
- Useful next step
- Use supported text captions or burn the styling into the video
| Symptom | First thing to inspect | Useful next step |
|---|---|---|
| Wrong product name everywhere | Recognition of that word | Correct each occurrence in context; check possessives and nearby wording |
| Words appear during silence | Whether anything was spoken | Delete unsupported cues and review neighbouring segments |
| All captions are equally early or late | Alignment near the beginning and end | Apply a consistent offset only if the error stays constant |
| Timing drifts across the video | Whether subtitles match this exact edit | Regenerate or resynchronise against the final cut |
| Caption file opens but words never appear on the video | Player's caption-track selection | Load the sidecar, or export with burned-in captions |
| Font and animation disappear after upload | Destination's subtitle format support | Use supported text captions or burn the styling into the video |
Subtitle Edit's documentation describes waveform-based timing adjustments and several synchronisation methods, including shifting cues and matching points near the start and end. Subtitle Edit timing tools
Avoid adjusting an entire file because one cue is wrong. A local timing mistake, a global offset, and a progressively drifting file require different fixes.
Do the final check after export
Open the exported video and any separate caption file outside the editing project. Check the first cue, a cue after a cut, one near the middle, and the final cue. Then review the full captions against the audio.
Confirm that:
- The caption file corresponds to this exact video edit.
- Accents and special characters display correctly.
- Captions do not obscure the action or platform controls.
- There is no accidental duplication from a sidecar plus burned-in captions.
- The destination receives the language and file type you intended.
Keep the corrected subtitle file with the project, so a later upload does not require another transcription.
For an editing workflow with local captions, start with Rushilo's on-device model setup. If you also need to tighten the recording, finish the silence and filler-word edit before your final caption review.
Sources
- OpenAI's open-source Whisper repositoryChecked October 13, 2026. See the linked documentation and the claim it supports in the article.
- W3C caption guidanceChecked October 13, 2026. See the linked documentation and the claim it supports in the article.
- YouTube's supported subtitle filesChecked October 13, 2026. See the linked documentation and the claim it supports in the article.
- whisper.cpp setupChecked October 13, 2026. See the linked documentation and the claim it supports in the article.
- Whisper command-line optionsChecked October 13, 2026. See the linked documentation and the claim it supports in the article.
- Whisper model limitationsChecked October 13, 2026. See the linked documentation and the claim it supports in the article.
- Subtitle Edit timing toolsChecked October 13, 2026. See the linked documentation and the claim it supports in the article.
Cite this page
Last verified: Oct 13, 2026
Patel, O. (2026, October 13). How to generate Whisper subtitles offline and finish them properly. Rushilo. https://rushilo.com/blog/whisper-subtitles-offline

About the author
Founder, Rushilo
Om Patel is the founder of Rushilo, a desktop video editor driven by the user's own AI, and of BigIdeasDB, a research platform that reads real complaints and reviews to help founders validate products. He writes Rushilo's research articles with the same method: primary sources, dated numbers and the words real users write.