Skip to main content

YouTube to Text

Third-party service

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.

Output

Video

The video will appear here.

Video description
Transcript
Details

The video's details will appear here.

Was this helpful?

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_HERE

Paste this at any agent connected to the IOTools MCP server, then add your input.

Cost per API/MCP callFrom 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.

youtube transcriptvideo to textsubtitlescaptionssrtvttclosed captionstranscribe videodownload subtitlesyoutube subtitlesvideo transcription

Love the tools? Lose the ads.

One payment clears every ad from your account, for good. No subscription, no tracking.