How to Transcribe a Video for Free
Decide whether you need an existing caption track, a fresh transcript of speech, or live captions while watching. These are different jobs. For an exported transcript, compare cloud free tiers with local software. Accounts can have quotas, local processing needs setup and hardware, and every result needs a content check.
1. Reuse captions when available
Inspect the platform's transcript or caption controls first. Check whether the track covers the actual recording and whether it is automatic or edited. For YouTube, use the transcript-download workflow. With no usable captions, choose speech recognition.
2. Use free-account credits
In MDisBetter Video to Markdown, sign in or create a free account. Conversions use credits; free does not mean unlimited or anonymous. Upload a supported video file, or use the supported social URL workflow shown in the tool.
The result is a Markdown transcript with segment timestamps. The video panel provides a Markdown download. For subtitle exports, extract the audio and use Audio to Markdown, where SRT and VTT controls are conditional on available segment data. Compare speech at the beginning, middle and end.
3. Compare cloud free tiers
| Option | Free-plan limit to check | Distinction |
|---|---|---|
| MDisBetter | Account credits and displayed input limits | Markdown transcript |
| TurboScribe | Three transcripts per day, up to 30 minutes each | Cloud upload |
| Otter Basic | 300 monthly minutes, 30 minutes per transcript, three lifetime file imports | Meeting-oriented |
Check TurboScribe's free tier and Otter Basic limits before a long upload. Monthly minutes do not imply unlimited imports. Verify exports and language support for your account.
4. Transcribe locally with faster-whisper
faster-whisper documentation provides CPU and GPU examples. PyAV decodes media; GPU execution needs compatible CUDA libraries. A CPU example is a useful start without a configured GPU:
# Install: pip install faster-whisper
from faster_whisper import WhisperModel
model = WhisperModel('small', device='cpu', compute_type='int8')
segments, info = model.transcribe('video.mp4', vad_filter=True)
with open('transcript.md', 'w', encoding='utf-8') as output:
for segment in segments:
output.write(f'[{segment.start:.1f}s] {segment.text.strip()}\n\n')The first load can download model weights. After setup, this path does not require uploading the recording to a cloud service. Timing and accuracy depend on model, hardware, language and audio. The example writes timestamped text, not dependable speaker identification or a polished summary.
5. Extract audio from inconvenient video inputs
VLC or FFmpeg can extract audio before transcription. The receiving tool's quotas and limits still apply. Example:
ffmpeg -i video.mp4 -vn -c:a libmp3lame -b:a 128k audio.mp3Listen to the result first. Use Audio to Markdown for the audio-only workflow. A supported downloader such as yt-dlp may help with accessible online sources, but platform support changes and some links require login or remain blocked. Downloading is not transcription.
6. Use live captions for playback
Chrome Live Caption and Mac Live Captions show captions during supported playback. Availability depends on language, device and software. These accessibility tools differ from producing a complete downloadable transcript. Choose transcription software for an archive or subtitle file.
Check the result
- Compare spoken passages at the beginning, middle and end.
- Check names, numbers, accents and technical terms.
- Review silence and noise for invented words.
- Confirm the ending and timestamps.
- Compare the download with the displayed result.
A cloud tier can suit one short video; local software offers a different tradeoff for volume and local control. Evaluate your own sample instead of assuming one tool is most accurate for every recording. See transcripts for podcasters for destination workflows.
Related workflows
- your YouTube videos are invisible to AI
- how to get a transcript from Vimeo
- how to transcribe a Zoom meeting for free