Platform guide
How to download Twitter/X videos with yt-dlp
For a normal public tweet with a video, yt-dlp just works: paste the tweet URL and you get the best MP4 the platform serves. The details worth knowing are quality selection, tweets that carry more than one video, and the cases where you need a logged-in session.
Quick answer
yt-dlp "https://x.com/user/status/1234567890"Both x.com and twitter.com URLs work — yt-dlp treats them as the same extractor, so use whichever the share button gives you.
Picking the quality
Twitter serves each video as several MP4 renditions at different resolutions and bitrates. yt-dlp picks the best one by default; list them if you want something smaller:
yt-dlp -F "https://x.com/user/status/1234567890"Because the renditions are complete MP4s (video and audio together), no merging is involved — a plain -f FORMAT_ID pick gives you a finished file.
Tweets with multiple videos
A single tweet can carry up to four videos, and yt-dlp treats such a tweet as a small playlist — by default it downloads all of them. To pick a specific one, use --playlist-items:
yt-dlp --playlist-items 2 "https://x.com/user/status/1234567890"That grabs only the second video in the tweet. The numbering follows the order the media appears in the post.
What needs cookies
Two categories reliably require a logged-in session: content that X hides from logged-out visitors entirely, and posts flagged as sensitive media, which show an interstitial instead of the video. For both, pass your browser session:
yt-dlp --cookies-from-browser chrome "https://x.com/user/status/1234567890"If a tweet extracts fine in your browser but fails anonymously in yt-dlp, cookies are almost always the missing piece.
The mistake to avoid
If extraction breaks right after a big X platform change, do not start debugging your flags. Update yt-dlp first — X changes its internals often, the extractor breaks with it, and the fix ships as a new yt-dlp release. Flags cannot patch an out-of-date extractor.
Recurring sources
Pulling from the same sources on repeat?
Paste a link to preview what a maintained import API returns for it — across 500+ platforms.