Skip to content
yt-dlp

yt-dlp Command Generator for TikTok

Build a yt-dlp command for a TikTok video or a whole creator profile, with file names that stay readable.

Optional. Leave it empty and the command ends with URL for you to fill in.

Your command

yt-dlp --merge-output-format mp4 --no-playlist --embed-metadata -o '%(uploader)s - %(id)s.%(ext)s' https://www.tiktok.com/@user/video/1234567890
Basics

Audio-only extracts the soundtrack and drops the video stream.

Video and quality

Caps the height. yt-dlp still picks the best stream at or below it.

The file type separate video and audio streams are merged into.

Advanced options (3)

Overrides the quality dropdown. For people who already know the format syntax.

Repackages the streams without re-encoding. Fast and lossless.

Re-encodes the video. Slow and lossy — only when remuxing will not do.

Audio

The file the audio is converted to.

VBR gives the best size-to-quality ratio; fixed bitrates are more predictable.

Subtitles

Embedding puts them inside the video; saving writes a separate .srt next to it.

Comma separated. Use all for every available language.

Playlists and channels

What to do when the URL belongs to both a video and a playlist.

Ranges and lists both work, for example 1-10,15 or -5::2 for every second item from the end.

Advanced options (1)

Records what has been downloaded so re-running skips it. The way to keep a channel in sync.

Sections and chapters
Advanced options (2)

A time range like *00:01:30-00:03:00, or a chapter name. The leading asterisk means it is a timestamp.

Metadata and artwork
Advanced options (3)
SponsorBlock

Cuts community-marked segments out of the file using SponsorBlock data.

Advanced options (1)

Keeps the segments but marks them, so you can skip them yourself.

Files and folders

Field names go in %(...)s. Slashes create folders.

Advanced options (4)

Where files are written. Combine with the template above for subfolders.

Maximum file name length in characters.

Filters
Advanced options (5)

YYYYMMDD, or a relative date like now-1month.

YYYYMMDD, or a relative date.

Skips anything smaller. Accepts 5M, 500K and similar.

Skips anything larger.

Number of files to download before stopping.

Network

For example 2M or 500K. Useful when you need the rest of your bandwidth.

Advanced options (5)

Speeds up fragmented streams. Four is a sensible starting point.

How many times to retry a failed piece. infinite is allowed.

HTTP, HTTPS or SOCKS proxy URL.

Makes requests look like a real browser. The usual fix for sudden 403 errors.

Login and cookies

Reads your logged-in session directly. Needed for private, age-restricted or members-only content.

Advanced options (1)

A Netscape-format cookies.txt exported from your browser.

Live streams
Advanced options (2)

Polls until a scheduled stream begins. MIN-MAX seconds between checks.

Workarounds
Advanced options (3)

Deprecated in favour of --add-headers. Kept because plenty of older guides still use it.

Deprecated in favour of --add-headers.

Site-specific switches, for example youtube:player_client=web.

Output and debugging
Advanced options (2)
Reset

Notes for TikTok

TikTok titles are the first line of the caption, which makes for long and often unusable file names. The preset names files by uploader and id instead, which stays sortable and never collides.

Whether an unwatermarked stream is offered varies by video and region — run the command with -F to see what actually exists before assuming it is missing. Private and followers-only posts need cookies from an account that can see them.

TikTok is more than vertical video now: photo-mode posts and slideshows are served from the same URL shapes, and yt-dlp treats the multi-item ones as playlists — every slide its own entry, the backing sound as a separate audio entry where one exists. That is the platform's shape, not a failure, and there is no option that merges a slideshow back into one file. A command that seems to "only download images" has in fact downloaded exactly what the post is.

A profile URL — tiktok.com/@handle — downloads every video on the account, and it paginates, which on a prolific creator is a long run. The likes and saved tabs are visible only to the account that owns them, so those need cookies from a signed-in session. Combine whole-playlist handling with the archive file and keep-going-on-errors: a prolific account will contain at least one deleted post, and without those two options one deleted post stops the other thousand.

TikTok throttles aggressively. A download that starts fast and then crawls, or dies with a 403 partway through, is usually rate limiting rather than a broken extractor — add a speed limit, lower the parallel fragment count, and space out repeated runs. Cookies from a logged-in session raise the ceiling considerably. A VPN endpoint that many other people are also using tends to make throttling worse rather than better: the IP is already suspect before you send a request.

For the audio, -x extracts the soundtrack of a TikTok the same as anywhere else, and skips the video entirely. The "original sound" of a video is a separate item with its own page, so a track you heard on someone else's post can be fetched from the sound page without the video at all. File naming matters more here than on most platforms — caption-as-title collides the moment two posts start with the same words — which is why this preset names files by uploader and video id.

Frequently asked questions

Can yt-dlp download TikTok without the watermark?
It downloads whatever TikTok serves. Unwatermarked streams are sometimes available and sometimes not, and it varies by video and region — run -F to see what exists for a given URL.
Can I download a private or followers-only TikTok?
Only if your own account can see it. Use --cookies-from-browser so yt-dlp requests it as you.
How do I download every video from one creator?
Point yt-dlp at the profile URL with playlist handling set to the whole playlist, and add an archive file so repeat runs only fetch what is new.