Chuyển tới nội dung
yt-dlp

Cheatsheet yt-dlp

Những câu lệnh yt-dlp đáng nhớ: chọn chất lượng, tách MP3, playlist, phụ đề, cookies và cách sửa các lỗi bạn thực sự gặp.

Viết theo yt-dlp 2026.07.21. Các tuỳ chọn được thêm và đổi tên giữa các bản phát hành, nên hãy kiểm tra bản của bạn bằng yt-dlp --version.

Tải cơ bản

Khi không thêm tùy chọn nào, yt-dlp chọn tổ hợp tốt nhất mà nó ghép được và đặt tên tệp theo tiêu đề. Đáng ngạc nhiên là rất thường xuyên, đây chính là lệnh đúng.

yt-dlp URL

Trước khi tải thứ gì đó lớn, nên xem thực sự có sẵn những gì. Lệnh này in ra bảng định dạng rồi thoát mà không tải gì cả.

yt-dlp -F URL

Cột bên trái của bảng đó là id định dạng, và sau đó bạn có thể yêu cầu trực tiếp. Hai id nối bằng + nghĩa là "tải cả hai rồi ghép lại".

yt-dlp -f 137+140 URL

Chất lượng và cách chọn định dạng

Các id định dạng viết cứng sẽ hỏng ngay khi một trang đổi bậc mã hóa của họ. Biểu thức bộ chọn mới là bản bền: nêu các thuộc tính bạn muốn rồi để yt-dlp tự tìm thứ khớp nhất.

yt-dlp -f "bv*[height<=1080]+ba/b[height<=1080]" URL

Đọc nó thế này: luồng video tốt nhất cao không quá 1080 cộng với âm thanh tốt nhất, và nếu cặp đó không tồn tại thì lấy tệp đơn tốt nhất cao không quá 1080. Chính phương án dự phòng sau dấu gạch chéo là thứ giữ cho lệnh không hỏng trên những trang chỉ đăng luồng progressive.

Ghép hai luồng lại thì yt-dlp phải chọn một container. MP4 phát được ở mọi nơi; MKV chứa được mọi thứ bạn ném vào, và điều đó quan trọng khi phụ đề với chương bắt đầu tham gia.

yt-dlp -f "bv*+ba" --merge-output-format mp4 URL

Để nêu một ưu tiên thay vì một giới hạn cứng, hãy sắp xếp thay vì lọc. Cách này ưu tiên 1080p và MP4 nhưng vẫn tải được thứ gì đó khi không có cả hai.

yt-dlp -S "res:1080,ext:mp4" URL

Âm thanh và MP3

Tách âm thanh cần ffmpeg — đây là lý do phổ biến nhất khiến lệnh bên dưới thất bại trên một máy vừa cài xong.

yt-dlp -x --audio-format mp3 URL

Thêm ảnh bìa và thẻ chỉ tốn thêm hai flag, và biến kết quả thành thứ dùng được trong thư viện nhạc thay vì một thư mục toàn tệp vô danh.

yt-dlp -x --audio-format mp3 --audio-quality 0 --embed-thumbnail --embed-metadata URL

--audio-quality 0 nghĩa là bitrate biến thiên ở mức tốt nhất, không phải "chất lượng bằng không". Nếu bạn cần bitrate cố định thì ghi rõ ra: --audio-quality 320K.

Khi nguồn đã là AAC hoặc Opus, chuyển sang MP3 tức là mã hóa lại và mất chất lượng một cách vô ích. Giữ nguyên bản gốc vừa nhanh hơn vừa tốt hơn.

yt-dlp -x --audio-format best URL

Phụ đề

Phụ đề nhúng đi theo tệp; tệp .srt riêng thì dễ sửa và dễ đưa sang công cụ khác hơn.

yt-dlp --embed-subs --sub-langs en URL
yt-dlp --write-subs --sub-langs en,vi --convert-subs srt URL

Phụ đề do máy tạo là một công tắc riêng. Không có nó, một video không có phụ đề do người làm sẽ chẳng cho ra gì cả, và cũng không báo lỗi.

yt-dlp --write-auto-subs --sub-langs en --convert-subs srt --skip-download URL

Danh sách phát và kênh

Một URL YouTube thường thuộc về cả một video lẫn một danh sách phát, và yt-dlp phải đoán bạn muốn cái nào. Hãy nói rõ ra.

yt-dlp --no-playlist URL
yt-dlp --yes-playlist URL

Với bất cứ thứ gì dài, tệp lưu trữ quan trọng hơn mọi tùy chọn khác ở đây: nó ghi lại những gì đã tải, nên chạy lại sẽ tiếp tục từ chỗ dừng thay vì bắt đầu lại từ đầu.

yt-dlp --yes-playlist -i \
  --download-archive archive.txt \
  -o "%(playlist_index)02d - %(title)s.%(ext)s" \
  URL

Kết hợp với -i, một video bị khóa vùng hay đã xóa sẽ không còn làm hỏng hai trăm video còn lại. Để lấy một phần thay vì tất cả, -I nhận khoảng và danh sách: -I 1:10, -I "1,3,7-10".

Đoạn cắt, chương và phần tài trợ

Bạn có thể tải một phần video thay vì cả video. Dấu sao ở đầu đánh dấu đây là mốc thời gian chứ không phải tên chương, và dấu nháy là bắt buộc — bash sẽ khai triển một dấu * trần theo tên tệp của bạn.

