myspoti
Native Android client for Spotify, built with Jetpack Compose
Paste a link, get the file. Snag downloads video and audio from YouTube, Instagram, TikTok and over a thousand sites. Free, open source, no ads.
MediaDart · JavaScriptGitHub @SalehTZOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Paste a link, get the file. A tiny, open source yt-dlp downloader for Linux, Windows, macOS and Android.
Taken from the repository README
Loading the full README.
Read the full README ↗Most downloaders are either a terminal command or a page full of ads. Snag is the one I wanted as a kid: one box, one button, done. Whether it's a video, a playlist, a torrent, or a direct file link, if you need more control, it's all there one tap away.
magnet: link, open a .torrent file, or drop any direct file URL (.zip, .iso, .apk, archives, documents) and Snag handles it in the same queue.H.264 + AAC in .mp4, so your files play natively on every device and chat app.yt-dlp flags, extra arguments, cookies (from a file or straight from your browser), proxy, speed limits, and multi-connection aria2c acceleration.Grab the latest build from Releases (see CHANGELOG.md for what's new):
| Platform | Direct Download (Latest) | Notes |
|---|---|---|
| Android | snag-android-arm64-v8a.apk (most phones)snag-android-armeabi-v7a.apk (older 32-bit) | Or add Snag to Obtainium for automatic updates straight from GitHub Releases. |
| Windows | snag-windows-x64.zip | Unzip and run snag.exe. |
| macOS | snag-macos.dmg · snag-macos.zip | Drag Snag into Applications. It isn't notarized yet, so the first time, open it once, then go to System Settings > Privacy & Security and click Open Anyway (or run xattr -cr /Applications/Snag.app). |
| Linux | AppImage · .deb · .rpm · |
On desktop, Snag fetches the official yt-dlp, ffmpeg, aria2 and Deno binaries the first time it runs. It stores them in its own app folder and never installs anything system-wide. You can update yt-dlp from Settings > Components with one click, which matters because sites change often. On Android everything is bundled.
Every official Android release is signed with the same key. Check it with apksigner (from the Android SDK build-tools):
apksigner verify --print-certs snag-android-*.apk
The SHA-256 digest must be:
A5:35:0A:AA:8A:BC:94:6C:C8:68:36:B7:70:F6:61:70:D3:EF:C2:AE:7E:6C:15:B3:DD:0A:3C:E6:A6:AA:13:8D
If it doesn't match, don't install it. An APK signed with a different key also can't update an existing Snag install.
Snag is free and always will be: no ads, no paywalls, no "pro" version. If it saved you time, please consider chipping in. Donations pay for build machines, code signing certificates (so macOS and Windows stop warning you) and the hours spent keeping up with sites that keep changing.
Crypto, listed cheapest network first. Send only on the network shown; coins sent on a different network can be lost for good. (The app has a copy button for each address: Settings > About > Crypto.)
| Network | On exchanges, pick | Send | Address |
|---|---|---|---|
| BNB Smart Chain (lowest fees) | BSC / BEP20 | BNB, USDT | 0xDc131f09a194957EAdD1c069765BF9e78013Ac8C |
| Tron | TRON / TRC20 | TRX, USDT | TPmJbZpicJEaG9Vj5sMLBmKvzMnyn7Bkxt |
| Ethereum | ETH / ERC20 | ETH, USDT | 0xDc131f09a194957EAdD1c069765BF9e78013Ac8C |
| Bitcoin | BTC (SegWit, address starts with bc1) | BTC | bc1qahd3arfp90rpny73dp9unjhcdl32mmnkrln7uy |
The BNB Smart Chain and Ethereum addresses are the same. That's normal: both networks use the same address format. Just make sure the network you pick matches the row you're copying from.
You can also help for free:
You need Flutter 3.47 or newer.
git clone [https://github.com/SalehTZ/snag.git](https://github.com/SalehTZ/snag.git)
cd snag
flutter pub get
flutter run -d linux # or windows, macos
flutter run -d <android-id> # a phone or emulator
# Release builds
flutter build apk --release --split-per-abi
flutter build linux --release # then linux/packaging/build.sh for .deb, .rpm and AppImage
flutter build windows --release
flutter build macos --release
flutter test # unit tests (args, parsing, models)
flutter test tool/e2e # real downloads through the desktop engine (needs network)
flutter test tool/screenshots --update-goldens # renders every screen to tool/screenshots/goldens
flutter test tool/icon --update-goldens && dart run flutter_launcher_icons # regenerate the app icon
python3 tool/site/build.py # rebuild the website in docs/ (GitHub Pages)
UI (Flutter, Riverpod)
└─ DownloadManager: unified queue, concurrency, history (media, torrents & direct files)
└─ YtDlpEngine & Aria2 / Direct downloader: shared args and parsing
├─ DesktopEngine: spawns yt-dlp / aria2c binaries (Linux / Windows / macOS)
└─ AndroidEngine: Kotlin bridge to youtubedl-android (embedded Python, ffmpeg, aria2c, QuickJS)
The trick that keeps it small: Snag asks yt-dlp to print machine-readable progress (--progress-template "download:SNAG_P%(progress)j", plus --print after_move:... for the final path). Both platforms just stream raw output lines into a single Dart parser, lib/engine/output_parser.dart, which has unit tests. All the flags come from one pure function, lib/engine/args_builder.dart, which is also unit-tested.
| Path | What lives there |
|---|---|
lib/engine/ | yt-dlp & aria2 args, output parsing, desktop/Android engines, binary manager |
lib/features/ | Home, download sheet, queue, library, settings, templates, first-run setup |
lib/core/theme/ | Material 3 Expressive theme and spring motion |
lib/l10n/ | Translations (app_<locale>.arb) and locale-aware formatting |
android/app/src/main/kotlin/ | YtDlpBridge, DownloadService, share intent |
Snag ships in English and Persian. Help bring it to your language on Hosted Weblate: no Git or Flutter needed, and anything you leave out falls back to English. See TRANSLATING.md for the details.
PRs are welcome! See CONTRIBUTING.md, and TRANSLATING.md if you'd like to add your language. If a site is broken, first try Settings > Components > Update (or switch on nightly yt-dlp). Most breakages are fixed upstream within days.
Snag is a front-end for yt-dlp and aria2. It doesn't host, proxy or circumvent anything itself. Only download content you have the right to download, and respect each site's terms and your local laws.
Snag is licensed under the GNU GPL v3. It is inspired by Seal (an excellent Android-only app) but shares no code with it. Its building blocks:
Snag is a free, open-source, cross-platform GUI media, torrent, and file download manager built on top of yt-dlp, aria2c, and ffmpeg. It allows users to download video (up to 4K), audio (MP3, M4A, Opus, FLAC) from over 1,000 websites—including YouTube, Instagram, TikTok, X (Twitter), SoundCloud, Vimeo, Twitch, and Reddit—as well as BitTorrent (.torrent and magnet: links) and direct HTTP/HTTPS files of any type, without advertisements, telemetry, user accounts, or paywalls.
| Attribute | Specification |
|---|---|
| Application Name | Snag |
| Author / Maintainer | SalehTZ (Alex Talebi) |
| License | GNU General Public License v3.0 (GPL-3.0) |
| Core Engines | yt-dlp (Stable & Nightly channels), aria2c (Torrents & multi-connection direct downloads), ffmpeg |
| Supported Platforms | Android 7.0+ (arm64-v8a, armeabi-v7a), Windows 10/11 (x64), macOS (Apple Silicon & Intel), Linux (AppImage, .deb, .rpm, .tar.gz) |
| Supported Download Types | Streaming video/audio (1,000+ sites), BitTorrent (.torrent files & magnet: URIs), and direct HTTP/HTTPS file links (any file extension) |
| Audio Formats | MP3, M4A, Opus, FLAC |
| Video Resolutions | Up to 4K (2160p) + custom format selection |
| Key Features | Universal download queue, automatic clipboard detection, Android Share Sheet support, drag-and-drop URL input, selective playlist queuing, SponsorBlock integration, isolated local binary management on desktop, 1-tap in-app yt-dlp updates, RTL layout & Persian (Jalali) calendar support |
| Official Website | https://salehtz.github.io/snag/ |
| Source Repository | https://github.com/SalehTZ/snag |
.tar.gzchmod +x the AppImage and run it on any distro. Use .deb (Debian, Ubuntu, Mint) or .rpm (Fedora, openSUSE) for your package manager, or extract the .tar.gz bundle and run ./snag. |