parfive
A HTTP and FTP parallel file downloader.
What it is and what it does
Parfive is a file downloader that wraps asyncio to download multiple files concurrently while presenting a simple synchronous API. You create a Downloader object, enqueue one or more file URLs with target paths, and call download() to fetch them all in parallel. Each file can also be downloaded in chunks. The package depends on aiohttp for HTTP requests and tqdm for progress bars, and returns a Results object that tracks both successful downloads and any failures with their server responses.
The package is useful when you need to fetch many files efficiently without writing asyncio code yourself. It offers both a Python API and a command-line interface for quick downloads. Error handling is built in—failed downloads are captured in the Results object rather than raising exceptions, so you can retry or report them to users.
Use it for:
- Download multiple data files from a remote server in a single batch operation with progress tracking.
- Fetch a collection of assets or resources concurrently without blocking on each individual request.
- Build a data pipeline that retrieves files from HTTP or FTP sources as part of a larger workflow.
- Provide end users with a CLI tool to download multiple files at once with configurable concurrency limits.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Parfive downloads multiple files in parallel using asyncio, with a synchronous API that handles concurrent downloads and per-file chunking.
Yes, if you need straightforward parallel file downloads. The low install friction, stable API, and lack of known vulnerabilities make it a safe choice. The aging maintenance status (199 days since release) is a minor concern but not a blocker for stable use; consider it if you need active upstream support or if your use case requires recent dependency updates.
Install
parfive on PyPI
pip
pip install parfiveuv
uv add parfivepoetry
poetry add parfiveInstalling parfive
Before you install
Low friction install with only two runtime dependencies (tqdm and aiohttp). Maintenance status is aging—last release was 199 days ago—but the package is marked Production/Stable and supports current Python versions through 3.13.
License in practice
MIT licensed under a permissive copyright (2017-2020 Stuart Mumford). No restrictions on commercial or private use; you may modify and distribute freely provided you include the license notice.
Quickstart
from parfive import Downloader
dl = Downloader()
dl.enqueue_file("http://example.com/file.zip", path="./")
files = dl.download()
Requires Python 3.10 or above.
Verify before relying
- Whether the aging maintenance status (199 days since last release) affects reliability for new use cases or dependency updates.
- Performance characteristics when downloading very large files or managing hundreds of concurrent connections.
Package facts
| License | Copyright (c) 2017-2020 Stuart Mumford Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in… (full text in the JSON record) (unclear) |
| Python support | supports the current Python release (>=3.10) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 2 — tqdm, aiohttp |
| Maintenance | aging — 199 days since the last release |
| First released | |
| Downloads | 119,971/month — #12,048 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: parfive-2.3.1-py3-none-any.whl
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
DownloadKitDownloadKit is a multithreaded file downloader…
permissive · top 15,000 on PyPI
gdownDownloads files and folders from Google Drive,…
permissive · top 5,000 on PyPI
multiurlDownloads files from one or multiple URLs into…
permissive · top 5,000 on PyPI
poochPooch downloads files from HTTP, FTP, and data…
permissive · top 5,000 on PyPI
DrissionGetDrissionGet is a multithreaded file downloader…
permissive · top 15,000 on PyPI
googledrivedownloaderDownloads shared files from Google Drive by…
unclear · top 15,000 on PyPI
aioftpaioftp provides an async FTP client and server…
permissive · top 15,000 on PyPI
grequestsGRequests wraps the requests library with…
permissive · top 15,000 on PyPI
pySmartDLpySmartDL is a download manager that…
permissive · top 15,000 on PyPI
pyftpdlibBuilds asynchronous FTP servers in Python with…
unclear · top 15,000 on PyPI