個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Paste a link, get the file. A tiny, open source yt-dlp downloader for Linux, Windows, macOS and Android.
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 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. |