saveme Download

Free · open source · runs on your machine

Paste a link. Get the file.

saveme is a video downloader built on yt-dlp. It opens in your browser, but the server is on your own computer — nothing is uploaded, no account is needed, and no one else sees what you download.

Windows · macOS · Linux — self-contained, nothing else to install

What it does

A front end for yt-dlp that behaves like an app

yt-dlp is the best downloader there is and it is a command line tool. saveme puts a page in front of it: paste, look at what is there, click. Everything the downloader is good at is still there underneath.

Many links at once

The URL box is a text area. Paste a block of links, one per line, and press Extract — each is fetched independently and gets its own card, so one dead link takes nothing else down with it. Three extract at a time; the rest queue.

Playlists and channels

A playlist or channel URL is listed entry by entry, so you can take one video or all of them. Up to 500 entries by default, and the limit is a setting.

Quality presets, or audio only

Best available, capped at 1080p, capped at 720p, or strip the audio out to MP3 or M4A. The caps are lenient on purpose — formats that do not report a height are kept rather than filtered away, which is what causes most spurious "requested format is not available" errors elsewhere.

Rename while it downloads

Type the name you want at any point. Mid-download it is remembered and applied when the file is finished; on a finished download the file moves straight away. The extension is kept either way.

Nothing phones home

No analytics, no crash reporting, no account, no update pings. The server binds to 127.0.0.1 and the only traffic that leaves your machine is yt-dlp fetching the media you asked for.

It closes like an app

The packaged build quits a few seconds after you close the tab — but never while a download is running; those finish first. No stray process to hunt down in Task Manager.

Install

Download and run — nothing to set up

The desktop builds are completely self-contained: Python, yt-dlp and a static ffmpeg/ffprobe pair are already inside. Unpack the archive, run the binary, and your browser opens on the app.

Every release also ships SHA256SUMS.txt — check your download against it. Around 300 MB unpacked, most of that ffmpeg.

First run: getting past the security warning

These builds are not code-signed, because that requires paid certificates from Apple and Microsoft. Both systems will warn you once. Here is what you will see and why.

macOS

The app is ad-hoc signed, which is the minimum that runs at all on Apple Silicon. Combined with the quarantine flag macOS puts on any download, the dialog says "saveme is damaged and can't be opened". That is Gatekeeper's wording for unsigned — it is not a corrupt download. Clear the flag once:

xattr -dr com.apple.quarantine /path/to/saveme.app

Or open System Settings → Privacy & Security → Open Anyway. The first launch takes about ten seconds while Gatekeeper hashes the bundle; after that it is instant. saveme has no dock icon — its interface is the browser tab — so quit it from the tab, the Quit button, or Activity Monitor.

Windows

SmartScreen shows "Windows protected your PC" → More infoRun anyway. Defender occasionally quarantines unsigned PyInstaller executables as a heuristic false positive; add an exclusion rather than re-downloading.

Linux

tar -xzf saveme-<version>-linux-x64.tar.gz
./saveme-<version>-linux-x64/saveme/saveme

Opening a browser automatically needs xdg-utils; without it the URL is printed for you to paste.

Or run it from source

Worth it if you want to upgrade yt-dlp yourself the moment a site changes. Needs Python 3.11+, uv, and ffmpeg on your PATH.

git clone https://github.com/hasithmeth/saveme.git
cd saveme
uv sync
uv run saveme

Then open http://127.0.0.1:8765. Flags you may want: --port 9000, --download-dir ~/Videos, --open.

Instructions

Using it

The basic loop

  1. Copy a link — a video, a playlist, or a channel.
  2. Paste it into the box and press Extract (Enter submits; Shift+Enter adds a line).
  3. Pick a preset on the card that appears, and click Download.
  4. Files land in ~/Downloads/saveme unless you change it in Settings.

Format presets

PresetWhat you getNeeds ffmpeg
BestHighest video plus highest audio, mergedTo merge — otherwise falls back to a pre-merged format
1080pCapped at 1080p, mergedSame
720pCapped at 720p, mergedSame
Audio (MP3)Audio track extracted to MP3Yes
Audio (M4A)Audio track extracted to M4AYes

Without ffmpeg, video still downloads but quality is capped at whatever single pre-merged file the site offers — often 360p or 720p — and the audio presets are unavailable. The packaged builds bundle it, so this only applies when running from source. A banner at the top of the app tells you if it is missing.

Sites that need you signed in

Some sites will not serve anything to a client that is not logged in. Export your cookies with a browser extension that writes Netscape format, then point saveme at the file:

SAVEME_COOKIES_FILE=~/cookies.txt uv run saveme

For a packaged build, put that line in a .env file next to the executable. SAVEME_COOKIES_FROM_BROWSER=firefox reads a browser profile directly instead — though recent Chrome versions block this with App-Bound Encryption, so a cookies file is the reliable route.

A cookies file is a login. Anyone holding it can act as you on that site. Keep it out of shared folders and out of version control, and delete it when you are done.

When extraction works but the download 403s

Some sites judge how your client speaks TLS rather than what headers it sends. The symptom is distinctive: the video details appear fine, then the download itself fails with 403. saveme impersonates a real browser by default to get around this. You can pin it:

SAVEME_IMPERSONATE=chrome:windows-10   # pin a client and OS
SAVEME_IMPERSONATE=off                 # turn it off

Settings worth knowing

VariableDefaultWhat it does
SAVEME_DOWNLOAD_DIR~/Downloads/savemeWhere files are saved. Also editable in the app.
SAVEME_MAX_CONCURRENT_DOWNLOADS2How many download at once (1–8).
SAVEME_PLAYLIST_ENTRY_LIMIT500Most entries listed from one playlist or channel.
SAVEME_COOKIES_FILENetscape-format cookies for signed-in sites.
SAVEME_PORT8765Port to listen on.
SAVEME_EXIT_WHEN_IDLEon when packagedQuit after the last tab closes.

