YouTube to Text
Turn any YouTube video into text — paste the link and get the full transcript as clean prose, timestamped lines, or a downloadable SRT/VTT subtitle file.
Input
Works with watch, youtu.be, Shorts, embed and live links — or a bare video ID.
Which existing caption track to read. Leave as the default to let YouTube choose, preferring human-written captions over auto-generated ones. Regional variants are matched on the base code, so “Portuguese” finds a pt-BR track.
Optional. YouTube machine-translates the chosen track into this language — its own translation, and heavily rate-limited, so it does not always come through.
Output
The video will appear here.
The video's details will appear here.
More ways to use this tool
REST API
curl -X POST https://api.iotools.cloud/v1/tool/youtube-to-text \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"videoUrl": "https://www.youtube.com/watch?v=aircAruvnKk",
"format": "paragraphs"
}'Swap in your own key from your account. The tool's fields are the body — no wrapper.
Ask an AI agent
Use the IOTools `youtube-to-text` tool (YouTube to Text) on this input:
YOUR_INPUT_HEREPaste this at any agent connected to the IOTools MCP server, then add your input.
| Cost per API/MCP call | From 9 credits |
|---|---|
| Free-plan API/MCP cap^ | 135 credits/month |
| Need more credits? | View pricing |
^ The most you can spend on this tool over API/MCP per month on the free plan. Buying a credit pack removes this cap, same as Builder.
Also available with
Guides
Use this responsibly. This tool only surfaces captions YouTube has already published for a video — it doesn't verify what they say, and we take no responsibility for a transcript's accuracy or for what you do with it. The video and its captions still belong to whoever made them; using the output is your call to make against copyright law and YouTube's own Terms of Service, the same as if you'd transcribed the video yourself by hand.
What this tool does
Paste a link, get the words back. This free YouTube transcript generator pulls the caption track YouTube already stores against the video — the same one behind the CC button — and turns it into text you can actually read, edit, search or ship. No extension to install, no download to babysit, nothing to upload.
Works on Shorts too, not just full-length uploads — paste a /shorts/ link
and it comes back the same way. Shorts get auto-captions from YouTube just
like any other video, so there's usually a track to pull even from a
15-second clip.
Nothing leaves your browser but the URL. No audio is processed. If the video has captions — and the overwhelming majority do, since YouTube auto-generates them by default — the transcript lands in a second or two. Use it to lift the text out of a YouTube video, grab subtitles as SRT, or pull a full transcript straight into your own code through the API below.
You do need to be signed in. That's not a paywall — every account, including the free tier, gets full access. It's the one thing standing between this tool and bots hammering it into the ground for everyone else.
Choosing an output format
- Readable paragraphs — the default, and the one you want. Caption fragments get stitched back into real sentences and grouped into paragraphs, the way the video would read if someone had typed it up by hand.
- Plain text — one continuous block, no line breaks. Feed it to another tool, a word counter, a search index — whatever wants raw text.
- Timestamped lines — every line prefixed with
[12:34]. Built for finding the exact moment something was said, or wiring up show-notes jump links. - SRT and WebVTT — real subtitle files with proper start/end timecodes. This is the YouTube subtitle download you want for a video editor, a re-upload to another platform, or a translator to work from.
- JSON — every cue as
{ startMs, endMs, durationMs, text }. Pick this when a machine reads the output next: a script, a summarizer, a search pipeline.
One detail worth knowing: endMs is not just startMs + durationMs. YouTube
omits duration on some cues and overlaps others on purpose, so the naive
arithmetic is often wrong. The JSON export ships the same clamped end the SRT
and WebVTT exports use, so you can rebuild correct subtitles from it without
re-deriving that correction yourself. durationMs stays available too, raw,
if that's what you actually want.
Using it as a YouTube transcript API
Every format above is one HTTP call away. The More ways to use this tool
section on this page has a ready-made curl: POST a videoUrl and a format, get JSON
back. Any language that can make a request can use this as a YouTube
transcript API — no scraping, no headless browser, no caption parser to
maintain yourself. Agents can call the same tool over MCP.
Through the API and MCP, transcript is always a string, whatever format you
asked for — so JSON output arrives as a string containing JSON, not a nested
array. Parse it on your side. The video field next to it carries the
canonical watch URL, rebuilt from whatever link shape you sent in.
details is the one exception: it's a real JSON object, not a string —
{ title, author, durationSeconds, trackLabel, languageName, languageCode, isAutomatic, cueCount, availableCodes }, always every key, empty rather than
missing when the video has nothing for one ("", 0, false, []). Same
shape on vimeo-to-text and dailymotion-to-text (trackLabel reads "Captions"
there vs "Subtitles" on Dailymotion), so code written against one reads the
other two unchanged.
Overlapping timings are already cleaned up for you in the subtitle formats: auto-captions on YouTube deliberately overlap so text scrolls smoothly on screen, which would show two lines stacked in most players. Each cue's end is clamped to the next cue's start before it ever reaches you.
Languages
Both language settings live under Advanced, collapsed, because most people never need to touch them.
Leave Caption language on Video's default track and the tool takes whichever track YouTube treats as primary, preferring a human-written caption over an auto-generated one when both exist. Pick a language to force a specific track — the Details panel lists every track the video actually carries, so if your first guess misses, you can see what's really on offer.
The picker holds all 156 languages YouTube supports, which isn't quite the
same list as the tracks a given video ships. Real uploads carry tracks tagged
zh-CN, pt-BR, fa-IR — none of which show up by that exact name. Pick the
parent language and it finds them anyway: Portuguese matches pt-BR,
Persian matches fa-IR.
Translate to asks YouTube to machine-translate the chosen track on the fly. That's YouTube's translation, not ours, so quality tracks whatever quality the captions on the site have.
What it can't do
- Videos with no captions at all. Some music videos, older uploads and stock footage never got any. There's nothing to extract, and the tool says so plainly instead of guessing. This reads captions that already exist — it doesn't listen to audio and invent them, so a video YouTube never captioned stays untranscribed here.
- Age-restricted, private and members-only videos. Their captions aren't publicly readable, full stop.
- Live streams, while they're still live. Come back after the stream ends.
What a run costs
| Result | What you pay |
|---|---|
| Transcript returned | The credits shown on the run button |
| No captions, age-restricted, private or removed video | 1 credit |
| Something went wrong on our end | Nothing — refunded in full |
You're never charged for a failure that's ours. The single credit on the middle row pays for a definitive answer about the video — the lookup work still happened — and it's small enough to shrug off if you pasted the wrong link.
Every account gets a monthly allowance, and the free tier's covers well over a hundred transcripts a month. Ordinary use never gets close to the ceiling.
Good uses for a transcript
Turn a conference talk into notes without re-watching it. Quote a tutorial exactly instead of paraphrasing from memory. Search a two-hour podcast for the five minutes you actually remember. Feed a lecture into a summarizer. Check what a competitor's video actually says without sitting through it. Produce subtitles for a re-upload.
Common questions
How do I get the transcript of a YouTube video? Paste the link at the top
of this page and press the button. Watch, youtu.be, Shorts, embed and live
URLs all work, and so does a bare video ID.
Can it transcribe a YouTube Short? Yes — paste the /shorts/ link the
same way you would a regular watch URL. Shorts carry captions like any other
upload, so the transcript comes back the same way, just shorter.
Can I download a YouTube transcript as a text file? Yes — pick any format
and use the download button on the result. Plain text and paragraphs save as
.txt; SRT and WebVTT are ready to load straight into a player or editor.
Is there a free YouTube transcript API? The same tool is available over HTTP and MCP — see Using it as a YouTube transcript API above. It draws from your account's normal credit allowance, so the free tier covers casual API use too.
Does it work on videos without subtitles? No — and no transcript tool honestly can. If YouTube holds no caption track, there's nothing to read; this extracts existing captions rather than generating new ones from audio.
Can I get a transcript with timestamps? Yes — choose Timestamped lines
for [12:34] prefixes, or SRT/WebVTT/JSON for exact start and end times.
Does it work for languages other than English? Yes. Any caption language the video carries can be selected under Advanced, and YouTube can machine-translate a track into any of 156 languages.
Related tools
- YouTube Thumbnail Downloader — grab the video's thumbnail image in every size YouTube stores.
- Text Summarizer — condense the transcript once you have it.
- Word Counter — count words, characters and reading time in the extracted text.
- Upsolo — YouTube to Transcript — a sister site running on the same iotools API, with its own take on the same transcript workflow.