Download and update mods from Modrinth collections with automatic dependency resolution and parallel downloads.
A fast, user-friendly Python script that downloads mods from Modrinth collections with intelligent dependency handling, parallel downloads, and an intuitive interactive interface.
- 🚀 Parallel Downloads - Download multiple mods simultaneously for faster processing
- 🔗 Automatic Dependencies - Automatically resolves and downloads required dependencies
- 💬 Interactive Mode - User-friendly prompts with sensible defaults
- 🔄 Smart Updates - Updates existing mods by default (configurable)
- 📊 Detailed Statistics - Comprehensive summary with separate tracking for mods and dependencies
Also check out my new project mctui - the TUI launcher for Minecraft. Minimal, fast launcher with mod management and other batteries built in.
The easiest way to use the script - just run it and follow the prompts:
# Using curl (replace python with python3 for mac)
curl -sL https://raw.githubusercontent.com/aayushdutt/modrinth-collection-downloader/master/main.py | python -
# Or using wget (replace python with python3 for mac)
wget -qO- https://raw.githubusercontent.com/aayushdutt/modrinth-collection-downloader/master/main.py | python -You'll be prompted for:
- Collection ID or URL
- Minecraft version
- Loader (defaults to fabric)
- Update preference (defaults to Yes)
Example session:
$ curl -sL https://raw.githubusercontent.com/aayushdutt/modrinth-collection-downloader/master/main.py | python -
Enter collection ID or URL: https://modrinth.com/collection/YyGKtxlz
Enter Minecraft version (e.g., "26.2"): 26.2
Enter loader (e.g., "fabric", "forge", "quilt") [default: fabric]:
Update existing mods? [Y/n] (default: Y):
Found 4 mod(s) in collection
Processing 1 required dependency(ies) for Litematica...
[DEPENDENCY] DOWNLOADING: MaLiLib - malilib-....jar...
DOWNLOADING: Fresh Animations - FreshAnimations_....zip...
...Download or copy main.py and run it:
# Download the script (or copy from repository)
curl -sL https://raw.githubusercontent.com/aayushdutt/modrinth-collection-downloader/master/main.py -o main.py
# Run interactively
python main.py
# Or with arguments (fully non-interactive)
python main.py -c YyGKtxlz -v 26.2 -l fabric -uoptions:
-h, --help show this help message and exit
-c, --collection COLLECTION
ID or URL of the collection to download
(e.g., YyGKtxlz or https://modrinth.com/collection/YyGKtxlz)
-v, --version VERSION
Minecraft version (e.g., "26.2")
-l, --loader LOADER Loader to use (e.g., "fabric", "forge", "quilt"). Default: "fabric"
-d, --directory DIRECTORY
Directory to download mods to. Default: "./mods"
-u, --update Download and update existing mods. Default: true
--no-update Do not update existing mods
Note: All arguments except -d are optional. Missing values are prompted; loader defaults to fabric if you press Enter. Pass -c, -v, -l, and -u/--no-update for fully non-interactive runs.
- Dependencies: Automatically downloads required dependencies recursively. Marked with
[DEPENDENCY]in logs. - Parallel Downloads: Downloads up to 5 mods concurrently.
- Updates: Enabled by default. Skips mods already at latest version by comparing filenames.
- File Format: Saves as
filename.modid.ext(e.g.,dynamic-fps-....LQ3K71Q1.jar)
python3 -m unittest test_main -v # unit (offline)
python3 -m unittest test_e2e -v # e2e (hits Modrinth)- Python 3.6+
- No external dependencies (uses standard library only)
- "command not found: python": Use
python3instead, or install Python. - "No version found": Mod doesn't support the specified version/loader. Check Modrinth for supported versions.
- "Collection not found": Verify the collection ID/URL is correct and public.
- Dependencies not downloading: Only "required" dependencies are downloaded. Optional ones are skipped.