A simple desktop app to download Instagram posts, reels, stories and highlights — no Instagram login required.
Powered by HikerAPI · built with Tauri 2 + Vue 3
📖 Documentation — installation, token setup, usage, troubleshooting.
Paste your HikerAPI token once, then download any public profile's content with a couple of clicks. Because downloads go through the HikerAPI cloud instead of a logged-in Instagram session, there is no account ban risk — unlike instaloader or gallery-dl.
- Single posts & reels — paste an
instagram.com/p/…or/reel/…link - Full profiles — posts, reels-only, active stories, highlights, and HD avatar, each selectable
- Explore first — the app opens on profile discovery; browse labeled photos, videos, carousels and stories, filter Posts by media type, select exact cards, then use one Download · All · Shown · Selected control
- Profile relationships — open a public profile's paginated Followers or Following list, search the complete list, and jump straight into another account in Explore
- Useful previews — open a Post or Reel to copy its description or canonical Instagram link
- No login, no ban risk — HikerAPI token only; your Instagram account never touches the flow
- Live Queue — per-job start and finish times, byte counts, file counters and cancel support; completed jobs open the exact saved-file list with previews and system file actions
- Resilient downloads — transient network and CDN server failures retry automatically; partial jobs count only files actually saved
- Shared network proxy — route both HikerAPI requests and Instagram CDN media through one HTTP, HTTPS, SOCKS5 or SOCKS5H proxy
- Incremental archives — already-downloaded files are skipped on re-runs (like
--fast-update) - Original timestamps — file mtime is set from
taken_at, so Photos/Finder sort correctly - JSON metadata sidecars — caption, like/comment counts and owner saved next to every post (toggleable)
- Local media Library — search and filter existing downloads without moving or changing archive files
- Balance indicator — remaining HikerAPI quota always visible in the header
Grab an installer from GitHub Releases:
| OS | File |
|---|---|
| Windows | insta-dl-gui_x.y.z_x64-setup.exe |
| macOS (Intel and Apple Silicon) | insta-dl-gui_x.y.z_universal.dmg |
| Linux | .AppImage / .deb / .rpm |
See CHANGELOG.md for release-by-release changes.
Windows SmartScreen may warn about unsigned binaries — click "More info" → "Run anyway". Code signing is planned.
- Sign up at hikerapi.com — the first 100 requests are free, no card needed.
- Copy the token from your HikerAPI dashboard.
- Paste it into the app on first launch.
One request ≈ one API call: fetching a post costs 1, stories 2, highlights 2 + 1 per highlight reel. Explore loads current Stories automatically for a public profile, which costs 2 requests. All fetches the complete category and can spend additional requests; Shown and Selected download the exact items already loaded without fetching more pages. Exact snapshots are limited to 500 items and enter Queue as one job; use All above that limit.
If Instagram media is blocked on your connection, open Settings and configure one shared proxy for HikerAPI and CDN traffic. Authenticated proxy URLs are supported; see the usage guide for supported schemes and switching behavior.
If two different previews fail within 10 seconds, the app shows one warning with Open Settings, Retry and Dismiss. Try a VPN for a blocked direct connection, or configure the shared proxy for HikerAPI and Instagram media. The warning is preview-only: profile metadata and download behavior are unchanged.
Open Library and run the initial scan to index media already in your download folder. New successful downloads are added to the same local catalog automatically. Search by username, shortcode or caption; filter by media kind, available/missing files and captured date; then sort by publication or import date.
A completed rescan updates existing entries and marks files that are no longer on disk as Missing. If a file returns at the same archive path, the next completed rescan makes it available again. Scanning is read-only for your archive: the app never moves, renames, edits or deletes media files.
The catalog itself is a rebuildable SQLite file stored in the platform app-data directory as insta-dl-gui/catalog.sqlite3 (~/Library/Application Support on macOS, %APPDATA% on Windows, and $XDG_DATA_HOME or ~/.local/share on Linux). See the usage guide for the full workflow.
Requires Node 22+ and Rust.
npm install
npm run tauri dev # development
npm run tauri build # installers into src-tauri/target/release/bundle/npm test # frontend unit and component tests
cd src-tauri
cargo test --locked # offline unit tests (CDN safety rules, error mapping, parsers)
SMOKE_TOKEN=... cargo test --locked --test live_download # live smoke (~6 real API calls)The CDN downloader enforces defense-in-depth rules ported from insto: HTTPS-only, Instagram-CDN host allowlist, manual redirects (≤5), MIME magic-byte cross-checks, per-file byte budget, disk guard, atomic writes and collision suffixes — all covered by tests.
The frontend can run in a plain browser with a mocked Tauri IPC — handy for UI work and screenshots:
npx vite &
node scripts/screenshot.mjs "http://localhost:1420/explore?mock=1&demo=explore" docs/screenshot.png- insta-dl — the CLI sibling of this app (same output layout)
- insto — interactive Instagram OSINT REPL
- instagrapi / aiograpi — private-API libraries for logged-in automation
- Open Video Downloader — inspiration for this project's UX (for YouTube)
- Hashtag downloads
- Comments export
- Auto-update channel (requires code-signing keys)
- Retry queue with backoff
- Interface translations
This app is not affiliated with, authorized, maintained, or endorsed by Instagram or Meta. It downloads only publicly accessible content via a third-party API service. Respect creators' rights and local law; you are responsible for how you use it.