The full list is in the README. Every setting is an environment variable, readable from a .env file placed next to the executable.

Reaching it from your phone

saveme binds to loopback and checks the Host header against an allowlist, so simply listening on another interface is not enough — that check is what stops a hostile website from pointing DNS at your machine. Opt in with the address you will actually type:

SAVEME_HOST=192.168.1.20 uv run saveme

This puts an unauthenticated file-writing service on your network. Anyone on that Wi-Fi can queue downloads onto your disk. Only do it on a network you control, and stop the server when you are finished.

Supported sites

If yt-dlp can reach it, saveme can save it

saveme adds no allowlist and no blocklist of its own. Site support is entirely yt-dlp's, which means it is enormous and it is maintained by people who fix extractors within days of a site changing.

1,752site extractors in the bundled yt-dlp
83of those are age-restricted sites
0URLs filtered, logged, or sent anywhere
Monthlyrebuilds so extractors stay fresh

The coverage spans mainstream video platforms and their playlists and channels, social networks, news sites and public broadcasters, music and podcast hosts, education and conference platforms, live streams and VOD archives, and adult tube sites. The authoritative list is yt-dlp's own supported-sites page — if a site is on it, pasting its URL into saveme works.

Adult and NSFW sites

Yes — this works, and it is worth being direct about it rather than coy. yt-dlp ships dedicated extractors for adult tube, clip and cam sites, and saveme hands every URL straight to it without inspecting, filtering or judging what you paste.

Three things matter more here than anywhere else, and saveme is built the right way for all three:

Nothing leaves your machine

Web-based "downloader" sites see every URL you paste, and many keep logs, inject ads, or wrap the file in something you did not ask for. saveme is a server on 127.0.0.1 with no analytics and no account — the URL goes from your browser to your own process to the site, and nowhere else.

Login-gated content needs cookies

Most adult sites gate at least some content behind an age confirmation or an account. Export a cookies file from a signed-in browser session and set SAVEME_COOKIES_FILE — see Sites that need you signed in above. Treat that file like a password.

403 on download usually means TLS fingerprinting

These sites fingerprint aggressively. Browser impersonation is on by default and fixes most of it; if a specific site still refuses, pin a target with SAVEME_IMPERSONATE=chrome:windows-10.

Adult content is 18+ (21+ in some places), and the rules are yours to follow. Download only what you are legally permitted to, respect each site's terms of service, do not circumvent paywalls or DRM, and never redistribute. saveme does not check any of this for you — it cannot, and it does not try.

A URL that used to work has stopped? That is almost always an upstream extractor, not saveme. A packaged build pins the yt-dlp it shipped with, so grab a newer release — one is built automatically every month. From source, uv lock --upgrade-package yt-dlp && uv sync fixes it immediately. Extraction bugs belong on yt-dlp's issue tracker, not this one.

Troubleshooting

When something goes wrong

What you seeWhat it means
Quality is capped at 720p or 360pffmpeg is missing, so nothing can be merged. The banner at the top of the app says so and gives you the install command.
"Requested format is not available"The site does not offer your cap. Try the Best preset.
"Sign in to confirm you're not a bot"The site wants a session. Supply a cookies file.
403 on the download, though extraction workedTLS fingerprinting. Pin SAVEME_IMPERSONATE.
"saveme is damaged and can't be opened"macOS Gatekeeper on an unsigned app, not a bad download. Clear the quarantine flag.
403 forbidden_host from your phoneThe Host allowlist. Bind the LAN address you are typing.
Stuck at 100%ffmpeg is merging or converting. The status line says which.
Job list is empty after a restartJobs live in memory only. The files on disk are untouched.
.part files left behindAn interrupted download. Queue the same URL again and it resumes.

Still stuck? Open an issue on GitHub — but if a particular site fails to extract, check yt-dlp's tracker first, because that is where the fix will come from.

Support the project

Found it useful? Leave a tip

saveme is free and open source, with no ads, no telemetry, no upsells and no paid tier — and it is going to stay that way. If it saved you some time, a coffee is the whole business model.

☕ ko-fi.com/hasithj

Entirely optional. Everything works exactly the same either way. Starring the repo or telling someone about it helps just as much.

The fine print

saveme downloads nothing by itself

It is a convenience wrapper. Every part of the job that actually matters is done by other people's software: yt-dlp finds the media, picks the formats, and performs every network request and every byte of the download; ffmpeg merges streams and converts audio. What saveme adds is a local web page, a job queue, and some filename handling.

This project is not affiliated with, endorsed by, or supported by yt-dlp, the FFmpeg project, or any website you point it at. All trademarks belong to their owners. Which sites work and when an extractor breaks is decided upstream, not here.

You are responsible for what you download

saveme does not inspect, filter, judge or restrict the URLs you give it. It takes what you type and hands it to yt-dlp. Making sure you have the right to download a given file — and complying with the site's terms of service, copyright law, and any other law that applies where you are — is entirely your own responsibility. Downloading copyrighted material without permission may be illegal where you live. Do not use saveme to infringe copyright, breach a contract, or circumvent access controls.

No warranty, no liability

saveme is provided "as is", without warranty of any kind, as stated in the MIT licence. To the maximum extent permitted by law the authors are not liable for anything that follows from using it — lost or overwritten files, a filled disk, suspended accounts, or any legal consequence of what you chose to download. Using this software means you accept that risk yourself.