YouTube Transcript Dart Package — Flutter SDK
Add YouTube transcript extraction to your Flutter and Dart applications. Available on pub.dev, with full null safety support and a clean, idiomatic API.
INSTALLATION
Add to your pubspec.yaml:
dart pub add youtubetranscript
dependencies: youtubetranscript: ^0.1.0
QUICK START
import 'package:youtubetranscript/youtubetranscript.dart';
void main() async {
final yt = YouTubeTranscript('your_api_key');
final result = await yt.transcribe('dQw4w9WgXcQ');
print('${result.segments.length} segments, ${result.wordCount} words');
for (final seg in result.segments) {
print('[${seg.startFormatted}] ${seg.text}');
}
yt.close();
}FEATURES
Captions + ASR
Extracts existing captions or transcribes audio when none are available.
100+ Languages
Translate any transcript on the fly.
Batch Processing
Up to 100 videos in a single request.
Export Anywhere
SRT, WebVTT, plain text, timestamped text.
Built-in Search
Find keywords across transcript segments.
Typed Exceptions
NoCaptionsException, RateLimitException, etc.
Automatic Retries
Resilient HTTP layer with configurable retry on 5xx.
Flutter Ready
Works in any Dart app with an example Flutter widget.
final spanish = await yt.transcribe('dQw4w9WgXcQ', language: 'es');
final japanese = await yt.transcribe('dQw4w9WgXcQ', language: 'ja');final job = await yt.transcribeAsr('video_id');
final result = await yt.waitForJob(job.jobId);
print(result.text);final batch = await yt.batch(['video1', 'video2', 'video3']);
for (final t in batch.completed) {
print('${t.videoId}: ${t.wordCount} words');
}result.toSrt(); // SRT subtitles result.toVtt(); // WebVTT subtitles result.toPlainText(); // Plain text result.toTimestampedText(); // [MM:SS] text
final matches = result.search('keyword');
for (final seg in matches) {
print('[${seg.startFormatted}] ${seg.text}');
}
final stats = await yt.stats();
print('Plan: ${stats.plan}');
print('Credits remaining: ${stats.creditsRemaining}');ERROR HANDLING
try {
final result = await yt.transcribe('video_id');
} on NoCaptionsException {
final job = await yt.transcribeAsr('video_id');
final result = await yt.waitForJob(job.jobId);
} on AuthenticationException {
print('Invalid API key — check youtubetranscript.dev/dashboard');
} on InsufficientCreditsException {
print('Out of credits — top up at youtubetranscript.dev/pricing');
} on RateLimitException catch (e) {
print('Rate limited — retry after ${e.retryAfter}s');
} on YouTubeTranscriptException catch (e) {
print('API error: ${e.message}');
}FLUTTER WIDGET
Drop in a ready-to-use transcript viewer component. See example/flutter_widget.dart for the full source.
TranscriptViewer( apiKey: 'your_api_key', videoId: 'dQw4w9WgXcQ', )
API REFERENCE
CREDIT COSTS
OTHER SDKs & TOOLS
FREQUENTLY ASKED QUESTIONS
Does the Dart package work with Flutter Web?+
Yes. The package works across all Flutter platforms — iOS, Android, Web, macOS, Windows, and Linux.
What Dart SDK version is required?+
Dart SDK 3.0 or higher. The package uses null safety and modern Dart language features.
Can I use it in a server-side Dart application?+
Yes. The package works in both Flutter and server-side Dart applications using dart:io.
How do I handle API authentication in Flutter?+
Store your API key securely using flutter_secure_storage or environment variables. Never hardcode API keys in client-side code.
Add Transcripts to Your Flutter App
Install from pub.dev. Full null safety. Works on all platforms.
VIEW ON PUB.DEV →