Podcast Transcription
Podcast transcription from the episode file — not a link. Text, SRT or VTT, with a timestamp on every line.
Yes — drop the episode file and the spoken words come back as text, with a timestamp on every line.
- The file you already have. The recorder's WAV, the host's MP3, the M4A a guest sent — no link box, no upload, no account.
- The intro music is not speech. What the first cue holds is measured here.
- SRT and VTT come out of the same run, ready for an editor or a caption upload.
- No speaker names. One text stream, cue breaks at the pauses — what that means for an interview.
It cannot pull audio out of a Spotify or YouTube link — why.
Drop an episode file here
or
MP3 · WAV · M4A · OGG · AAC · FLAC — plus video if the episode was recorded with pictures
Download the episode from the app or the host, then . Nothing gets uploaded either way.
Preparing…
What this tool does
This is a podcast transcription tool that works from the recording itself. Point it at the file your recorder produced — the WAV from the interface, the MP3 your host exported, the M4A a remote guest sent — and it writes out what was said, one timestamped line at a time. The same run also hands you SRT and VTT subtitle files, so the transcript and the captions are the same pass over the same audio rather than two jobs.
The engine is OpenAI's Whisper, compiled to WebAssembly and running inside this tab. The audio is decoded here too. That combination is what makes the next three sections possible to write honestly: everything below was measured by putting files through this page, not copied from a specification.
How to transcribe a podcast episode
- Get the file. From the recorder, from the editor's export, or from the host's download button. If the only copy lives behind a platform link, download the episode first — this page will not fetch a URL.
- Drop it in. Drag it onto the box above, or browse for it. Pick a model if you want something other than the default, then press Transcribe.
- Read or export. The text appears with a timestamp per line. Switch to SRT or VTT and download if the next stop is an editor or a caption field.
The first twenty seconds: what the intro music does to the transcript
Almost every episode opens with something that is not speech. A theme, a sting, a sponsor bed under a read. It is the part of the file no transcription guide talks about, and it is the part that decides whether the first line of your transcript is trustworthy.
So it was measured. Three files were built from one 40-second stretch of speech: the speech alone, the same speech behind an 18-second music bed, and the same speech behind a 45-second bed. All three went through the box above on whisper-base, on 2026-10-17.
The speech alone. Twelve cues, the first at 00:00:00.000 and the last at 00:00:35.904. Nothing surprising.
The 18-second bed. The first cue is a bracketed marker for the music at 00:00:00.000. The first spoken line is stamped 00:00:15.000 — but the talking does not begin until 00:00:18.000. The line is three seconds early, because the music did not end on a 15-second boundary and the cue that carries the first words starts at the boundary instead.
The 45-second bed. Same speech, a bed that does end on a boundary. The first spoken line is stamped 00:00:45.000, which is exactly where the talking starts. No error at all.
That is the useful shape of it: the first spoken line is stamped at the start of the 15-second block it falls into, not at the moment the voice begins. When the music ends on a block boundary the two coincide. When it does not, the first line can be up to fifteen seconds early, and every later line inherits the shift. The fix is not a setting — it is to read the first cue before you trust the timestamps, and to trim the intro if the episode is going to be cut against them.
The music itself is the second half of this. On the 18-second bed, with no voice anywhere in it, the model wrote a bracketed marker and then a line nobody said — the same output twice, from two separate runs. A twelve-second music-only clip put through the same page came back with the no-speech message instead. Same page, same model, two outcomes: what the model does with a bed depends on the bed, and no setting on this page changes that. It is why the first cue is worth ten seconds of your attention before the rest of the transcript is.
A podcast is a file before it is a link
The tools that rank for this phrase mostly start with a URL. On 2026-10-17 the three pages this comparison reads were checked one by one. videotap.com's transcript page is a box that says "Add your YouTube URL"; the visible text on it runs to about 580 characters and mentions neither podcast audio nor an upload. youtube-transcript.ai's podcast page works from a YouTube address, and its own FAQ turns away the show that only ever published audio rather than video — the page reads YouTube's caption track, which is why it is instant and why it stops at the edge of the platform. nealschaffer.com's round-up describes seven transcript tools and the instruction is the same for all of them: copy-paste your URL.
That is a real constraint, not a preference. A link-first tool can only transcribe what is already published, on a platform it has built a fetcher for, with captions or audio it is allowed to reach. It cannot touch the multitrack from your recorder, the interview you have not published yet, the episode you pulled off YouTube, or a show that only ever shipped as an RSS enclosure.
Those are all files. So this page takes files, and pays for it with one extra step: you download or export the episode yourself. In exchange the audio never travels, there is no queue, and there is no retention policy to read because there is nothing retained.
Two voices, and no name tags
An interview episode is two or more people taking turns, and the transcript this page returns does not say who is who. There is no speaker diarization in the pipeline: the words arrive as one stream, and at a change of speaker the text simply continues. Cue boundaries follow the pauses, so a new speaker usually starts a new cue — but a cue is not a name tag.
That is worth stating plainly because several tools in this category do label speakers, and a page that quietly omitted the difference would waste your afternoon. If names are the point — a published interview, a compliance record, a legal transcript — then the honest route is a service that uploads the audio and runs diarization, with whatever retention terms that implies. If what you need is the words, in order, with times you can cut against, this page gives you that without the upload.
The same applies to meeting audio. A Zoom cloud recording can be downloaded as a file and dropped in here; if the host enabled Zoom's own audio transcript, that file is a different document — the meeting's captions, produced for the meeting, not an edit of your episode. What comes out of this page is one text file with timestamps, and the names are the part you add.
When the guest speaks another language
The short answer: the language is worked out for each pause-delimited piece of the recording, not once for the whole file. A change of language that falls on one of those piece boundaries is written down correctly in both languages. A change that falls inside a piece is not: measured on five fixtures, the words on the far side of the change either went missing from the output or came back in the piece’s other language. If you know where the switch happens, cut the recording there and run the two halves separately.
The fixtures were built from nine separate text-to-speech sentences — four Spanish, four English, and one short English aside — each trimmed to its first and last sound and laid end to end at known times, so where a sentence starts and which language it is in are both known without asking this page. Five assemblies went through this page once each on whisper-base on 2026-10-23, in a fresh tab each time.
- Spanish, then English — 37.376 s. The page cut it into three pieces at 14.780 s and 28.560 s. All four Spanish sentences came back in Spanish, the fourth missing its opening two words at the 14.780 s cut. The two English sentences that begin at 19.642 s and 23.466 s are not in the output at all, and the two that did come back are damaged: The location runs inside the browser for The application runs inside the browser, and cutting along recording for cutting a long recording. 91 words out against 115 in.
- English, then Spanish — 37.376 s, the same sentences reversed. Here the change landed on a piece boundary at 14.840 s, and the Spanish half came back whole, all four sentences. 110 words out against 115 in.
- Spanish with one English sentence in the middle — 22.154 s. The English sentence, By the way, the deadline is Friday, is absent from the output, while the Spanish on both sides of it is there. 61 words out against 64 in.
- English with one Spanish sentence in the middle — 13.756 s, a single piece. The Spanish sentence came back in English: The first step is to review the level of recording before starting for El primer paso es revisar el nivel de la grabación antes de empezar. 44 words out against 42 in — two more than were spoken, because it was translated rather than written down.
- Spanish only — 18.442 s. No second language anywhere, and one sentence still lost its opening two words (Conviene cortar) at the 14.780 s cut. That loss is the cut, not the language, and it happens on a file that never changes language.
Two things follow from that. The first is that the page does not translate a recording — it writes down what it hears, in one language per piece — but a sentence in another language inside a piece is the case where that stops being true: in the English piece the Spanish sentence was rewritten in English, and in the Spanish pieces the English sentence simply disappeared. In all three of those pieces the output came back in the language the piece opened with, which is worth knowing when you go looking for where a line went. The second is that this is the same machinery as the fifteen-second ceiling, so the loss is not random; it follows where the cut falls, which is why the reversed file behaves differently from the first one.
What to do about it: if you know the episode changes language — a guest answering in Spanish, an interview through an interpreter, a bilingual introduction — cut the recording at that moment and run the two files separately. It is the same advice as cutting at a pause, for a different reason, and the second file’s timestamps begin again at 00:00:00.000, so add the length of the first file back if the halves have to line up against the episode. If you do not know where the change is, read the transcript against the audio at the point where the language changes: that is where a missing sentence will be, and it will not look like an error in the panel — the run ends with the ordinary Done message.
Scope: one machine, one model (whisper-base), one run per assembly, measured on 2026-10-23. The voices are synthetic, the audio is 16 kHz mono, the gaps are 0.8 s between sentences of the same language and 1.2 s between the two languages. Those numbers describe these five files: a different speaker, a different pair of languages or a longer pause at the change can move the outcome, and the second fixture is there to show what happens when the change lands on a boundary.
A ninety-minute episode, and the fifteen-second ceiling
Cue boundaries follow pauses, with one hard ceiling: a stretch of unbroken speech is cut every fifteen seconds. That ceiling is visible in the measurements above — the 18-second bed produced a boundary at 15.000 and the 45-second bed at 45.000 — and it is the reason a long episode comes back as hundreds of short cues rather than a few paragraphs. Ninety minutes of continuous talking is at least 360 cues, and some of those boundaries will land mid-sentence.
The other limit is memory, not time. The whole recording is decoded before transcription begins, so a two-hour file on a laptop with little free memory is a real risk, and on a phone it is a bad idea. Splitting the episode is the usual answer, and where you split matters more than most guides admit. Measured on this site's tool: a 29-second recording cut in two at a real pause came back as the same 94 words across the two halves, word for word. The same recording cut at an arbitrary second came back as 92 words — the two words under the cut were lost from both halves, because each half only heard its own side.
So cut at a pause, at a chapter break, or at the point where the music comes back. And keep a note of where each piece started: every file begins again at 00:00:00.000, so the second piece's timestamps need the length of the first added back if you are going to line them up against the episode.
Supported input formats
MP3, WAV, M4A, OGG, AAC and FLAC, plus the common video containers when the episode was recorded with pictures. That list describes what browsers already decode rather than a filter applied here. A podcast recorder usually writes WAV or MP3; a host's download is usually MP3; a guest's phone recording is usually M4A. All three go in without conversion.
Accuracy
No percentage is printed on this page. Word error rate moves with the microphone, the room, crosstalk, the music bed and how fast people talk, and a single headline number would describe none of those. What can be said precisely: the models are the official Whisper checkpoints converted to ONNX by the Xenova project — tiny, base and small — and a larger one generally writes more of the line, at the cost of memory and time.
For an episode, the things worth checking by eye are the same every time: names, numbers, acronyms, and the first cue. Names and numbers are where a speech model substitutes something plausible; the first cue is where the music lives.
FAQ
Is anything uploaded to a server?
No. The audio is decoded in this tab and the Whisper model runs here as well, compiled to WebAssembly. There is no backend that receives the file. Four things do leave the browser: the one-time download of the model weights, a cookieless page-view count sent to Cloudflare Web Analytics, the Google Analytics script this page loads, and the visit reports that script sends to Google. The privacy policy names each one.
Can I transcribe a podcast from a Spotify or Apple Podcasts link?
Not here. Pulling audio out of a link requires a server to fetch it, and this page deliberately has none. The link box will say so rather than pretend. Download the episode from the app or the host, then drop the file in — the transcription step does not care where the file came from.
What happens to the intro music at the start of an episode?
It becomes a cue of its own, and it is not speech. Measured here on 2026-10-17 with whisper-base: an 18-second music bed followed by 40 seconds of talking produced a bracketed marker at 00:00:00.000, then the first spoken line at 00:00:15.000 — three seconds before the talking actually starts at 00:00:18.000. The same bed at 45 seconds, which ends on a 15-second boundary, put the first spoken line at exactly 00:00:45.000. So the first cue is worth checking: it is where the timestamp error lives, and on some beds it is also a line nobody said.
Does it label who is speaking?
No. There is no speaker diarization here: the transcript is one stream of text, and at a change of speaker the words simply continue. Cue boundaries follow the pauses, so a new speaker usually begins a new cue, but no name is attached to it. If names matter, a tool that uploads the audio and runs diarization is the honest choice.
How long can the episode be?
No length is imposed by the page; the limit is the memory of the device, because the whole recording is decoded before transcription starts. A 90-minute episode is roughly 360 cues at the 15-second ceiling, and it is a heavy job for a laptop and too heavy for most phones. Splitting the file at a pause is the usual fix, and the cut has to land in a pause: measured here, a 29-second recording cut at a real pause came back as the same 94 words across both halves, while the same recording cut at an arbitrary second lost the two words under the cut from both halves.
What formats can I drop in?
MP3, WAV, M4A, OGG, AAC and FLAC, plus the usual video containers if the episode was recorded with pictures. That list describes what browsers already decode rather than a filter applied here; a container the browser cannot read fails with a message in words instead of an empty panel.
Does it work for interviews and Zoom recordings?
Yes, with one caveat: it transcribes whatever audio the file contains, so a two-person interview comes back as one continuous text without name tags. A Zoom cloud recording can be downloaded as audio or video and dropped in; if the host turned on Zoom's own audio transcript, that file is a different document — the meeting's captions, not an edit of your episode. This page gives you one text file with timestamps you can cut.
Why is the first run slow?
The model weights are downloaded once and kept by the browser. whisper-tiny is the smallest and the quickest to fetch; whisper-small is far larger and slower, particularly on a machine with little memory. Later runs reuse the cached copy.
What are TXT, SRT and VTT?
TXT is plain text with a timestamp at the start of each line. SRT is numbered cues, each with a start and end time and a comma before the milliseconds. VTT is the same cues without the numbers and a dot before the milliseconds. Both subtitle formats were checked against outside readers rather than assumed: the exported files were handed to three parser libraries and ffmpeg, and each read back every cue.
Does it work on a phone?
The layout fits a phone, but the work does not. Whisper in a mobile browser is heavy, so on a phone use whisper-tiny and short files, or split a long episode first.
Can it transcribe a language other than English?
Yes, with the multilingual models: whisper-tiny, whisper-base and whisper-small detect the spoken language and write in it. whisper-tiny.en is English only. Whisper's published list covers 99 languages. That decision is made for each pause-delimited piece rather than once for the file, which matters when a recording changes language partway through — the section above has the measurements.
What happens if a podcast changes language halfway through?
The language is decided for each pause-delimited piece of the recording, not once for the whole file, so it depends on where the change falls. Measured on 2026-10-23 with five fixtures: when the change landed on a piece boundary, both halves came back in their own language; when it fell inside a piece, two English sentences in a Spanish-first recording were missing from the output, a single English sentence inside a Spanish recording disappeared, and a single Spanish sentence inside an English recording came back written in English. If you know where the switch is, cut the recording there and run the halves separately.
Why would a transcript contain a line nobody said?
Because a speech model asked to read something that is not speech tends to answer anyway. Measured here on 2026-10-17: an 18-second music bed with no voice in it came back, twice, with a bracketed marker and the line Thanks for watching. A twelve-second music-only clip came back with the no-speech message instead. Same page, same model, two outcomes — what the model does with a bed depends on the bed. That is why the first cue of an episode is worth reading before you trust the rest of it.
Privacy
The episode stays on this device. There is no account, no upload step and nothing to delete afterwards — closing the tab ends it. The visit itself is counted twice, by Cloudflare Web Analytics, which sets no cookies, and by Google Analytics, which keeps _ga and _ga_KJ155PR9B7 in this browser for two years. The privacy policy lists what each records.
Other kinds of audio and video
A short vertical clip is a different job with a different set of traps: the Instagram Reel transcript page covers captions that exist only as pixels, and the TikTok transcript generator covers the same problem where the clip came from TikTok. For video files, the YouTube transcript generator runs the same engine and explains why it takes a file rather than a link. And for a single audio file with no episode around it, MP3 to text is the shorter route.