Transcribe a 1-Hour Recording for Free
Free ways to transcribe an hour-long recording with each option's real cap, a tested ffmpeg split command, and how to merge parts and keep timestamps.
The Scriptorium team ·
You can transcribe a one-hour recording for free in three ways: use a free account if the hour fits its monthly allowance, run a free local app that has no length cap, or split the file into pieces that fit a preview limit and merge the results. None of them is magic. Each trades money for either your time or your computer. This guide gives the real caps we could verify and the exact commands for splitting and merging, which we ran before publishing.
Option 1: a free account
A free account has no monthly minute limit (so an hour is not a problem). That works for one or two hour-long files a month and costs you no splitting. Our pricing page has the current numbers and the paid plans. The no-account preview is smaller: it takes one file at a time, up to 15 minutes and 25 MB, with 3 tries a day. It is a way to test a short clip, not to transcribe a full hour.
Option 2: a free local app
Desktop Whisper apps run on your own computer, so there is no length cap from a vendor. Buzz is open source (MIT) and transcribes offline on Windows, Linux and macOS (macOS needs Apple silicon, per its page). MacWhisper lists a free tier on Mac. The cost is your computer's time: an hour of audio on a modest laptop can take a while. Our local Whisper guide covers what to expect, and self-hosted Scriptorium is the option for running our own software on your hardware.
Other free tiers, and why most do not fit an hour
- Otter's free plan lists 30 minutes per conversation and 3 lifetime file imports, so an hour-long recording does not fit one conversation.
- Riverside's free tool says "Unlimited transcriptions for free. No sign up required" and states no length cap; it takes MP3, WAV, MP4 and MOV and puts all text on one speaker. Check the page for any limit that applies to your file.
- Word's Transcribe lists a 300-minute monthly cap on uploads for a Microsoft 365 subscription, so an hour fits, but it needs Microsoft 365 for Windows in a commercial tenant.
Splitting an hour into pieces
If you must stay under a per-file limit, cut the file. ffmpeg is free and available for every platform. This command cuts in.m4a into 10-minute pieces without re-encoding, which is fast and does not lose quality:
ffmpeg -i in.m4a -f segment -segment_time 600 -c copy out%03d.m4aIt writes out000.m4a, out001.m4a and so on. We ran it on a synthetic 25-minute file and got pieces of 10, 10 and 5 minutes. Two details are worth knowing. First, with -c copy ffmpeg cuts at the nearest packet boundary, so each piece is about, not exactly, 10 minutes (ours came out a few milliseconds over). Second, it cuts on the clock, not at a pause, so a sentence can be split across two parts. If that matters, split at silences in an audio editor instead, as described in how to transcribe a long recording.
Starting from a video, first pull out a small audio file; for transcription you do not need the picture:
ffmpeg -i video.mp4 -vn -c:a aac -b:a 64k in.m4aFor MP3 input, the same segment command works with .mp3 file names, and we tested that too. Check the pieces play before uploading all of them.
- Decide your route: a free account (if the recording fits its monthly minutes), a free local app, or splitting the file into pieces under the preview limit.
- To split, run the ffmpeg segment command on a copy of the file to cut it into 10-minute parts.
- Upload each part and export SRT (or TXT) for each.
- Merge: join the TXT parts in order, or shift each SRT by its part's start time and renumber the cues.
- Read the joins. Check the last sentence of each part and the first sentence of the next.
Merging the transcripts
For plain text, paste the parts in order. For subtitles, the part-two cues start at zero, so each SRT must be shifted by the start time of its part (600 seconds for part two, 1200 for part three) and renumbered. If you do this once, our subtitle time shifter at /tools/subtitle-time-shifter does the shift. For several parts, this short Python script shifts each file by a multiple of the piece length and renumbers the cues. We ran it on two small test files and the output was correct:
import re, sys
TIME = re.compile(r"(\d+):(\d\d):(\d\d)[,.](\d{3})")
def shift(text, seconds):
def bump(m):
h, mi, s, ms = map(int, m.groups())
t = round(((h * 60 + mi) * 60 + s) * 1000 + ms + seconds * 1000)
return f"{t // 3600000:02}:{t // 60000 % 60:02}:{t // 1000 % 60:02},{t % 1000:03}"
return TIME.sub(bump, text)
# usage: python merge_srt.py 600 part1.srt part2.srt part3.srt > full.srt
step, files = float(sys.argv[1]), sys.argv[2:]
n, out = 0, []
for i, name in enumerate(files):
for block in re.split(r"\n\s*\n", shift(open(name, encoding="utf-8").read().strip(), i * step)):
lines = block.strip().splitlines()
if len(lines) >= 2:
n += 1
out.append("\n".join([str(n)] + lines[1:]))
print("\n\n".join(out))Because the pieces are a few milliseconds longer than 600 seconds, the shift is slightly off for later parts; for subtitles that must line up exactly, read each piece's real length with ffprobe and use that instead of 600.
What a free route will not give you
- Speaker consistency across parts: labels restart with each file.
- A single searchable transcript: you build it yourself.
- A guarantee of accuracy; read the joins, where a split sentence is most likely to be wrong.
Exports from Scriptorium are TXT, timestamped TXT, SRT, VTT, Markdown, JSON and CSV. Our uploader is at audio to text; for the format question see transcript file formats explained.
Before you split: a short checklist
- Work on a copy, so the original recording is never altered.
- Check the file really is an hour: some phones record in segments, and a 60-minute meeting may already be two files.
- Name the parts so they sort in order (out000, out001 and so on do this for you).
- If the file is a video, extract the audio first; it is far smaller and uploads faster.
- Keep the original; delete the parts only after you have merged and checked the transcript.
Checked on 2026-10-24. Otter, Riverside, Microsoft Word, Buzz and MacWhisper pages. ffmpeg commands and the merge script were run locally on synthetic test files, not on a real hour-long recording. Menus, prices and limits change; confirm on the vendor's page before you rely on them.