v1.3.0 · Native for macOS Tahoe 26.4

Download.In parallel.

MacGet splits every file across up to 16 chunks, learns what each host will tolerate, and resumes across restarts — a native SwiftUI app for macOS Tahoe.

$brew install --cask suryansh-codes2209/macget/macget

Or install with Homebrew — no Gatekeeper prompt. Installation guide

Free · MIT licensedApple silicon nativeZero telemetry
Threads
16 parallel chunks
max per file
Resume
Across restarts
If-Range ✓
Privacy
0 telemetry
MIT licensed
T1168 MBT2192 MBT3144 MBT4201 MB412.7 MB · 28.4 MB/s · 0%
The inspector

Not a progress bar. A readout.

One bar creeping right looks the same over 1 connection or 16. MacGet shows you the throughput curve, the actual pieces in flight, and exactly why the engine settled on the concurrency it did.

The MacGet window with a download selected and the inspector open, showing a live speed chart, the file's piece map, and the connection breakdown.
A 5.43 GB transfer mid-flight, split into 256 pieces across 6 connections.
The inspector panel at full size: current speed with peak and average, the piece map with done, in-flight and pending counts, transfer totals, and the connection breakdown.
The panel at native scale.
Speed
30-second window

Throughput sampled at the engine's 250 ms cadence and drawn as a continuously scrolling curve, with the window's peak and average alongside. It slides between samples, so it reads as live rather than polled.

Pieces
256 × 21.2 MB

The file drawn as its real work units, in file order. Filled cells are done, outlined ones are in a worker's hands right now. Work-stealing is visible here and nowhere else — a single bar hides it completely.

Connections
8 requested → 6 effective

Every distinct reason the worker count can sit below what you asked for, each on its own line: a cap learned from this host, a demotion after it started refusing connections, or simply your own setting. A download opens at its full count immediately — the number only comes down on evidence.

The MacGet download list showing completed, failed and in-progress downloads, with aggregate throughput in the side panel.
The queue itself — filterable by state, with aggregate throughput when nothing is selected.
Why MacGet

Built around how downloads actually work.

One shared URLSession, an engine that learns each host's limits, and no background daemons, kernel extensions, or telemetry anywhere.

Up to 16 parallel chunks

HTTP-Range requests split each file across as many connections as the host allows. Work-stealing hands finished workers the next outstanding piece, so one slow chunk never holds up the file.

Watch it happen, live

An inspector panel charts throughput over a rolling 30-second window and draws the file as its actual pieces — cells filling in file order, the ones a worker holds pulsing. One bar creeping right looks the same whether you have 1 connection or 16; this doesn't.

Adapts to throttled hosts

When a host refuses connections while the rest keep delivering, the engine halves its workers instead of hammering — and a dropped Wi-Fi link, where everything fails at once, is deliberately not counted against the server. The learned cap persists for that host for 7 days, so the next download starts smart without one bad night slowing it forever.

Resume across restarts

Per-chunk progress is persisted. Quit mid-download and reopen — it picks up where it left off. If-Range validators catch a file that changed underneath you instead of corrupting it.

Video and audio via yt-dlp

Media links route to a bundled yt-dlp + ffmpeg extractor with a quality and container picker. Opt-in — ordinary links always download as plain HTTP files.

Books from open catalogs

Browse and search Project Gutenberg and the Internet Archive without leaving the app, then send a book straight to the queue. Add any OPDS feed too — including your own Calibre server.

BitTorrent, on your terms

Magnet links and .torrent files download in the same queue as everything else. Off by default, and seeding stops at a ratio and time limit you set. MacGet never searches for or indexes torrents.

Downloads behind a login

Basic, Digest, and NTLM challenges are answered from credentials you store once. They live in the macOS Keychain, not in a config file.

Capture from your browser

A Chrome, Edge, Brave, and Firefox extension hands downloads to MacGet over local native messaging — cookies and referrer included, so logged-in downloads keep working.

Verified, not just downloaded

SHA-256 and MD5 are checked at finalize, before the partial file is promoted. A mismatch fails the download and keeps the partial rather than handing you a bad file.

Yours to schedule

Global speed cap, per-download priorities, configurable timeouts and retries, HTTP/HTTPS proxy support, and auto-sort into category folders when a download lands.

MIT licensed, zero telemetry

No analytics, no remote logging, no account. Your queue and settings never leave ~/Library/Application Support/Macget.

Browser capture

Your browser starts it. MacGet finishes it.

Install the extension and downloads leave the browser's single stream for MacGet's engine — carrying the cookies and referrer that made them work, so a file behind a login stays downloadable.

Handed over with every capture

local native messaging
url
The file's own address — not the page you were reading.
cookie
Scoped to that URL's domain, so a file behind a login still downloads.
referer
Hotlink protection sees the page you came from and lets it through.
userAgent
Your browser's, verbatim. The request looks the same as the one it replaces.
filename
The name your browser resolved, not the id sitting in the URL.
size
The queue shows the real total before the first byte lands.

The handoff runs over a local channel to a helper inside Macget.app. The extension contains no code that contacts a remote server — see the privacy policy.

Nothing gets lost in the handoff

The browser's own download is cancelled only after MacGet confirms it has the file. Quit MacGet, turn capture off, skip the install — the worst case is that your browser downloads it the way it always did.

Add it to your browser

Published on the Chrome Web Store — one click on Chrome, Edge, and Brave. Firefox loads it from the repository.

  • Chrome
  • Edge
  • Brave
  • Firefox
Before you install

One prompt on first launch. Then never again.

MacGet is free and not notarized — notarization needs a paid Apple Developer account. macOS will stop the first launch, and here is exactly how to get past it.

1

macOS will warn you once

“Macget can't be opened because Apple cannot check it for malicious software.” Expected — the build isn't notarized. Click Done.

2

Open Anyway

System Settings → Privacy & Security. Scroll to the message about Macget and click Open Anyway, then confirm.

3

That's it, forever

macOS remembers. Every later launch — and every Sparkle auto-update — opens normally with no prompt.

Prefer the terminal?

Clearing the quarantine flag skips the dialog entirely:

xattr -dr com.apple.quarantine /Applications/Macget.app
Full install guide
The pipeline

Probe. Plan. Stream. Finalize.

Every download walks through the same four stages. Each one is its own actor — failure in one doesn't corrupt the others.

  1. 01

    Probe

    HEAD with a ranged-GET fallback, because some servers 405 on HEAD. Records size, ETag, Last-Modified, and whether byte ranges are honored at all.

  2. 02

    Plan

    Split into pieces of ~8 MB, up to 16 workers, each chunk at least 64 KB. Clamped to whatever cap the engine already learned for this host.

  3. 03

    Stream

    Parallel range requests over one shared URLSession, HTTP/3 where offered. Transient errors back off and retry; permanent ones fail fast instead of burning attempts.

  4. 04

    Finalize

    Verify the checksum if one was given, then move the partial into place under a unique name — and into a category folder if auto-sort is on.

FAQ

Quick answers.

If something here is unclear, the docs go deeper — and the source code is always the final word.

  • Most either ignore Range support, or open every connection they can and get throttled for it. MacGet discovers what each host actually tolerates at runtime and adapts, using native URLSession and persisting state properly across launches.