fm-dlp — Download from YouTube, YTMusic, and 1000+ sites
CLI tool for searching YouTube/YTMusic and downloading audio/video from 1000+ sites
📑 Table of Contents
- 🚀 Quick Start
- ⚙️ Requirements
- 🌈 Color Output
- 📋 Commands
- 💡 Examples
- 📊 Search Output Examples
- 📄 License & Acknowledgments
🚀 Quick Start
pip install fm-dlp # Python 3.10+ & FFmpeg required
fm-dlp config ~/Music # Set download directory
fm-dlp search "Sewerslvt" # Search tracks
fm-dlp download "URL" # Download audio
⚙️ Requirements
- Python 3.11+ - Asyncio support required
- FFmpeg - Required for audio/video processing. Install via:
- macOS:
brew install ffmpeg - Linux:
sudo apt install ffmpeg(Debian) orsudo dnf install ffmpeg(Fedora) - Windows: Download from ffmpeg.org and add to PATH
- macOS:
🌈 Color Output
By default, fm-dlp uses colored output for better readability. To disable colors globally, use the --no-color flag before the command:
fm-dlp --no-color search "artist"
fm-dlp --no-color download "URL"
fm-dlp --no-color config ~/Music
📋 Commands
search
Search for music tracks, albums, or videos on YouTube/YTMusic.
fm-dlp search <query> [--limit LIMIT] [--yt-video] [--album] [--raw] [--only-url]
| Option | Default | Description |
|---|---|---|
query |
Required | Search query string |
--limit N, -l |
10 |
Maximum number of results to return |
--yt-video, -v |
False |
Search for YouTube videos instead of music tracks |
--album, -a |
False |
Search for albums instead of individual tracks |
--raw, -r |
False |
Output results in raw format (Python dict representation) |
--only-url, -u |
False |
Output only the URLs without any formatting |
download
Download audio or video content from supported platforms (YouTube, YTMusic, and 1000+ sites).
fm-dlp download <urls> [--codec CODEC] [--kbps KBPS] [--quality QUALITY] [--jobs JOBS] [--quiet] [--no-metadata] [--keep] [--save] [--path PATH] [--only-video] [--cookies COOKIES] [--remote SOURCE]
| Option | Default | Description |
|---|---|---|
urls |
Required | Single URL, comma/space-separated list, or path to text file with URLs (one per line, # for comments) |
--codec, -c |
m4a (macOS)opus (others) |
Audio: mp3, aac, flac, m4a, opus, vorbis, wav, alacVideo: mp4, mov, mkv, webm, avi, flv |
--kbps, -K |
256 |
Audio bitrate in kbps (64–320). Higher = better quality, larger file |
--quality, -Q |
best |
Video quality preset: best, worst, 2160p, 1440p, 1080p, 720p, 480p, 360p, 240p, 144p, or custom height (e.g., 720) |
--jobs, -j |
5 |
Maximum number of concurrent downloads for faster batch processing |
--quiet, -q |
False |
Suppress yt-dlp output messages (errors still shown) |
--no-metadata |
False |
Disable embedding metadata (title, artist, album) and thumbnail into audio files |
--keep, -k |
False |
Keep the original downloaded file after conversion/post-processing |
--save, -s |
False |
Save settings (except URL) to config file |
--use-config, -u |
False |
Use saved parameters from config file as defaults |
--path, -p |
Configured path | Custom download directory (overrides default config) |
--only-video, -v |
False |
Download video file without audio track |
--cookies, -C |
None |
Browser name: brave, chrome, chromium, edge, opera, vivaldi, whale, firefox, safariOr path to cookies file ( .txt, .sqlite, .db, .cookies) |
--remote, -r |
None |
Download external JavaScript components for bypassing anti-bot protections (JS challenges). Options: ejs:github (yt-dlp repo) or ejs:npm (NPM registry) |
Audio Codec Details:
- Lossy:
mp3(universal),aac(Apple),m4a(Apple),opus(modern web) - smaller files - Lossless:
flac(high quality),wav(uncompressed),alac(Apple lossless) - larger files - Recommended:
opusfor best quality/size ratio,flacfor archival
Video Container Details:
mp4- Most compatible, usesm4aaudiomkv- Open format, usesopusaudiowebm- Web optimized, usesopusaudiomov- Apple format, usesm4aaudioavi- Legacy Windows, usesmp3audioflv- Flash video, usesaacaudio
config
Configure the default download directory path.
fm-dlp config <path>
| Option | Default | Description |
|---|---|---|
path |
Required | Default directory path for downloads. Use absolute path for best results (e.g., /home/user/Music or C:\Music) |
Config Location:
- Windows:
%LOCALAPPDATA%/fm-dlp/config.toml - macOS:
~/Library/Application Support/fm-dlp/config.toml - Linux:
~/.config/fm-dlp/config.toml
💡 Examples
Basic Download
Example of downloading a track from YouTube Music:
fm-dlp download https://music.youtube.com/watch?v=0KNxOBerr_8
📦 Example Output
Starting: https://music.youtube.com/watch?v=0KNxOBerr_8
[youtube] Extracting URL: https://music.youtube.com/watch?v=0KNxOBerr_8
[youtube] 0KNxOBerr_8: Downloading webpage
[youtube] 0KNxOBerr_8: Downloading android vr player API JSON
[info] 0KNxOBerr_8: Downloading 1 format(s): 251
[info] Downloading video thumbnail 41 ...
[info] Writing video thumbnail 41 to: /home/user/Music/Lexapro Delirium.webp
[download] Destination: /home/user/Music/Lexapro Delirium.webm
[download] 100% of 6.53MiB in 00:00:01 at 5.74MiB/s
[ExtractAudio] Destination: /home/user/Music/Lexapro Delirium.opus
Deleting original file /home/user/Music/Lexapro Delirium.webm (pass -k to keep)
[Metadata] Adding metadata to "/home/user/Music/Lexapro Delirium.opus"
[ThumbnailsConvertor] Converting thumbnail "/home/user/Music/Lexapro Delirium.webp" to png
[EmbedThumbnail] mutagen: Adding thumbnail to "/home/user/Music/Lexapro Delirium.opus"
Success: https://music.youtube.com/watch?v=0KNxOBerr_8
Search Examples
Search for tracks, albums, and videos:
# Search for tracks on YouTube Music
fm-dlp search "Sewerslvt" --limit 1
# Search for albums
fm-dlp search "Draining Love Story" --album -l 1
# Search for videos on YouTube
fm-dlp search "Sewerslvt goodbye" --yt-video -l 1
📊 Search Output Examples
Examples of formatting search results from different sources.
🎵 YTMusic (Track)
1. Mr. Kill Myself
├─ Sewerslvt
├─ Draining Love Story
├─ 13M │ 7:52
└─ https://music.youtube.com/watch?v=y55fzyXZDSE
──────────────────────────────────────────────────
N. Title
├─ Artist
├─ Album
├─ Views │ Duration
└─ URL
──────────────────────────────────────────────────
💿 YTMusic (Album)
1. Draining Love Story
├─ Sewerslvt
├─ 2020
└─ https://music.youtube.com/playlist?list=OLAK5uy_lwWVcID2Sw8o6Jfa9vz8-a2hqEFffKb-g
──────────────────────────────────────────────────
N. Title
├─ Artist
├─ Year
└─ URL
──────────────────────────────────────────────────
▶️ YouTube (Video)
1. Sewerslvt - goodbye
├─ Sewerslvt
├─ 2,405,647 │ 17:01
└─ https://youtu.be/ABBpsy6rlVU
──────────────────────────────────────────────────
N. Title
├─ Artist
├─ Views │ Duration
└─ URL
──────────────────────────────────────────────────
🧩 Formatting Legend
| Element | Description |
|---|---|
N. |
Sequential number of search result |
Title |
Track, album, or video title |
Artist |
Artist or channel name |
├─└─│ |
Tree branch characters |
Views │ Duration |
View count and length (MM:SS or HH:MM:SS) |
URL |
Direct link to content |
─── |
Visual separator line |
📄 License & Acknowledgments
AGPLv3 License — Built with:
| Library | Purpose |
|---|---|
| fm-dlp-core | Main core |
Author: Fkernel653
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file fm_dlp-4.5.4.2.tar.gz.
File metadata
- Download URL: fm_dlp-4.5.4.2.tar.gz
- Upload date:
- Size: 40.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.12.6 {"installer":{"name":"uv","version":"0.12.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f22529b06020245a180a13bc985643eb843fe3006d9f713c638cd06e149eceba
|
|
| MD5 |
aeffec6e82e6dd8c391f76242635428d
|
|
| BLAKE2b-256 |
3d69afbe2c65eaf050a178723357151b496111471b026c8cd3bb4068698d737f
|
File details
Details for the file fm_dlp-4.5.4.2-py3-none-any.whl.
File metadata
- Download URL: fm_dlp-4.5.4.2-py3-none-any.whl
- Upload date:
- Size: 24.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.12.6 {"installer":{"name":"uv","version":"0.12.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bc2b8dc87c10169dfa7503494be3ab434a3c92d730231019f6164dbab4ee2bc6
|
|
| MD5 |
ac32c1428aa1a66507ef1e2fdc98fb04
|
|
| BLAKE2b-256 |
c9c9b8735aaf9076e5f591e13cc6d99949ce50140a6ce4d11140e11900c0900e
|