On this page
  1. What SwiftDL is
  2. How SwiftDL multi-connection downloads work
  3. How to install SwiftDL on Windows, macOS and Linux
  4. Adding the SwiftDL browser extension
  5. How to use SwiftDL: everyday downloads
  6. Video downloads: YouTube, HLS and DASH
  7. Torrents, FTP, Metalink and debrid services
  8. Queue, speed limits and automation
  9. Network options: proxies, VPN binding and clipboard watcher
  10. aria2-compatible API and web remote
  11. The swiftdl command-line downloader
  12. SwiftDL settings
  13. Privacy and security
  14. Limitations
  15. Troubleshooting common SwiftDL problems
  16. How SwiftDL compares with other downloaders in the directory
  17. Summary

SwiftDL is a free, open-source download manager for Windows, macOS and Linux. It takes over downloads from the browser, splits each file across several connections at once, and saves its progress every second so an interrupted download can continue where it stopped. The code is on GitHub under the MIT License, and the application is written in Rust with Tauri 2.

The project starts from one observation stated in its README: browsers download every file over a single connection, and many servers cap how fast each connection can go. SwiftDL opens up to 32 connections per file instead and keeps them busy until the last byte. Around that engine it adds a browser extension, a download window for each file, video downloads through yt-dlp, torrents, FTP, Metalink, a queue with automation, and an optional aria2-compatible API. This guide explains how it works, how to install it, and how to use each part, based on the project's README, changelog, release notes and official site.

What SwiftDL is

SwiftDL is a young project. The changelog dates version 0.1.0 to October 30, 2026, and it has moved quickly since: a download window per file and the video button in 0.2.0, torrents in 0.3.0, a Firefox add-on in 0.3.1, HLS and DASH streams in 0.3.2 and 0.3.3, and a large set of link types, queue automation and network options in 0.4.0.

The repository is split into a few parts, as listed in the README:

Path Role
crates/engine The download engine: probing, segmentation, rebalancing, resume and speed limiting
crates/cli swiftdl, a command-line downloader built on the same engine
app/src-tauri The desktop app: download manager, windows, tray and browser integration
app/ui The interface, written in TypeScript
extension The browser extension (Manifest V3 for Chromium browsers, with a Firefox build)
tools A throttled test server and a native-messaging test client

The app also acts as the native messaging host for the extension. The security policy states that the extension talks to the app only through native messaging, and that the app accepts messages only from the extension IDs listed in its source code.

How SwiftDL multi-connection downloads work

A normal browser download sends one HTTP request and receives the whole file over one connection. HTTP also allows a client to ask for a specific byte range of a file, a feature known as range requests, defined today in RFC 9110, which replaced the older RFC 7233. A segmented download manager uses range requests to fetch several parts of the same file at the same time. If a server limits the speed of each connection, several connections together can move more data than one.

The README describes SwiftDL's process in five steps:

  1. Check. SwiftDL asks the server for the first byte of the file. The answer reveals the file size and whether the server allows the file to be downloaded in parts.
  2. Reserve. The full-size file is created on disk, so each connection can write to its own position.
  3. Split. The file is divided into parts, one per connection, and each part is fetched with an HTTP range request.
  4. Rebalance. When a connection finishes early, it takes over half of the largest remaining part.
  5. Save progress. The list of missing ranges is saved every second, which is what allows resume after a crash.

Because each connection writes straight into the reserved file, there is no joining step at the end. Because of rebalancing, which the project calls dynamic segmentation, no connection sits idle while one slow part finishes alone. The engine also retries with backoff and applies a global speed limiter.

The project's benchmark

The README includes a benchmark on a server that limits each connection to 2 MB/s. According to the project, one connection reached 2.0 MiB/s and took 32 seconds, eight connections reached 15.9 MiB/s in 4 seconds, and 16 connections reached 25.1 MiB/s in 2.6 seconds. The throttled server used for the test is published as tools/throttle_server.py so the measurement can be repeated. The README's demonstration shows Ubuntu's 5.9 GB installer: the browser on one connection would take 56 minutes, while SwiftDL on eight connections took 3 minutes 31 seconds.

