The Dream yt-dlp .conf file

Alright, this has been like 10 years in the making, but I’m confident to reveal my “Dream yt-dlp config file”. Obviously everyone’s needs are different, but this meets my needs perfectly, and I’ll explain every piece as I go.
Full .conf file:

#browser cookies & general connection
--cookies-from-browser firefox
--continue
--retries 4
--ignore-errors
--console-title
--yes-playlist
--concurrent-fragments 25

#metadata
--write-info-json
--write-description
--write-thumbnail
--embed-metadata
--embed-thumbnail
--embed-chapters
--embed-info-json

#subtitles
--write-subs
--write-auto-subs
--sub-langs en,en-US,en-GB
--embed-subs

#formatting
--convert-thumbnails jpg
--download-archive archive.txt
--remux-video mkv
--merge-output-format mkv
-o "%(channel)s/%(title)s/%(title)s.%(ext)s"

NOTE: This gets saved to a yt-dlp.conf file in the user/home folder!

Let’s break down each section:
Browser & Connection:

#browser cookies & general connection
--cookies-from-browser firefox
--continue
--retries 4
--ignore-errors
--console-title
--yes-playlist
--concurrent-fragments 25

“–cookies-from-browser” can be used with other browsers, as well (i.e. chrome), I just happen to use FireFox. This lets you use your login cookies to bypass age restrictions, membership content for channels you have paid to access, and tricks like getting your Watch Later list.
The next few lines just tell it to keep trying if there are errors or hiccups when downloading.
“–yes-playlist” approves downloading an entire playlist of videos if that’s what you feed it (it will ask you by default).
“–concurrent-fragments 25” this option lets you download DASH videos in parallel fragments to drastically speed up downloads. I often see 8 or 10 recommended, but I’ve made 25 work fine on my gigabit fiber connection without trouble thus far.

Metadata:

#metadata
--write-info-json
--write-description
--write-thumbnail
--embed-metadata
--embed-thumbnail
--embed-chapters
--embed-info-json

This all tells yt-dlp to write the video’s metadata (upload date, etc.), video description, and thumbnail to files next to the video file, as well as embed chapter markers, description, etc. into the video file itself (which can be viewed in MediaInfo and picked up by some players, including JellyFin).

Subtitles:

#subtitles
--write-subs
--write-auto-subs
--sub-langs en,en-US,en-GB
--embed-subs

This downloads any available English subtitles/captions for the video, writes them to a file and embeds them in the video file.

Formatting:

#formatting
--convert-thumbnails jpg
--download-archive archive.txt
--remux-video mkv
--merge-output-format mkv
-o "%(channel)s/%(title)s/%(title)s.%(ext)s"

First the .WEBP thumbnails are converted to .JPG to save me time (not all applications support WEBP yet).
Next, an “archive.txt” file is created wherever I’m downloading videos so it knows not to repeat downloads. It keeps track of these and stops itself from downloading a video on the list. I have this set to go to the target folder instead of a more broad folder, as there are situations where I may repeat download a video and may not know where the copy of the last time I downloaded it went.
The next two arguments remux all of the audio and video and metadata into the MKV container. This does not compress the download, simply moves it to a container that is more friendly with subs, chapters, metadata, etc. and works best in JellyFin to display all of these.
Lastly, “-o “%(channel)s/%(title)s/%(title)s.%(ext)s”” - this specifies that I want videos sorted by a top folder named after the channel name, then a folder for the video title, then all the other files in that folder. Since multiple files are downloaded per video, this is very helpful to keep everything organized.

Note: When downloading entire channels for JellyFin, I choose to add the date to the individual folder titles so I can navigate with some form of upload order (in either direction) so for the individual command send-off, I add this to the end:

 -o "%(channel)s/%(upload_date>%Y-%m-%d)s %(title)s/%(title)s.%(ext)s"

Then they’re sorted into [Channel] / [Date] [Title] / [title.mkv]