multiurl
A package to download several URL as one, as well as supporting multi-part URLs
What it is and what it does
multiurl is a download utility that combines files from one or more URLs into a single local file. It supports downloading entire files or specific byte ranges (parts) from URLs, and can mix protocols—for example, fetching part of a file from HTTP and another part from FTP into the same output file. The package wraps requests for HTTP/HTTPS and handles FTP via its dependencies, using tqdm for progress reporting and python-dateutil and pytz for any time-related operations.
The typical use case is assembling a file from multiple sources or downloading only the portions of a remote file you need, reducing bandwidth and time. It's straightforward to use: pass a URL or list of URLs to the download function, optionally specify byte ranges, and name your target file. The package is in Alpha status and actively maintained, with support for Python 3.9 through 3.13.
Use it for:
- Download a large file in parallel chunks from multiple mirror URLs to speed up transfer.
- Fetch specific byte ranges from a remote file without downloading the entire file.
- Combine partial downloads from different protocols (HTTP and FTP) into one local file.
- Resume or reconstruct a file by downloading missing byte ranges from backup URLs.
- Assemble a composite file from multiple remote sources in a single operation.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Downloads files from one or multiple URLs into a single target file, with support for partial downloads specified by byte offsets and lengths.
Yes, if you need to download files from multiple URLs or byte ranges into a single file. Low install friction, permissive license, active maintenance, and no known vulnerabilities make it a straightforward choice. The Alpha status means the API may change, but the core functionality is stable and the package sees regular use (top 5000 on PyPI).
Install
multiurl on PyPI
pip
pip install multiurluv
uv add multiurlpoetry
poetry add multiurlInstalling multiurl
Before you install
Low install friction with a pure Python wheel and four common runtime dependencies (requests, tqdm, pytz, python-dateutil). Active maintenance as of 2026-06-18 with recent release history.
License in practice
Apache License 2.0 is permissive; you can use this package in commercial and proprietary projects with minimal restrictions, provided you include a copy of the license.
Quickstart
pip install multiurl
from multiurl import download
download(url="http://example.com/test.data", target="data.file")
# Or from multiple URLs:
download(url=["http://example.com/test1.data", "ftp://example.com/test2.data"], target="data.file")
Verify before relying
- Whether byte-range requests are automatically retried on failure or partial completion.
- Performance characteristics when downloading from many URLs or very large files.
- Whether progress reporting (tqdm) is always shown or configurable.
Package facts
| License | Apache License Version 2.0 (permissive) |
| Python support | not specified |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 4 — requests, tqdm, pytz, python-dateutil |
| Maintenance | actively maintained — 57 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 852,365/month — #4,899 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: multiurl-0.3.9-py3-none-any.whl
Keywords: tool
Tags
More WWW/HTTP packages
urllib3 is an HTTP client library that provides…
permissive · top 100 on PyPI
requestsRequests is a Python HTTP library that…
permissive · top 100 on PyPI
h11h11 is a pure-Python HTTP/1.1 protocol…
permissive · top 100 on PyPI
httpxHTTPX is a fully featured HTTP client library…
permissive · top 100 on PyPI
httpcoreA minimal low-level HTTP client library that…
permissive · top 100 on PyPI
aiohttpaiohttp is an async HTTP client and server…
permissive · top 100 on PyPI
parfiveParfive downloads multiple files in parallel…
unclear · top 15,000 on PyPI
rangehttpserverA drop-in replacement for Python's…
permissive · top 5,000 on PyPI
seekablehttpfileProvides a file-like object that fetches remote…
permissive · top 15,000 on PyPI
pyuriPyURI parses, constructs, and manipulates URIs…
permissive · top 15,000 on PyPI
url-normalizeStandardizes URLs to a canonical form by…
permissive · top 1,000 on PyPI
abx-dlA CLI tool that auto-detects and downloads…
permissive · top 15,000 on PyPI
tldextractAccurately extracts subdomain, domain, and…
permissive · top 1,000 on PyPI
smpplibSMPP protocol client library for sending and…
copyleft · top 15,000 on PyPI
pycurlPycURL is a Python wrapper around libcurl that…
unclear · top 5,000 on PyPI
ftputilftputil provides a high-level FTP client…
permissive · top 15,000 on PyPI