The FAQ adds the limit of this approach. The speed gain applies when the server limits each connection. When a single connection already fills the user's internet line, more connections cannot add bandwidth, although resume and the queue still apply.

Resume after a crash or dropped connection

Since the missing ranges are written to disk every second, SwiftDL can continue a download after a pause, a closed laptop, a lost Wi-Fi connection or a crash. The FAQ states that at most about a second of data is downloaded again, provided the server supports resuming. SwiftDL checks this before the download starts and reports when a server cannot resume.

How to install SwiftDL on Windows, macOS and Linux

The README names github.com/harshsinghsv/swiftdl as the official source and asks users to download installers only from its Releases page. The official site's download page links to the same files and states that every file is built from the public source code by GitHub Actions.

Platform Files on the release page Notes from the docs
Windows 10 and 11 SwiftDL_x.y.z_x64-setup.exe, x64 MSI; experimental ARM64 setup and MSI since 0.4.0 Installs per user, no admin rights; adds Microsoft WebView2 if missing
macOS SwiftDL_x.y.z_universal.dmg, SwiftDL_universal.app.tar.gz One build for Apple silicon and Intel; macOS 10.13 or later
Linux .AppImage (amd64), .deb, .rpm (x86_64) ffmpeg comes from the system package manager

Windows

  1. Download SwiftDL_x.y.z_x64-setup.exe from the latest release.
  2. Run the installer. It installs for the current user only and adds Microsoft WebView2 if it is missing.
  3. If SmartScreen shows "Windows protected your PC", choose More info, then Run anyway. The download page explains that the installers are not code-signed yet.

To uninstall, use Settings > Apps > Installed apps > SwiftDL. The uninstaller also removes SwiftDL's browser registrations.

macOS

  1. Download SwiftDL_x.y.z_universal.dmg.
  2. Open the .dmg and drag SwiftDL into Applications.
  3. If macOS says it cannot verify the developer, right-click SwiftDL in Applications, choose Open, then Open again.
  4. For video sites that need merging, install ffmpeg with Homebrew, as the FAQ describes.

To uninstall, move SwiftDL from Applications to the Bin.

Linux

The download page lists these commands for the three package types:

chmod +x SwiftDL_*.AppImage
./SwiftDL_*.AppImage
sudo apt install ./SwiftDL_*.deb
sudo dnf install ./SwiftDL-*.rpm

As on macOS, ffmpeg is installed through the system package manager when video sites need it.

Updates

Since 0.3.2, SwiftDL checks GitHub for a new release a few seconds after it starts and twice a day. A banner shows the new version with "What's new" and an install button. On Windows it downloads the installer, closes SwiftDL, updates and reopens it; on macOS it downloads the .dmg; on Linux it opens the release page.

Adding the SwiftDL browser extension

The extension is what lets SwiftDL catch downloads started in the browser. According to the README it:

  • sends browser downloads to SwiftDL with the site's cookies and referrer, so downloads behind a sign-in keep working;
  • adds Download with SwiftDL to the right-click menu on links and media;
  • shows a Download video button over video players;
  • leaves a single download to the browser when the user holds Alt while clicking;
  • can be turned off for one site from its popup.

Firefox. The add-on, named SwiftDL Integration, is published on Firefox Add-ons and requires Firefox 140 or later. It can also be opened from SwiftDL with Add to Firefox under Settings > Browser.

Chrome, Edge, Brave and Vivaldi. There is no Chrome Web Store listing yet, so the extension ships with the app and is loaded manually:

  1. In SwiftDL, click Add the extension, or open Settings > Browser.
  2. Open chrome://extensions (or edge://extensions).
  3. Turn on Developer mode.
  4. Click Load unpacked and choose SwiftDL's extension folder. The Open extension folder button leads there; on Windows it is %LOCALAPPDATA%\SwiftDL\extension.

