Downloading Image Galleries Without the Tedium
You've found a gallery with hundreds of images you want to keep, and now you're facing the prospect of clicking save on each one. Or worse, you're trying to script it yourself and discovering that every site structures its pages a little differently. gallery-dl is a command-line tool that handles that whole mess for you, pulling image galleries and collections from a long list of supported hosting sites.
What It Does
gallery-dl is a cross-platform command-line program for downloading image galleries and collections from several image hosting sites. You point it at a URL, and it fetches the images. That's the core idea, but the README makes clear there's a lot of configuration underneath: extensive command-line options, configuration files, and what it calls "powerful file-naming capabilities" so you can control exactly how downloaded files are named and organized on disk.
It's written in Python (3.8 or newer) and depends on Requests. Optional dependencies unlock extra functionality depending on what you need: yt-dlp or youtube-dl for HLS/DASH video downloads, FFmpeg for Pixiv Ugoira conversion, PySocks for SOCKS proxy support, PyYAML and toml for configuration file formats, and a handful of others for things like compression support, PostgreSQL archive support, and Jinja templates. The supported sites list lives in its own document, so you can check whether your particular site is covered before you commit.
Why It's Cool
-
The file-naming control is the real draw. Downloading images is easy; organizing them the way you want is the part that usually falls apart. gallery-dl's formatting documentation is a whole separate thing, which tells you the maintainers consider this a first-class feature rather than an afterthought.
-
It meets you wherever you are. The installation section is almost comically thorough — pip, prebuilt standalone executables for Windows and Linux, Snap, Chocolatey, Scoop, Homebrew, MacPorts, and Docker. If you have a preferred way of installing tools, there's a decent chance it's covered.
-
Optional dependencies are genuinely optional. The tool runs with just Python and Requests. Everything else — video support, proxy support, extra config formats — is opt-in. That's a sensible design for a tool that needs to work on minimal systems.
-
Nightly builds exist. If you need a fix from the latest commit, there are executables built from the latest commit at a separate builds repository. Not every project bothers with that.
-
One thing worth knowing upfront: active development has moved to Codeberg, per an announcement linked in the README. The GitHub repository still exists, but if you're filing issues or looking for the latest code, you'll want to head to the Codeberg page.
How to Try It
The simplest path is pip:
python -m pip install -U gallery-dl
Windows users should use py instead of python. If you'd rather not deal with Python at all, there are prebuilt executables for Windows and Linux, or you can install via Snap, Chocolatey, Scoop, Homebrew, or MacPorts depending on your platform. Docker users can pull the image from Docker Hub:
docker pull mikf123/gallery-dl
docker tag mikf123/gallery-dl gallery-dl
Once installed, check the command-line options and configuration docs (both linked from the README) before you start — the file-naming capabilities in particular are worth reading up on before your first big download, since it's easier to set naming rules up front than to reorganize afterward.
You can find the repository at github.com/mikf/gallery-dl, and the active development home at codeberg.org/mikf/gallery-dl.
Final Thoughts
gallery-dl is a focused utility that does one job and gives you a lot of control over how it does it. If you regularly archive image galleries and want consistent naming and organization without writing your own scraper per site, this is the kind of tool that saves you real time. It's not flashy, and it won't hold your hand — you'll want to read the docs — but the breadth of installation options and the depth of configuration suggest it's been built for people who actually use it daily. Check the supported sites list first; if your site is there, you're in good shape.
Follow @githubprojects for more developer tools and open source projects.