Braidfor macOS, Windows and Linux

One file, every network you have.

Braid is a free, open-source download manager that combines your internet connections for one download. Most download managers open more connections over the same link; Braid opens them over different networks, so your Wi-Fi, your Ethernet and your phone’s 5G pull the same file at once, and every chunk is checked before it counts.

App size
15.5 MiB
Tests
507
Written in
Rust
Licence
GPL-3.0

ubuntu-26.04-desktop-amd64.iso

0%, 0.00 GiB of 1.17 GiB, 0.0 MiB/s

  • Ethernet0.0 MiB/s
    en1, 0 chunks
  • Wi-Fi0.0 MiB/s
    en0, 0 chunks
  • Phone, 5G0.0 MiB/s
    Pixel 7 Pro, 0 chunks
  1. Probed the server: 1.17 GiB, ranges honoured, ETag present. Split into 120 chunks.

A simulation of Braid’s scheduler, running in your browser. Unplug a path, damage a chunk or kill the process, and watch what the real engine does in each case.

At a glance

What it is
A free, open-source download manager for macOS, Windows and Linux that downloads one file over several internet connections at once.
Best for
Large downloads when you have two genuinely separate connections, such as home broadband plus a phone's 5G. A 20 Mbps link and a 30 Mbps link can approach 50 Mbps for one file when the server allows ranged downloads.
Not for
Speeding up streaming, video calls or games. On a single connection it works like an ordinary multi-connection download manager; the extra speed comes from adding separate paths.
Compared with
Unlike Speedify it is free, is not a VPN and only speeds up downloads. Unlike IDM, Free Download Manager or Motrix it spreads one file across several networks, not just several connections on one network.
Price
Free and open source under GPL-3.0.

You can see which road carried what.

The bar under each transfer is split by interface, and the sidebar shows every path’s live speed. A link that is contributing nothing is visibly contributing nothing.

Braid's transfer list on macOS, with Ethernet, USB Tether and Wi-Fi speeds in the sidebar and a torrent at 70 percent

The running application, with one thing staged: the machine it was captured on has a single routable interface, so Ethernet, USB Tether and Wi-Fi here are three loopback connections wearing those labels. The torrent’s swarm is a stand-in backend.

Bound, not routed

Each connection is pinned to a network interface, not left to your operating system’s routing table, which would send all of them down one link.

Measured, not assumed

Chunks go to whichever path is fastest right now. A slow link gets fewer, a link that dies has its work moved, and a cap you set is a ceiling.

Your phone counts too

With Braid for Android, a phone lends its mobile data as one more path. Scan a code once and it appears in the sidebar.

It would rather fail than hand you a wrong file.

A corrupt file that looks complete is worse than an error. Braid checks every chunk with BLAKE3 as it lands, and it treats these server behaviours as the warnings they are.

  1. Advertises Range, then sends the whole fileRefused. Writing it would put the file's first bytes into every chunk.
  2. Answers 200 where a 206 was asked forThe resource changed. The partial is discarded, never spliced.
  3. Content-Range total changes mid-downloadSame verdict: a different file, so it starts clean.
  4. Gzips a ranged responseRanges would address compressed bytes. The chunk is aborted.
  5. Serves a login page with a plausible Content-LengthCaught before a byte of it reaches your file.
  6. Signed link expires under 16 connectionsRe-resolved before it lapses, once, not sixteen times.

The one rule a crash cannot break.

Chunk data is made durable before the journal claims the chunk. Swap the last two steps and resume trusts bytes that were never written. Try both.

  1. 1Write the chunk10 MiB lands in the .part file at its offset.
  2. 2Wait for the driveThe bytes are flushed, not just handed to the OS.
  3. 3Journal the chunkOnly now is it recorded as done, with its hash.

Pick an order, then cut the power between the steps.