The README asks users to load that folder rather than a copy, because it stays in place while SwiftDL is installed and is refreshed when SwiftDL updates. Without the app, swiftdl-extension.zip on the release page has the same files. The 0.3.2 notes add that on macOS and Linux SwiftDL registers its native messaging host in any Chromium-style profile folder, so forks such as Helium, Thorium, ungoogled-chromium and Opera can connect.

Since 0.4.0 the extension first asks the site before taking a download over. If the site refuses, for example with a 403 error or a sign-in page, the browser keeps the download.

How to use SwiftDL: everyday downloads

When the browser hands over a file, SwiftDL opens a small New download window rather than the main window. It shows the file's real name, size, type and whether the server can resume it, along with a category and save location. From there:

  1. Press Start to begin. The same window turns into a progress view showing each connection's position and speed.
  2. When the file is done, a Download complete summary offers Open and Show in folder.
  3. Alternatively, choose Download later to put the file in the queue.

Links can also be pasted directly into New download in the main window. Finished files are sorted into Video, Music, Programs, Compressed and Documents folders. The main window groups downloads by status with live speed and a detail panel, and a command palette opens with Ctrl+K to find a download or run any action. Closing the main window leaves SwiftDL in the system tray, where downloads and browser integration keep running.

Version 0.4.0 added two ways to add many files at once. Several links can be pasted together, including numbered patterns such as file[01-50].zip. And New download > Find files on a page lists the files a web page links to, with category filters, and downloads the selected ones.

Video downloads: YouTube, HLS and DASH

On video sites, the extension shows a Download video button over the player. The FAQ says this works on YouTube, Vimeo, X, Reddit and other sites, with qualities from 4K down to audio only. A video link can also be pasted into New download.

Two mechanisms sit behind the button:

  • Direct stream downloads. Since 0.3.2 and 0.3.3, SwiftDL reads HLS (.m3u8) and DASH (.mpd) streams that a page is playing, fetches the pieces many at a time with the browser's cookies, and joins them into one MP4. This handles AES-128 encrypted streams, separate audio tracks, and pause and resume. On YouTube, the 0.3.3 notes state that the video is looked up while the user picks a quality and then downloaded over 16 connections.
  • yt-dlp as fallback. For sites that do not serve a plain file, SwiftDL uses yt-dlp, plus ffmpeg to join video and audio. Both are downloaded the first time they are needed (on macOS and Linux ffmpeg comes from the system), and yt-dlp is kept up to date.

The FAQ states that DRM-protected video, such as Netflix, will never be supported. It also asks users to download only content they have the right to. Whether a download is permitted depends on the content's copyright and the site's terms, which remain the user's responsibility.

Torrents, FTP, Metalink and debrid services

SwiftDL handles several link types beyond plain HTTP(S):

Link type Since What SwiftDL does
Magnet links and .torrent files 0.3.0 Downloads with its own BitTorrent engine (librqbit); lets the user pick files; shows peers and seeds
ftp:// 0.4.0 Downloads with resume
Metalink (.meta4, .metalink) 0.4.0 Downloads one file from several mirrors at once, checks each mirror's size, and switches to another mirror if one fails
File-hosting links 0.4.0 Resolves them through Real-Debrid, AllDebrid or Premiumize with the user's own API token
Google Drive share links 0.4.0 fix Downloads the file instead of the warning page

SwiftDL registers itself as the handler for magnet links and .torrent files on Windows, macOS and Linux, and the extension forwards them to the app. After a torrent finishes, Settings > General > After a torrent finishes controls seeding: stop sharing, share until a ratio of 1 or 2, or keep sharing.

Two options from 0.4.0 apply to finished files: a SHA-256 field that checks the downloaded file against a known hash, and optional unpacking of .zip, .tar.gz, .tar and .7z archives.

Queue, speed limits and automation

Settings control how many downloads run at the same time and a cap on total bandwidth. Since 0.4.0 the queue has more controls:

  • Waiting downloads show their place, for example "Queued #2".
  • Download next moves a download to the front.
  • Clear removes finished downloads from the list.
  • The tray menu has Ignore speed limit.
  • SwiftDL can quit, sleep or shut down the computer once when all downloads finish.
  • The queue can be held until a chosen time.

