Free tool · No signup

YouTube Playlist Transcript Downloader

Extract and download all transcripts from any public YouTube playlist or channel into a single ZIP file. Choose Markdown with timestamps for AI & NotebookLM, clean SRT subtitles for video editing, or plain text.

Supports public and unlisted YouTube playlists (list=PL...), as well as channel videos (@handle).

How to use it

  1. Copy a YouTube playlist link (containing list=PL...) or channel URL (@handle or /channel/UC...) from YouTube.
  2. Paste it above and click Inspect Playlist. We inspect the video count, estimate ZIP archive size, and generate a live preview.
  3. Choose your preferred export format: Markdown (.md), Subtitles (.srt), Plain Text (.txt), or JSON (.json).
  4. Click Export All Transcripts to download a single ZIP containing every video transcript, an index sheet, and a combined AI-ready file.

What's inside the downloaded ZIP file?

Every bulk export generates a structured, organized ZIP archive containing:

  • Individual transcript files: Each video gets its own numbered file (e.g. 0001 Video Title [videoId].md) formatted cleanly with paragraph breaks and timestamps.
  • All transcripts master file: A single combined document (All transcripts.md) merging every video's transcript in chronological order. Perfect for uploading to Google NotebookLM, ChatGPT Plus, Claude Projects, or local LLM vector databases.
  • Index summary catalog: An index.csv table listing every video title, YouTube ID, duration in seconds, and caption status.

Clean formatting optimized for Large Language Models

Raw YouTube transcripts often contain distracting music notes (♪), duplicate repeated auto-generated sentences, and irregular time drift. Our exporter normalizes whitespace, strips noise tags, and formats timestamps into readable paragraphs, significantly reducing token consumption while preserving semantic accuracy.

Videos with no captions are safely skipped and never charged.

Do the same in code

This page runs on the YTAPI transcript API. With a key you can fetch transcripts from scripts, apps and AI agents, in bulk, without the limits of this page. New accounts get 200 free credits; one transcript uses one credit.

Python

# pip install ytapi-sdk
from ytapi import YTAPI

api = YTAPI()

# 1. List videos from playlist
playlist = api.get_playlist("PLxxxxxx")
tasks = [
    {"video_id": v["video_id"], "type": "transcript", "format": "text"}
    for v in playlist.get("videos", [])
]

# 2. Batch extract & poll results
job = api.create_batch(tasks[:100])
result = api.poll_batch(job["id"])

for item in result.get("results", []):
    data = item.get("data") or ""
    print(f"[{item['video_id']}] {data[:80]}...")

JavaScript / TypeScript

// npm install @ytapi/sdk
import { YTAPI } from "@ytapi/sdk";

const api = new YTAPI();

// 1. List playlist videos
const playlist = await api.getPlaylist("PLxxxxxx");
const tasks = (playlist.videos ?? [])
  .filter((v): v is typeof v & { video_id: string } => Boolean(v.video_id))
  .map((v) => ({
    video_id: v.video_id,
    type: "transcript" as const,
    format: "text" as const,
  }));

// 2. Batch extract up to 100 transcripts & poll
const job = await api.createBatch(tasks.slice(0, 100));
if (!job.id) throw new Error("No job ID returned");
const result = await api.pollBatch(job.id);

console.log(`Extracted ${result.successful}/${result.total} transcripts`);

curl

# 1. Get playlist videos (1 credit)
curl "https://api.ytapi.dev/v1/playlists/PLxxxxxx" \
  -H "Authorization: Bearer $YTAPI_API_KEY"

# 2. Batch extract transcripts (up to 100 tasks, 202 Accepted)
curl -X POST "https://api.ytapi.dev/v1/batch" \
  -H "Authorization: Bearer $YTAPI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "tasks": [
      {"video_id": "dQw4w9WgXcQ", "type": "transcript", "format": "text"},
      {"video_id": "kJQP7kiw5Fk", "type": "transcript", "format": "text"}
    ]
  }'

# 3. Poll batch results (Free)
curl "https://api.ytapi.dev/v1/batch/$JOB_ID" \
  -H "Authorization: Bearer $YTAPI_API_KEY"

Frequently asked questions

How many videos can I export from a playlist or channel?

Up to 5,000 videos per export. New accounts receive 200 free credits upon registration (1 credit = 1 video transcript), allowing you to export up to 200 videos immediately without providing a credit card.

What formats can I export the transcripts in?

You can choose Markdown (.md) with timestamps, Subtitles (.srt), Plain Text (.txt), or JSON (.json). Every export archive also includes a single combined master document and an index.csv catalog.

Can I upload the exported files to Google NotebookLM or ChatGPT?

Yes. The ZIP archive includes a single consolidated 'All transcripts.md' file specifically designed for large-context AI tools like Google NotebookLM, ChatGPT, and Claude Projects. You can upload the entire playlist context in one document.

What happens if some videos don't have captions?

Videos without caption tracks are skipped and listed in the index summary as 'no_captions'. They cost zero credits — you are only charged for videos with successfully downloaded transcripts.

Can I export private or unlisted playlists?

Unlisted playlists work as long as you have the shareable link. Private playlists and system collections (like Watch Later or Liked Videos) cannot be accessed without your personal Google login. You can export those directly in your browser using our free Chrome Extension.

Does this work for YouTube Channels as well?

Yes. You can paste any channel URL (@handle, channel/UC..., or c/name). Our tool automatically detects the channel's uploads and lets you export all videos, regular videos, or Shorts.

Can I automate playlist transcript downloads via API?

Yes. We offer official SDKs for Python (`pip install ytapi-sdk`) and JavaScript (`npm install @ytapi/sdk`), as well as a REST API with batch endpoints (`POST /v1/batch`) to download up to 100 transcripts per call.

Do I need a Google Cloud API key or quota?

No. YTAPI handles all YouTube data extraction through our distributed edge network. You do not need a Google Cloud account, YouTube Data API key, or quota management.

Can I download transcripts without creating an account?

You can inspect any playlist and preview the first video's transcript online for free. To download complete multi-video ZIP archives without an account, install our free Chrome Extension which runs locally in your browser.

How long does the export take to finish?

A typical 50-video playlist takes approximately 15 to 30 seconds. Larger playlists (500+ videos) process asynchronously in the background on our servers, and we send an email notification with the secure download link once complete.