yt-dlp --download-sections "*00:01:30-00:03:00" URL

SponsorBlock dùng các mốc do cộng đồng gửi lên để cắt hẳn từng đoạn ra, hoặc để lại chúng dưới dạng chương mà bạn tự bỏ qua.

yt-dlp --sponsorblock-remove default URL
yt-dlp --sponsorblock-mark all --embed-chapters URL

Đăng nhập, cookie và kiểm tra bot

Nội dung riêng tư, giới hạn độ tuổi và dành riêng cho thành viên đều cần phiên đăng nhập của bạn. Đọc thẳng từ trình duyệt là cách ít sai sót nhất.

yt-dlp --cookies-from-browser chrome URL
yt-dlp --cookies-from-browser "firefox:Profile 1" URL

Hãy đóng trình duyệt trước: Chrome và Edge khóa cơ sở dữ liệu cookie trong lúc đang chạy, còn thông báo lỗi hiện ra thì không nói điều đó.

Khi một trang bắt đầu trả về 403 hoặc yêu cầu bạn xác nhận mình không phải bot, làm cho yêu cầu trông giống một trình duyệt thật thường là đủ để qua.

yt-dlp --impersonate chrome URL

Tên tệp và thư mục

Mẫu đầu ra kiểm soát cả hai. Một dấu gạch chéo sẽ tạo thư mục, nên một mẫu duy nhất có thể sắp xếp cả một kho lưu trữ.

yt-dlp -o "%(uploader)s/%(upload_date>%Y-%m-%d)s - %(title)s.%(ext)s" URL

Tiêu đề thường xuyên chứa ký tự mà một số hệ thống tệp từ chối. --restrict-filenames rút gọn mọi thứ về ASCII thuần, và điều đó đáng làm với bất cứ thứ gì sẽ được chuyển qua lại giữa các máy.

Trong tệp .bat của Windows, mọi dấu % phải được nhân đôi — %%(title)s — nếu không trình thông dịch batch sẽ nuốt mất mẫu trước khi yt-dlp kịp nhìn thấy. Bộ sinh lệnh làm sẵn việc này cho bạn khi bạn tải tệp .bat.

Những lỗi bạn thực sự sẽ gặp

ffmpeg not found

Mọi thứ liên quan tới ghép, chuyển đổi, nhúng hay cắt đều cần có ffmpeg trong PATH. Cài nó vào rồi xác nhận bằng ffmpeg -version.

Sign in to confirm you are not a bot

Thử --impersonate chrome trước, rồi tới --cookies-from-browser. Nếu cả hai đều không được thì cập nhật yt-dlp — riêng kiểu kiểm tra này thay đổi rất thường xuyên và bản vá thường về trong một phiên bản chỉ sau vài ngày.

Unable to extract player response

Gần như luôn là do yt-dlp đã cũ. Hãy cập nhật nó trước khi đổi bất cứ thứ gì khác: yt-dlp -U, hoặc dùng trình quản lý gói nếu bạn cài theo cách đó.

Requested format is not available

Bộ chọn của bạn không khớp với thứ gì cả. Chạy -F để xem có những gì, và nên dùng sắp xếp (-S) thay vì bộ lọc cứng để luôn còn phương án dự phòng.

HTTP Error 403

URL đó được ký cho một phiên hoặc một vùng khác. Hãy chạy lại với cookie mới, thêm --impersonate chrome, hoặc thử --geo-bypass.

Giữ yt-dlp luôn mới

Số lỗi được báo cáo mà việc cập nhật giải quyết được còn nhiều hơn bất kỳ flag nào. Nếu bạn cài bản thực thi độc lập:

yt-dlp -U

Nếu cài qua trình quản lý gói thì cập nhật đúng theo cách bạn đã cài — -U sẽ từ chối, và nó từ chối là đúng.

Câu hỏi thường gặp

Sửa lỗi "Sign in to confirm you are not a bot" thế nào?
Thử --impersonate chrome trước, rồi --cookies-from-browser chrome để dùng phiên đăng nhập của bạn. Nếu cả hai không được, hãy cập nhật yt-dlp — phần kiểm tra này thay đổi thường xuyên và bản sửa thường có sau vài ngày.
"Unable to extract player response" nghĩa là gì?
Trang nguồn đã thay đổi thứ gì đó và bản yt-dlp của bạn cũ hơn bản sửa. Hãy cập nhật trước khi thay đổi bất cứ thứ gì khác; lỗi này gần như không bao giờ sửa được bằng một flag.
Nó báo ffmpeg not found.
Merge, chuyển đổi, nhúng và cắt đoạn đều cần ffmpeg trong PATH. Hãy cài rồi kiểm tra bằng ffmpeg -version.
Nên cập nhật yt-dlp bao lâu một lần?
Mỗi khi có thứ gì ngừng hoạt động, và ngoài ra thì vài tuần một lần. Các trang thay đổi liên tục và phần lớn lỗi được sửa nhanh ở phía dự án.
yt-dlp và youtube-dl khác nhau thế nào?
yt-dlp là một fork còn được bảo trì, với nhiều extractor và tính năng hơn hẳn — SponsorBlock, cắt đoạn, giả dạng trình duyệt, tải fragment song song. Nó giữ nguyên tên tuỳ chọn của youtube-dl nên phần lớn câu lệnh đơn giản chạy được với cả hai.