Frequently asked questions
Straight answers on cost, devices, privacy, quality, and updates. For step-by-step installation see the install guide; for fixes see troubleshooting.
General
Is Grablytic really free?
Yes, completely. No paid tiers, no ads, no tracking, no subscriptions, no feature gates. Grablytic is 100% open source under the GNU General Public License v3.0 (GPL-3.0) — every line is published on GitHub for inspection and audit.
Where do I download it?
Right here — this site routes you directly to official GitHub Releases. Android users can also install via Obtainium for seamless automated updates. See the install guide for per-OS steps.
Does it require an account or login?
No accounts, no email sign-ups, no cloud registration. Install the binary and start downloading immediately. Optional logins (e.g. cookies for age-gated or private content) stay on your device and are strictly opt-in.
Where does the downloaded media come from?
Grablytic extracts publicly available streams directly from platforms via yt-dlp, on your own device. It hosts and stores no content itself. See the DMCA notice on GitHub for takedown inquiries.
Can I contribute to development or packaging?
Absolutely — issues, feature requests, and pull requests are welcome on GitHub. Packaging manifests live in the distribution/ and fastlane/ directories of the repository.
Is there a full manual for every setting?
Yes — the usage guide walks through every screen and setting: Format Picker, audio, playlists, subtitles, SponsorBlock, queue, speed tuning, cookies, schedules, and updates. Start at the docs hub.
Install & platforms
Which platforms and architectures are supported?
Android 8+ (arm64, armv7, x86_64), Linux x64 and arm64 (standalone tarball, .deb, .rpm, Arch pkg.tar.zst), and Windows 10/11 x64 (portable zip). iOS and Web are not supported. See the install guide for per-OS steps.
Which Android APK should I choose?
Most modern phones: arm64 + Deno (recommended default — Deno is yt-dlp's preferred, sandboxed JS runtime). Want a smaller download? arm64 + Node.js solves the same challenges in ~40 MB less. 32-bit budget devices take the armv7 Node build; Chromebooks and emulators take x86_64. The universal APK bundles everything (458 MB) if you would rather not decide.
Do I need Deno or Node.js installed?
No. Desktop bootstraps Deno automatically on first launch; Android ships the runtime inside the APK. A system Deno/Node on PATH is only ever used as a fallback.
How do updates work?
Android users can install via Obtainium for seamless automated updates from GitHub Releases. On Android, engine binaries (FFmpeg, JS runtime) ride app updates because the OS forbids executing downloaded files. On desktop, yt-dlp and engine components update silently with integrity checks — switch channels (stable / nightly / master) in Settings → Updates.
I used TrueStream. How do I migrate?
Install Grablytic alongside TrueStream, verify it works, then uninstall the old app — Android treats it as a new application. Your existing Download/TrueStream folder keeps being used automatically; app-private settings and history do not carry over.
Privacy & security
What data leaves my device?
Nothing except the normal requests to the platforms you download from. There is no analytics SDK, no crash-reporting phone-home, no account server. Diagnostic logs stay on-device unless you explicitly export them — and tokens are redacted automatically before export.
How are my logins and cookies protected?
Session cookies are stored app-private with 0600 permissions, excluded from cloud backups, and never transmitted anywhere except to the platform you authenticated with. You can wipe all app data, logs, and cookies at any time from Settings.
How do I report a security vulnerability?
Privately, via GitHub Security Advisories on the Grablytic repository. Never file public issues for security problems.
Downloading & features
What quality can I download?
Up to whatever the platform serves — including YouTube 4K/8K/HDR where available. The quality ceiling cascades AV1 → VP9 → H264, and the Format Picker lets you override with an explicit format, download audio-only (Opus default, FLAC and compact presets), embed subtitles and thumbnails, and apply SponsorBlock cuts.
Can I download whole playlists or many links at once?
Yes. Paste multiple URLs for batch queues (up to 5 concurrent downloads), or open a playlist for a selection screen with multi-select, reverse/shuffle, ranges like 1-10, and unavailable-video marking. A download archive skips repeats automatically.
Why is my download stuck at 99%?
That is by design: streaming progress caps at 99% and only the terminal finished event reports 100%, because FFmpeg post-processing (merging, embedding, chapters) still runs after the last byte arrives. Check the live log for the post-processing stage.
Do downloads resume after reboot or failure?
Yes. Downloads snapshot progress continuously and recover automatically on startup, including after a reboot. Partial files younger than 24 hours in the cache directory qualify for resume.
Engine & runtimes
What is yt-dlp, exactly?
yt-dlp is the open-source download engine inside Grablytic — a battle-tested tool that understands 1,000+ sites and extracts the best available streams. Grablytic is the friendly app wrapped around it: the interface, queue, Format Picker, merging, tagging, and updates. When sites change their layouts, engine updates (silent on desktop, riding app updates on Android) keep downloads working without you doing anything.
Why does a downloader need JavaScript?
Because YouTube fights downloaders with JavaScript puzzles. Streams are protected by signature-scrambling and proof-of-origin challenges that change regularly — the only reliable way through is to run the site's own puzzle code, which is written in JavaScript. yt-dlp executes those solver scripts in a small JS runtime on your device. No working JS runtime means YouTube downloads fail with signature or challenge errors — which is why Settings → Diagnostics & Logs shows your runtime health front and center.
What are Deno, Node.js, and QuickJS doing in my app?
They are three JavaScript runners, any one of which can solve the video-site puzzles — and they do nothing else. Deno (currently v2.7.7) is the default: it is yt-dlp's recommended runtime, sandboxed, and the fastest at challenge solving. Node.js (currently v25.3.0) solves the same puzzles in a ~40 MB smaller download. QuickJS is a tiny built-in fallback that is always there. Only allowlisted puzzle scripts ever run; your browsing and files are never touched by them.
Why ship two runtimes (dual) instead of one?
Coverage and resilience. No single runtime fits every device: Deno ships no 32-bit ARM build, so budget 32-bit phones need Node.js, while modern phones get the faster Deno default. And runtimes form an automatic fallback chain — Deno, then Node.js, then QuickJS — so if one is missing or unhealthy, the next quietly takes over instead of your download failing. You pick the bundle that matches your phone at install time; the app handles the rest.
Why is the Android APK so big?
Because Android forces everything to ship inside the box. Three heavy things must be bundled: the FFmpeg video toolkit compiled separately for each phone chip (arm64, 32-bit ARM, x86_64), a full JavaScript runtime (Deno ≈ 91 MB, Node.js ≈ 50 MB), and the app itself — all verified by checksum at build time. Android forbids apps from executing anything downloaded later, so unlike desktop, nothing can be fetched on first launch. The fix is choice: the recommended arm64 + Deno APK downloads only your chip and one runtime, while the 458 MB universal APK (every chip + both runtimes) exists so nobody has to think at all.
Why is the Windows download so small then?
Because desktops are allowed to finish setup after install. The portable .zip stays lean (≈ 30 MB class): on first launch a bootstrapper fetches FFmpeg and the Deno runtime automatically, each SHA-256 verified before it is trusted. Same verified components as Android — just delivered on first run instead of inside the download, which is exactly what Android's security rules forbid.
How does Grablytic handle YouTube blocks and members-only videos?
In layers, from least to most invasive. First it tries anonymously — no login, no cookies — using multiple player clients so a single blocked route never kills the download. Proof-of-origin tokens are generated locally by the bundled runtime. Only if the video genuinely requires it (age-gated, private, member content) do you sign in through the in-app browser, and those cookies stay on your device, opt-in, never uploaded. If a region or IP block remains, the error card says so plainly and suggests the fix (VPN, proxy, or cookies) instead of dumping a stack trace.
Question not covered? Ask on GitHub or check troubleshooting.