Every mode keeps the order above. A looser one only costs more re-downloading after a crash, never a wrong file.
Durability modeFlushesJournal
SafeAfter every chunkWaits for the drive
Balanced, the defaultEvery 5 s or 64 MiBWaits for the drive
FastEvery 30 s or 512 MiBLeft to the operating system

A native app on every desktop.

One Slint interface, built for three desktops from one source, with each platform’s own metrics and selection styling. A menu bar item, a queue, and handlers for magnet links and .torrent files.

Every chunk, as it lands.

The inspector's piece map is the journal's own bitmap. It proves a resumed transfer kept what it had, and it is where a failed hash shows as a cell going from Have back to Missing.

Braid's inspector showing a completed piece map of 192 chunks for an Ubuntu ISO

Your interfaces, and how they are bound.

Tick the networks Braid may use and cap any of them. The Binding column shows the mechanism actually in force, so a quiet fall back to a plain source-address bind is visible instead of assumed.

Network settings listing Wi-Fi, Thunderbolt and iPhone USB interfaces bound with IP_BOUND_IF, and a VPN excluded

Limits that know what time it is.

Paint the hours you want capped. Outside them Braid runs unlimited, and the schedule reaches a transfer that is already running, not just the next one.

Bandwidth settings with a 20 MiB/s download limit painted over weekday evenings and weekends

A URL, a magnet link or a .torrent.

For HTTP, Braid asks the server first: the size, whether ranges really work, whether there is a validator to resume against. Checksum verification is offered up front, not discovered afterwards.

The Add Transfer dialog with fields for the URL, save location, connections, interfaces and an expected checksum

Expiring links, refreshed once.

Pre-signed URLs from cloud storage and CDNs are re-resolved before they lapse, not after they fail. Sixteen connections hitting a dead link produce exactly one refresh. A signature bound to your address is resolved once per path, because each path leaves from a different address.

1 refresh16 connections

BitTorrent, in the same list.

Magnet links and .torrent files sit beside everything else. A torrent expands to its files with per-file progress, reports peers and seeds, and obeys the same limits and schedule as an HTTP transfer. Braid registers as the system handler, so clicking a magnet link in your browser opens it here.

It is a client, not an index: no search, no bundled tracker list, and there will not be. Seeding is publication. Joining a swarm announces your address to everyone in it, and binding a transfer to one interface is not a privacy control.

Ways to connect.

A transfer’s paths are fixed when it starts, so add a phone first, then download.

SetupWhat carries the fileNeeds the Android app
Computer aloneEvery interface you selectNo
Plain USB tetheringThe phone shows up as one more network cardNo
Phone on your networkYour connection plus the phone's mobile dataYes
Phone on a cableYour connection plus its mobile data plus its Wi-FiYes
Several phonesEvery network of every phone, each weighted by its speedYes

Your phone is a second internet connection.

Braid for Android lends your phone’s mobile data to Braid on your computer. It forwards bytes untouched and stores nothing. The phone decides which networks it offers and how much data it will spend, and nothing is shared until you switch it on.

Braid for Android with sharing on and mobile data and Wi-Fi switched on
Live activity chart of mobile data and Wi-Fi speeds on the phone

Install it.

Every package installs two programs: the braid desktop app and dl, the same engine on the command line.

PlatformFile
macOS 11 or laterBraid-0.1.0-macos.dmgOne universal build. Unsigned, so the first launch is right-click, then Open.
Windows 10 or laterbraid-0.1.0-x86_64.msibraid-0.1.0-aarch64.msix86_64, and ARM for Windows on ARM.
Debian, Ubuntubraid_0.1.0-1_amd64.debbraid_0.1.0-1_arm64.debsudo apt install ./braid_*.deb
Fedora, RHELbraid-0.1.0-1.x86_64.rpmbraid-0.1.0-1.aarch64.rpmsudo dnf install ./braid-*.rpm

Or drive it from a terminal.

Spread one download over two interfaces, cap the metered one, and check the result.