Network options: proxies, VPN binding and clipboard watcher

Version 0.4.0 changed downloads to follow the system's proxy settings, which the changelog says they had previously ignored, and added SOCKS5 proxy support. A download can also be sent out from a chosen network address, so that if a VPN connection drops, downloads stop instead of leaving through another interface. An optional clipboard watcher picks up copied links.

aria2-compatible API and web remote

Also new in 0.4.0, and off by default, SwiftDL can expose a local API compatible with aria2, the command-line download utility whose JSON-RPC interface is used by front ends such as AriaNg. This lets AriaNg or custom scripts add and control downloads in SwiftDL. A built-in web page, the web remote, shows and controls downloads from a browser or a phone.

The release notes describe three protections: every call needs a secret, the API is local-only unless the user allows the network, and it refuses requests addressed to non-local hosts.

The swiftdl command-line downloader

The swiftdl CLI in crates/cli uses the same engine as the app. It is not among the release installers; it is built from source with Cargo as the swiftdl-cli package. Its options, as defined in the CLI source, are:

Option Meaning Default
URL The file to download Required
-o, --output Output file or directory Server's file name in the current directory
-c, --connections Number of parallel connections (1 to 64) 8
-H, --header Extra request header such as a cookie; repeatable None
-l, --limit Speed limit in KiB/s 0 (unlimited)
--restart Ignore saved progress and start over Off

A typical call looks like swiftdl -c 16 -o ~/Downloads https://example.com/file.iso.

SwiftDL settings

The changelog documents these settings areas:

  • Settings > General > Theme System, Light or Dark, with a live preview.
  • Settings > General > After a torrent finishes Seeding behaviour.
  • Settings > Browser Which browsers were found, whether the extension has connected, an Add to button per browser, and an explanation of how to stop the browser's own Save As prompt from showing alongside SwiftDL's.
  • Settings > About > Open log Opens swiftdl.log from the data folder, for bug reports.
  • Interface size 90 to 150 percent.
  • Extension options A per-site switch, Alt+click bypass and a small-file threshold.

Privacy and security

According to the README and the official site, SwiftDL has no accounts, analytics or telemetry and only connects to the servers it downloads from. The changelog also documents an update check that contacts GitHub at start-up and twice a day, and the download of yt-dlp and ffmpeg on first use for video sites.

Cookies passed from the browser are stored with a download so that it can resume, and cleared when it completes. Debrid services receive the user's own API token. Security problems are reported through GitHub's private security advisory form, as the security policy describes, and fixes go into the latest release only.

Limitations

The project's own documentation lists or implies these limits:

Limitation What the docs say
Speed gain Only when the server caps each connection; when one connection fills the line, more connections add no bandwidth
Code signing Installers are not code-signed yet, so Windows and macOS show a warning on first run
Chromium extension Loaded unpacked in developer mode until a Chrome Web Store listing exists
DRM DRM-protected video such as Netflix will never be supported
ffmpeg Must be installed manually on macOS and Linux for merged video
Windows ARM64 The build is marked experimental
Resume Depends on server support for range requests
Maturity Version 0.x, first released October 30, 2026

Troubleshooting common SwiftDL problems

The changelog records several problems and their fixes or workarounds:

  • "Couldn't reach SwiftDL" from the video button. After the extension is updated, pages that were already open must be reloaded. The browser starts SwiftDL for each download, and since 0.3.2 a failed start is retried.
  • YouTube says a format is not available. Yt-dlp needs a JavaScript runtime for YouTube. SwiftDL tells it to use Deno, Node, Bun or QuickJS when one is installed, and shows a clear message when none is.
  • Two Save As prompts. Settings > Browser explains how to stop the browser's own prompt.
  • A download fails. A failed download has a Download in browser button. For an expired link, right-click the failed or paused download and choose Replace link from clipboard, which keeps the parts already downloaded.
  • A link returns a web page instead of a file. Since 0.4.0 this fails with a clear message.
  • Bilibili fails with [Errno 22] on some Windows PCs. Release 0.4.0 contains a possible fix that the maintainer states was not reproduced and is not confirmed.
  • Anything else. Attach swiftdl.log from Settings > About > Open log to a bug report on GitHub.

