
How to Get the Transcript of a YouTube Video (5 Methods)
Whether you need a transcript for research, content repurposing, accessibility, or just to read instead of watch — there are several ways to get the text from a YouTube video. Some are built into YouTube, others use third-party tools.
Here are the five best methods, ranked from simplest to most powerful. Then we'll cover developer-specific approaches, multilingual transcripts, and bulk retrieval.
Method 1: YouTube's Built-in Transcript
YouTube shows transcripts for most videos that have captions (auto-generated or manually uploaded).
Steps:
- Open the YouTube video
- Click "...more" below the video title to expand the description
- Click "Show transcript"
- The transcript appears in a panel on the right side
Pros:
- Free, built into YouTube
- Shows timestamps you can click to jump to that moment
Cons:
- No search within the transcript
- Can't cleanly copy the text (timestamps get mixed in)
- Doesn't work on ~15-20% of videos (where captions are disabled or unavailable)
- Not available on all platforms (no TV, limited mobile support)
This works for quick reference, but if you need to actually use the text — search it, copy it, or save it — you'll want a better option.
Method 2: EasyTranscriber (Web App)
EasyTranscriber is a web tool that extracts the full transcript from any YouTube video and makes it searchable, copyable, and summarizable.
Steps:
- Copy the YouTube video URL
- Paste it into EasyTranscriber
- The transcript appears in seconds — clean text with timestamps
- Optionally generate an AI summary or ask follow-up questions
Pros:
- Clean text output without formatting issues
- Full-text search across the transcript
- AI summary with key points and follow-up chat
- Works on videos without captions (Deepgram AI fallback)
- One-click copy
Cons:
- Free tier has limited credits (2 free, 5 more on signup)
This is the fastest way to get a usable transcript. The AI fallback means it works on every video, not just ones with captions.
Method 3: EasyTranscriber Chrome Extension
If you want the transcript without leaving the YouTube page, the Chrome extension adds a transcribe button directly to the video.
Steps:
- Install the EasyTranscriber Chrome extension
- Open any YouTube video
- Click the "Transcribe" button below the player
- The transcript and summary appear in a sidebar
Pros:
- No tab switching or URL copying
- Transcript search built into the sidebar
- AI summary and follow-up questions
- Works on videos without captions
Cons:
- Chrome only (no Firefox or Safari yet)
- Same credit system as the web app
Best for people who frequently need transcripts while browsing YouTube.
Method 4: YouTube Transcript API (For Developers)
If you're building an app that needs transcripts programmatically, there are API options.
EasyTranscriber API
curl -X POST https://api.easytranscriber.com/v1/transcribe \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{"url": "https://youtube.com/watch?v=VIDEO_ID"}'
Returns clean JSON with the transcript text, timestamps, and metadata. Includes Deepgram fallback for videos without captions. Full API docs →
youtube-transcript-api (Python)
from youtube_transcript_api import YouTubeTranscriptApi transcript = YouTubeTranscriptApi.get_transcript("VIDEO_ID") for entry in transcript: print(f"{entry['start']:.0f}s: {entry['text']}")
Free and open-source, but only works with videos that have existing captions. Frequently breaks due to YouTube API changes, and gets rate-limited on server deployments.
YouTube Data API
YouTube's official API (captions.download) requires OAuth authentication and only works for captions on videos you own or have permission to access. Not practical for general transcript extraction.
Method 5: Manual Copy-Paste from YouTube
If you just need the text once and don't want to use any tools:
- Open the transcript panel (Method 1)
- Click inside the transcript text
- Press Ctrl+A (or Cmd+A on Mac) to select all
- Press Ctrl+C to copy
- Paste into a text editor
You'll get timestamps mixed into the text, which you can clean up manually with find-and-replace.
Comparison Table
| Method | Speed | Works Without Captions | Searchable | AI Summary | Cost |
|---|---|---|---|---|---|
| YouTube built-in | Instant | No | No | No | Free |
| EasyTranscriber web | ~5 sec | Yes | Yes | Yes | Freemium |
| Chrome extension | ~5 sec | Yes | Yes | Yes | Freemium |
| EasyTranscriber API | ~2 sec | Yes | Via code | Via endpoint | API credits |
| youtube-transcript-api | ~3 sec | No | Via code | No | Free |
| Manual copy-paste | 2-5 min | No | No | No | Free |
For Developers: Getting Transcripts via API
If you're building a product, automating research, or processing transcripts at scale, here's everything you need to get started with the EasyTranscriber API.
Authentication
All API requests require an API key sent as a Bearer token:
curl -H "Authorization: Bearer YOUR_API_KEY" \ https://api.easytranscriber.com/v1/transcribe
Get your API key at easytranscriber.com/api.
Full Python Example
import requests import json def get_youtube_transcript(video_url: str, api_key: str) -> dict: """Get the full transcript of a YouTube video.""" response = requests.post( "https://api.easytranscriber.com/v1/transcribe", headers={ "Authorization": f"Bearer {api_key}", "Content-Type": "application/json" }, json={"url": video_url} ) response.raise_for_status() return response.json() # Usage data = get_youtube_transcript( "https://youtube.com/watch?v=dQw4w9WgXcQ", "YOUR_API_KEY" ) # Access the plain text print(data["transcript"]["text"]) # Access individual segments with timestamps for segment in data["transcript"]["segments"]: print(f"[{segment['start']:.1f}s] {segment['text']}") # Save to file with open("transcript.txt", "w") as f: f.write(data["transcript"]["text"])
Full JavaScript Example
async function getYouTubeTranscript(videoUrl) { const response = await fetch('https://api.easytranscriber.com/v1/transcribe', { method: 'POST', headers: { 'Authorization': `Bearer ${process.env.EASYTRANSCRIBER_API_KEY}`, 'Content-Type': 'application/json', }, body: JSON.stringify({ url: videoUrl }), }); if (!response.ok) { throw new Error(`API error: ${response.status}`); } return response.json(); } // Usage const data = await getYouTubeTranscript('https://youtube.com/watch?v=VIDEO_ID'); console.log('Full text:', data.transcript.text); console.log('Segments:', data.transcript.segments.length); // Find segments containing a keyword const keyword = 'pricing'; const matches = data.transcript.segments.filter(s => s.text.toLowerCase().includes(keyword) ); console.log(`Found "${keyword}" in ${matches.length} segments`);
Response Structure
{ "transcript": { "text": "Full transcript as a single string...", "language": "en", "source": "captions", "segments": [ { "start": 0.0, "end": 3.5, "text": "Hey everyone, welcome back to the channel." }, { "start": 3.5, "end": 7.2, "text": "Today we're going to cover something important." } ] }, "video": { "id": "VIDEO_ID", "title": "Video Title", "duration": 1234, "channel": "Channel Name" } }
The source field tells you whether the transcript came from existing captions ("captions") or AI audio transcription ("ai"). Full API reference →
Manual vs API Methods: When to Use Each
Not every use case needs an API. Here's a clear decision framework:
Use manual methods when:
- You need a transcript once or twice
- You're not a developer
- The video has good auto-captions and you just need a quick copy
- You're trying EasyTranscriber for the first time
Use the API when:
- You need transcripts for more than 10-20 videos
- You're building a product or internal tool
- You need transcripts as part of an automated pipeline (data processing, LLM input, etc.)
- You need reliable uptime — the
youtube-transcript-apiPython library breaks periodically; the EasyTranscriber API is maintained with fallbacks - You need transcripts for videos without captions (only the API handles this reliably)
Cost comparison
| Method | Cost per transcript | Volume limit |
|---|---|---|
| YouTube built-in | Free | Unlimited (manual) |
| EasyTranscriber free tier | Free (2 without signup, 5 with) | Low |
| EasyTranscriber paid | ~$0.05–0.10 | Thousands/month |
| youtube-transcript-api | Free | Rate limited |
| EasyTranscriber API | API credits | Unlimited |
For most people doing occasional research or content work, the free tier is more than enough. For developers or power users, the API is the right path.
Getting Transcripts in Other Languages
YouTube videos often have captions in multiple languages — either uploaded by the creator or auto-translated. Here's how to get transcripts in languages other than English.
Method 1: Switch language on YouTube
- Open the video on YouTube
- Click the gear icon (⚙️) on the video player
- Select Subtitles/CC
- Choose your preferred language from the list
- Then open the transcript panel — it displays in the selected language
This only works if the video has captions in that language (either uploaded or auto-translated by YouTube).
Method 2: Request a specific language via API
curl -X POST https://api.easytranscriber.com/v1/transcribe \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "url": "https://youtube.com/watch?v=VIDEO_ID", "language": "es" }'
Supported language codes: en, es, fr, de, pt, it, nl, ru, ja, ko, zh, ar, and more. If the video doesn't have captions in the requested language, the API returns the available captions in the default language.
Method 3: Translate after transcribing
Get the transcript in its original language first, then translate:
from youtube_transcript_api import YouTubeTranscriptApi # Get transcript in Spanish transcript = YouTubeTranscriptApi.get_transcript( "VIDEO_ID", languages=["es", "es-ES", "es-MX"] ) # Or get auto-translated version transcript = YouTubeTranscriptApi.get_transcript( "VIDEO_ID", languages=["en"] )
If a video only has English captions but you need French, use the EasyTranscriber API to get the English transcript and then pass it through a translation API (DeepL, Google Translate) in a second step.
Bulk and Batch Transcript Retrieval
For research projects, content audits, or building knowledge bases from YouTube content, here's how to get transcripts at scale.
Batch processing a list of videos
import requests import time import json from pathlib import Path API_KEY = "YOUR_API_KEY" OUTPUT_DIR = Path("transcripts") OUTPUT_DIR.mkdir(exist_ok=True) video_urls = [ "https://youtube.com/watch?v=VIDEO_ID_1", "https://youtube.com/watch?v=VIDEO_ID_2", # Add hundreds more... ] results = [] errors = [] for i, url in enumerate(video_urls, 1): video_id = url.split("v=")[-1] output_file = OUTPUT_DIR / f"{video_id}.txt" # Skip already-processed videos if output_file.exists(): print(f"[{i}/{len(video_urls)}] Skipping {video_id} (already done)") continue print(f"[{i}/{len(video_urls)}] Processing {video_id}...") try: response = requests.post( "https://api.easytranscriber.com/v1/transcribe", headers={ "Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json" }, json={"url": url}, timeout=60 ) response.raise_for_status() data = response.json() # Save individual transcript output_file.write_text(data["transcript"]["text"]) results.append({"id": video_id, "url": url, "status": "ok"}) except Exception as e: print(f" Error: {e}") errors.append({"id": video_id, "url": url, "error": str(e)}) # Respect rate limits time.sleep(1) # Summary print(f"\nDone: {len(results)} success, {len(errors)} errors") with open("batch_results.json", "w") as f: json.dump({"success": results, "errors": errors}, f, indent=2)
Extracting from a YouTube playlist
import subprocess, json def get_playlist_videos(playlist_url: str) -> list[str]: """Get all video URLs from a YouTube playlist using yt-dlp.""" result = subprocess.run( ["yt-dlp", "--flat-playlist", "-J", playlist_url], capture_output=True, text=True, check=True ) data = json.loads(result.stdout) return [ f"https://youtube.com/watch?v={entry['id']}" for entry in data["entries"] if entry.get("id") ] playlist_url = "https://youtube.com/playlist?list=PLAYLIST_ID" video_urls = get_playlist_videos(playlist_url) print(f"Found {len(video_urls)} videos") # Then pass to batch processing script above
Which Method Should You Use?
- Just need to read the transcript once? → Use YouTube's built-in transcript (Method 1)
- Need clean, searchable, copyable text? → Use EasyTranscriber (Method 2)
- Frequently work with YouTube videos? → Install the Chrome extension (Method 3)
- Building an app? → Use the EasyTranscriber API (Method 4)
- One-off copy, no tools? → Manual copy-paste (Method 5)
FAQ
Can you get the transcript of any YouTube video?
Most YouTube videos with auto-generated or manually uploaded captions have transcripts available. For videos without captions, tools like EasyTranscriber can transcribe the audio directly using AI — so you can get a transcript for virtually any public YouTube video.
Why is the "Show transcript" button missing on some YouTube videos?
The transcript button doesn't appear when captions are disabled by the creator, the video has no spoken audio, or YouTube's speech recognition doesn't support the language. Use EasyTranscriber to get a transcript even when YouTube's button is missing — it falls back to AI audio transcription automatically.
How do I get a YouTube transcript without timestamps?
YouTube's built-in transcript always includes timestamps. EasyTranscriber lets you copy the clean text with or without timestamps — just click the copy button to get plain text.
Can I get transcripts in bulk for multiple videos?
Yes. The EasyTranscriber API supports programmatic access, so you can script transcript extraction for any number of videos. The Python youtube-transcript-api library also supports batch extraction for videos with existing captions, though it has rate limits and reliability issues at scale.
Is it legal to get YouTube transcripts?
Viewing and copying transcripts for personal use is generally fine. YouTube's Terms of Service prohibit automated scraping, but using official APIs or tools that work within rate limits is standard practice. Always check usage rights for commercial applications and content redistribution.
How do I get a YouTube transcript in another language?
If the video has captions in your language, switch to it via the gear icon on the video player before opening the transcript. You can also request a specific language via the EasyTranscriber API with the language parameter. For videos without multilingual captions, translate the transcript after extraction.
What's the difference between captions and a transcript?
Captions are time-synced text displayed as subtitles during video playback. A transcript is the same content presented as a readable document, usually without the strict timing formatting. YouTube's "Show transcript" feature converts the caption data into a scrollable document format. Both come from the same underlying text.
How accurate are YouTube auto-generated transcripts?
For clear English speech, YouTube auto-captions are typically 90–95% accurate. Accuracy drops with accents (75–90%), technical jargon, overlapping speakers, and background noise. EasyTranscriber uses Deepgram Nova for audio transcription, which generally outperforms YouTube's speech recognition — especially for challenging audio conditions.
Can I search inside a YouTube transcript?
YouTube's built-in transcript panel has no search. Use your browser's Ctrl+F to search visible text, but this only covers what's on screen. For full-text search with clickable results, use EasyTranscriber's search feature or the Chrome extension, both of which index the complete transcript.
How long does it take to get a YouTube transcript?
For videos with existing captions, EasyTranscriber returns the transcript in about 2–5 seconds. For videos without captions that require AI audio transcription, it takes roughly 1 minute per 10 minutes of video. YouTube's built-in transcript is instant but only works when captions already exist.