$ dl interfaces
$ dl add https://releases.ubuntu.com/26.04/ubuntu-26.04-desktop-amd64.iso \
    --interfaces en0,en5 \
    --limit-interface en5=5M \
    --verify sha256:9d3f...

Ctrl-C pauses rather than kills. Run the same command again and it resumes from the journal. Every flag is in the docs.

Questions people ask

Can I use Wi-Fi and mobile data at the same time to download faster?
Yes, with Braid. It splits one file into chunks and downloads them over every network you allow at once, such as your Wi-Fi or Ethernet and your phone's mobile data through the Braid for Android companion. The speeds add up only when the paths are really different routes to the internet; a phone on the same Wi-Fi reaches the internet through your router, so Braid detects that and marks it Not used rather than pretending.
How do I combine two internet connections for one download?
Connect both, for example Ethernet from one provider and Wi-Fi or a phone from another, then tick both under Settings, Network in Braid. Braid pins each connection to its interface using IP_BOUND_IF on macOS, SO_BINDTODEVICE on Linux or IP_UNICAST_IF on Windows, so traffic really leaves through each link, and the sidebar shows each interface's live speed.
Is Braid a free alternative to Speedify?
For downloading files, yes: Braid combines connections for HTTP downloads at no cost and without routing your traffic through anyone's servers. It is not a replacement for everything Speedify does. Braid speeds up file downloads only; it does not bond video calls, streaming, games or other apps, and it is not a VPN.
Is there a good IDM alternative for Mac and Linux?
Braid is a native download manager for macOS 11 and later (Apple silicon and Intel), Windows 10 and later, and Debian, Ubuntu, Fedora and RHEL. Like IDM it splits downloads into parallel connections, resumes after interruptions and supports schedules and bandwidth limits, and it adds what IDM cannot: spreading one file over several networks at once. It is free and open source under GPL-3.0.
How do I resume a large download that failed or crashed?
Braid keeps a small journal next to each unfinished file and writes chunk data to disk before the journal records it, so after a crash, a dropped connection or a reboot it resumes from the last chunk that was safely saved. Resuming needs a server that supports byte ranges and a file that has not changed; if the file changed, Braid starts clean instead of splicing two versions together.
Can downloading over several connections corrupt the file?
Not with Braid. Every chunk is hashed with BLAKE3 as it lands, and you can verify the finished file against a published SHA-256. Braid also refuses responses that would silently corrupt the file, such as a server that advertises ranges and then ignores them, a full response where a partial one was asked for, or a login page with a plausible size.
Why doesn't my download get faster with two connections?
Usually one of three reasons: both connections go through the same router or provider, so there is only one real path; the server caps each client or is itself the bottleneck; or the server does not support byte ranges, so the file can only come down as one stream. Braid's probe shows whether ranges work before you start.
Does Braid download torrents?
Yes. Paste a magnet link or open a .torrent file and it appears in the same list as HTTP downloads, under the same limits and schedule. A torrent currently uses one network interface at a time.
Is there a free download manager for Mac that uses Wi-Fi and phone data together?
Yes, Braid. It is a native, free and open-source download manager for macOS 11 and later, also on Windows and Linux, that splits one download across Wi-Fi, Ethernet and your phone's mobile data through the Braid for Android companion. It checks every chunk and resumes after interruptions.

What has not been verified yet.

Braid is built and used on a Mac. Stated here so nobody assumes otherwise.

  • Windows at runtime. CI builds it and runs the test suite on it, but nobody has installed the MSI and used it. Multi-interface binding there follows Microsoft’s documentation, not an experiment.
  • The Linux desktop. Tested by CI on x86_64 and ARM64. No one has used the app on a Linux desktop yet.
  • Real multi-NIC hardware. Per-interface binding is proven in CI with virtual interfaces, which is not the same as a machine with two real uplinks.
  • Torrents across paths. A torrent uses one interface at a time for now.