A powerful GitHub Actions workflow that downloads any file from the web directly into your repository. It automatically organizes, compresses, and splits large files, generates detailed readme files, and supports password-protected archives—all with zero local setup.
Base project: This workflow is heavily inspired by and builds upon the ideas from UDL-3. Many thanks to the original authors for their pioneering work!
- 🌐 Universal Downloading: Download any file from any direct URL. Supports single and batch downloads (multiple URLs separated by space).
- 🔄 Robust Download Engine: Combines
aria2(for high-speed, multi-connection transfers) andcurl(as a fallback) with intelligent retry logic to handle unstable connections. - 📦 Archive or Plain Storage: Choose between
normalmode (files saved as‑is) orzipmode (compressed into a single 7z archive). - 🔐 Optional Encryption: Protect your archives with a password. The password is embedded in the generated README so you never lose it.
- 📏 Configurable Splitting: Split large archives into smaller parts (10–90 MB) to bypass upload size limits or make sharing easier.
- ⚙️ Adaptive Compression: Choose a preset (
auto,best,great,good,fast,fastest); theautomode intelligently picks the highest compression level that can finish within the action’s time limit. - 📂 Incremental Git Push: Files are committed and pushed in small batches to avoid timeout errors, even with repositories weighing tens of gigabytes.
- 🕒 Timestamped Organization: Every run creates a uniquely named folder like
download_20260514_140437orarchive_20260514_140437. No more overwritten files. - 📋 Auto‑Generated READMEs: Each download folder/archive automatically gets a comprehensive
README.mdthat includes:- List of all files with their sizes
- Job execution start time
- Compression level and number of parts (if archived)
- Contents of the 7z archive (so you know exactly what’s inside without downloading)
- 🏗️ Stair‑Format Tree Listing: The main
downloads/README.mdshows a tree view of each folder’s contents (first 5 items) along with size, part count, and timestamp—perfect for quick browsing. - 📎 One‑Click Copy All Links: Every README includes a “Download Manager” block containing all part links, ready to be copied and pasted into tools like JDownloader.
- 🏋️ Heavy File Handling: Tested with files up to 28 GB, and capable of handling downloads above 50 GB thanks to smart batching and resume‑friendly transport.
- 🧠 Smart Archive Naming: In
zipmode, if only one file is downloaded, the archive takes its name (shortened if it’s too long) instead of a generic name—keeping things human‑readable.
.
├── .github
│ └── workflows
│ └── download.yml # Main workflow definition
├── downloads # (Created after first run) All downloaded content
├── README.md # This file
└── LICENSE # GNU GPL v3.0
The entire logic resides in a single workflow file. No external build steps or dependencies—just fork, configure, and run.
- Fork the repository to your own GitHub account.
- Go to the Actions tab in your fork.
- Select the ⬇️ 01- Download URL workflow on the left.
- Click “Run workflow” and fill in the inputs:
- URLs: The download link(s), separated by spaces.
- Mode:
normal(store files as‑is) orzip(compress into a 7z archive). - Part size: Split archive part size in MB (10–90, default 45).
- Password: (Optional) Password to encrypt the archive.
- Compression Preset: Choose a compression level (auto recommended).
- Click “Run workflow” and wait for the action to complete.
- After completion, your files will appear in the
downloads/folder, organised by timestamp and accompanied by a detailedREADME.md.
The entire behaviour is controlled by the YAML file located at .github/workflows/download.yml. You can edit it directly in your fork to change:
- Default split size or compression level.
- Maximum download time (
timeout-minutes). - Git push batching parameters.
- The naming conventions for folders and archives.
- The contents of the auto‑generated README files.
Just open the file in GitHub’s editor, make your changes, and commit. The next run will use your custom settings.
| Library / Tool | Description |
|---|---|
| GitHub Actions | Hosts and orchestrates the entire workflow. |
| aria2 | Lightweight multi‑connection download utility. |
| p7zip‑full | Command‑line version of 7‑Zip, providing LZMA2 compression and splitting. |
| curl | Transfers data from URLs, used as a fallback downloader. |
| bc | Arbitrary precision calculator for estimating compression times. |
| Python 3 | Used for URL‑encoding helper functions. |
This project started from the excellent work of the UDL-3 repository. The foundation, inspiration, and many core ideas came from there. Huge thanks to the original authors!
This project is open-source and licensed under the GNU General Public License v3.0 (GPL-3.0).
The GPL-3.0 is a strong copyleft license that ensures the software remains free. If you use, modify, or distribute this code, you must adhere to the following:
- Disclose Source: You must make the source code available when you distribute the software.
- License & Copyright Notice: You must include a copy of the license and the original author's copyright notice.
- Same License (Copyleft): Any modifications or derived works must also be licensed under GPL-3.0.
- State Changes: You must clearly indicate if you have modified the original files.
- No Warranty: This software is provided "as is" without any warranty of any kind.
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
For full details, please refer to the LICENSE file in this repository.
I'm a passionate professional specializing in Graphic Design, Web Development, and cross-platform app development with Dart & Flutter. I thrive on turning innovative ideas into reality, whether it's a stunning visual, a responsive website, or a polished desktop app like this one. I also develop immersive games using Unreal Engine.
- Website: rovoid.ir
- GitHub: IMROVOID
- LinkedIn: Roham Andarzgou
If you find this application useful, please consider a donation. As I am based in Iran, cryptocurrency is the only way I can receive support. Thank you!
| Cryptocurrency | Address |
|---|---|
| Bitcoin (BTC) | bc1qd35yqx3xt28dy6fd87xzd62cj7ch35p68ep3p8 |
| Ethereum (ETH) | 0xA39Dfd80309e881cF1464dDb00cF0a17bF0322e3 |
| USDT (TRC20) | THMe6FdXkA2Pw45yKaXBHRnkX3fjyKCzfy |
| Solana (SOL) | 9QZHMTN4Pu6BCxiN2yABEcR3P4sXtBjkog9GXNxWbav1 |
| TON | UQCp0OawnofpZTNZk-69wlqIx_wQpzKBgDpxY2JK5iynh3mC |