Free YouTube
transcript generator

Paste a link. Get the captions as text, with timestamps.

Free, no signup. Watch, youtu.be and Shorts links work.Need this in code? Use the API

How it works

1

Paste a link

A watch link, a youtu.be link, a Shorts link or the 11-character video ID.

2

Get the captions

Each line comes back with its start time. Auto-generated captions count.

3

Copy or download

Copy the text, or save it as .txt or .srt for subtitles.

Why use this tool

Free, no account

Paste a link and get the text. No signup, no extension, nothing to install.

Timestamps on every line

Each caption keeps its start time, so you can jump back to the moment it was said.

Text or subtitlesCopy the text, or download it as .txt or .srt.
Auto captions countVideos with only auto-generated captions work the same way.
Same result from the APIOne request returns the same lines as JSON, each with its start time.
Failures cost nothingOn the API, failed requests and cached repeats are free.

Where a transcript helps

Agents and search

Give an agent or a search index the words in a video, with times attached.

Captions and subtitles

Download an .srt file and load it into a video editor or player.

Research and notes

Search a lecture or a talk as text, and cite the time a point was made.

Posts and show notes

Start a blog post, a summary or show notes from what was actually said.

Use this in your app

  1. Get a keySign up and get 100 free credits. No card needed.
  2. Send a requestPass the video ID with your key.
  3. Use the JSONEach line comes back with its start time.
See the reference
1import os2import requests34params = {5    "id": "dQw4w9WgXcQ",6    "language": "de",7}8res = requests.get(9    "https://api.socialscrape.dev/v1/youtube/video/transcript",10    headers={"x-api-key": os.environ["SOCIALSCRAPE_API_KEY"]},11    params=params,12)13body = res.json()1415if body["ok"]:16    print(body["data"])17else:18    print(body["error"]["code"], body["error"]["message"])
200 OKSample response
{
  "ok": true,
  "credits_charged": 1,
  "credits_remaining": 4999,
  "cached": false,
  "cached_at": null,
  "request_id": "req_e45a821caf0eddcb356f1b98",
  "data": {
    "object": "transcript",
    "platform": "youtube",
    "video_id": "dQw4w9WgXcQ",
    "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
    "language": "de-DE",
    "source": "captions",
    "duration_seconds": 213,
    "text": "Uns beiden ist die Liebe nicht fremd Du kennst die Regeln genau wie ich Für mich zählst nur du Das kriegst du sonst von keinem hier Ich will dir sagen, wie ich fühle Damit du es auch verstehst Ich geb dich niemals auf Lass dich niemals im S...",
    "segments": [
      {
        "start": 18.64,
        "end": 21.880000000000003,
        "text": "Uns beiden ist die Liebe nicht fremd"
      },
      {
        "start": 22.64,
        "end": 26.96,
        "text": "Du kennst die Regeln genau wie ich"
      },
      {
        "start": 27.04,
        "end": 31.04,
        "text": "Für mich zählst nur du"
      }
    ],
    "available_languages": [
      "de-DE",
      "en",
      "es-419"
    ],
    "extra": {
      "language_name": "German (Germany)",
      "tracks": [
        {
          "auto": false,
          "code": "en",
          "name": "English"
        },
        {
          "auto": true,
          "code": "en",
          "name": "English (auto-generated)"
        },
        {
          "auto": false,
          "code": "de-DE",
          "name": "German (Germany)"
        }
      ]
    }
  },
  "cursor": null,
  "has_more": null
}

Questions

Why does a video say no transcript is available?

The video has no captions, uploaded or generated, so there is nothing to read. Failed lookups cost nothing in the API.

Which language do I get?

The video's default track. The result lists the other languages on offer. To pick one in your own code, send the language parameter.

Is this tool free?

Yes. No account and no card. Each visitor gets a limited number of lookups an hour, so it stays free for everyone.

How do I get this data in my own app?

Send GET /v1/youtube/video/transcript with your key in the x-api-key header. A request costs 1 credit for captions; AI transcription 1 up to 2 minutes, then 5 per started minute of the whole video. A repeat of something fetched recently costs 0 credits, and failed requests are free. See the reference.