How SwiftDL compares with other downloaders in the directory

The iThub directory lists several tools that overlap with parts of SwiftDL's scope. The comparison below describes scope only, using each tool's directory summary.

Tool Scope
SwiftDL Desktop download manager: segmented HTTP(S) and FTP downloads, browser takeover, video via yt-dlp and direct HLS/DASH, torrents, Metalink, debrid, aria2-compatible API
OmniGet Desktop downloader for courses, social media, torrents and many sites via yt-dlp, with local media tools
cobalt Web-based media downloader for freely accessible public content
ReClip Self-hosted web interface for video and audio from sites supported by yt-dlp
qBittorrent Dedicated BitTorrent client built on libtorrent

SwiftDL combines segmented, resumable downloads of ordinary files with video and torrent support in one desktop app. cobalt and ReClip focus on web media and run as web interfaces, while qBittorrent covers BitTorrent only.

Summary

SwiftDL is an MIT-licensed Rust and Tauri download manager that splits files across up to 32 connections, rebalances parts as connections finish, and saves progress every second. Its extension hands browser downloads over with cookies, and the app adds video, torrents, FTP, Metalink, debrid links, automation and an optional aria2-compatible API. Installers for Windows, macOS and Linux are on the GitHub releases page, and the SwiftDL listing keeps a short profile alongside related tools.

Frequently asked questions

Is SwiftDL free and open source?

Yes. SwiftDL is released under the MIT License and its source code is on GitHub at github.com/harshsinghsv/swiftdl. There is no paid tier mentioned in the project documentation. Installers for Windows, macOS and Linux are published on the GitHub releases page, which the README names as the only official download source, and the official site links to the same files built by GitHub Actions.

Does SwiftDL make every download faster?

No. According to the project FAQ, SwiftDL is faster by roughly the number of connections when the server limits the speed of each connection. When a single connection already fills the internet line, more connections cannot add bandwidth. In that case resume and the queue still apply. The README benchmark on a server capped at 2 MB/s per connection shows 2.0 MiB/s for one connection and 15.9 MiB/s for eight.

Can SwiftDL download YouTube videos?

Yes. The browser extension shows a Download video button over players on YouTube, Vimeo, X, Reddit and other sites, with qualities from 4K down to audio only. SwiftDL downloads HLS and DASH streams directly and uses yt-dlp with ffmpeg as a fallback. DRM-protected video such as Netflix is stated as never to be supported, and the FAQ asks users to download only content they have the right to.

How do I install the SwiftDL extension in Chrome?

Until a Chrome Web Store listing exists, the extension ships with the app. In SwiftDL, click Add the extension or open Settings > Browser. Then open chrome://extensions, turn on Developer mode, click Load unpacked and choose SwiftDL's extension folder, which on Windows is %LOCALAPPDATA%\SwiftDL\extension. The same steps apply to Edge, Brave and Vivaldi. Firefox users install SwiftDL Integration from Firefox Add-ons.

Does SwiftDL collect any data?

According to the README and official site, SwiftDL has no accounts, analytics or telemetry and only connects to the servers it downloads from. It does check GitHub for new releases at start-up and twice a day, and downloads yt-dlp and ffmpeg on first use for video sites. Cookies passed from the browser are stored with a download so it can resume, and cleared when the download completes.

Why does Windows or macOS warn me when installing SwiftDL?

The official download page explains that SwiftDL's installers are not code-signed yet, because signing certificates cost money every year. On Windows, if SmartScreen says Windows protected your PC, choose More info and then Run anyway. On macOS, right-click SwiftDL in Applications and choose Open, then Open again. The project asks users to download SwiftDL only from its site or GitHub Releases.

Facts link to their official sources. Product details can change after publication: report an error or read the editorial methodology.