yt-dlp can extract, parse, modify, and embed metadata in your downloaded files. This is useful for organizing media libraries, fixing incorrect information, or adding custom metadata fields.
Replacement: Text replacement with --replace-in-metadata
Format selection: Uses modified metadata
Post-processing: Embedding metadata in files
Final output: File with embedded metadata
Metadata modification happens before format selection and post-processing. Some fields may be added or changed during these steps, potentially overriding your changes.
Set metadata for individual streams using meta<n>_ prefix:
# Set language for stream 1yt-dlp --parse-metadata ":%(meta1_language)s" URL# Set different metadata for audio streamyt-dlp --parse-metadata "en:%(meta1_language)s" URL
# Pre-process (default): before format selectionyt-dlp --parse-metadata "pre_process:title:%(meta_title)s" URL# Video: after format selectionyt-dlp --parse-metadata "video:title:%(meta_title)s" URL# Post-process: after downloadyt-dlp --parse-metadata "post_process:title:%(meta_title)s" URL
# Named capture groups(?P<name>pattern)# Non-greedy match (minimal).+?# Multi-line mode(?s)pattern# Case-insensitive(?i)pattern# Word boundary\b# Digits\d+# Optional whitespace\s*
# Ensure embed-metadata is enabledyt-dlp --embed-metadata --verbose URL# Check if format supports metadata# MP4, M4A, MKV support most metadatayt-dlp --merge-output-format mp4 --embed-metadata URL# Install mutagen for better supportpip install mutagen
# Test with --print to see field contentsyt-dlp --print "title:%(title)s" URLyt-dlp --print "description:%(description)s" URL# Use verbose to see parsed metadatayt-dlp --parse-metadata "title:pattern" --verbose URL