v1.4.29 · MIT licensed

One downloader.
19 sources.

Paste a link from any supported site. MangaDL works out which source it is, pulls the chapters, and packs them into a CBZ, PDF or EPUB. The same engine drives a desktop app, a terminal menu, a full-screen TUI and a CLI you can script.

19
Sources
5
Interfaces
1068
Tests passing
4
Output formats
mangadl
# search every source at once
$ mangadl search "solo leveling" --type manhwa

  #  Source        Title
  1  MangaDex      Solo Leveling
  2  Weeb Central  Solo Leveling: Ragnarok

# grab result 1, no URL needed
$ mangadl search "solo leveling" --download 1
   179 chapters  Solo Leveling - Chapters 001-179.cbz
Why it exists

Built around the awkward parts

Downloading images is the easy bit. Nearly all of the work is in what the sites do to stop you — and in not losing an hour of progress when one of them misbehaves.

link

Paste any link

The source is detected from the URL, including sites with tracking parameters — which used to silently return zero chapters. Aggregate installs resolve too, so madara.toonily is just Toonily.

extension

Hostile page layouts

Base64 payloads, decoy search endpoints, obfuscated readers and randomly named JS variables — each handled per source, each verified against the live site rather than guessed at.

image

Hotlink-protected art

Covers that 403 without the right referrer are fetched server-side and inlined, so they show up instead of a blank tile.

bolt

Several at once

Queue multiple series and download them in parallel. Every progress event is tagged with its job, so two books never mix their chapters.

restart_alt

Survives interruption

Chapter-level checkpoints, atomic writes and a per-job journal. A crash costs you the current chapter, not the run.

tune

Filters that work

Type, status, genre and chapter-count filters — with unknown values kept rather than silently erasing whole sources from the results.

Five ways in

Pick the interface that suits the moment

One engine underneath, one settings file. Change something in the app and the CLI sees it too.

desktop_windows

The app

Desktop

Cover grid, drag-to-file bookmark folders, a live grouped queue, themes and a passcode lock.

mangadl-gui
menu_open

The menu

Terminal

Answer a prompt with a number. b goes back, q quits. No extra install needed.

mangadl menu
dashboard

The TUI

Full screen

A keyboard-driven full-screen interface for working over SSH, built on Textual.

mangadl-tui
terminal

The CLI

Scriptable

Everything the app does, plus --json and --urls for pipes.

mangadl <url> -c 1-50 -f pdf
smartphone

From your phone

LAN server

The same interface over Wi-Fi. Every download still runs on the host PC, so leaving range does not stop it.

python server.py
Nineteen sources, 28 sites

Sources

Each one is a small module reading the same registry. Adding another does not touch the CLI, the menu or the app.

Adult sources are tagged, hidden by Safe mode, and can be disabled individually. Weeb Central and Setsu Scans sit behind Cloudflare and need FlareSolverr; without it they fall back to a stored snapshot rather than stalling the other eighteen.

Command line

Syntax

Enough flags to script with, short enough to remember.

BASICS# every chapter into one CBZ $ mangadl https://mangadex.org/title/<uuid> # chapters 1-50 as a PDF, and an EPUB alongside it $ mangadl --url <url> -c 1-50 -f pdf --also epub # one file per 10 chapters, with a custom name $ mangadl --url <url> --per 10 --name-range "{title} Vol {start}-{end}" # pick up where an interrupted run stopped $ mangadl resume SELECTIONS-c all  ·  5  ·  1-20  ·  1,5,10-20  ·  50-  ·  latest  ·  first
INTERACTIVE# numbered menu, no extra dependencies $ mangadl menu # full-screen terminal UI (needs the tui extra) $ mangadl-tui # the desktop app $ mangadl-gui IN THE MENU number choose an item b back a level q quit
WHAT YOU HAVE$ mangadl library # everything downloaded $ mangadl library --check # find files that moved or vanished COVERS# rebuild covers for every CBZ in a folder, recursively $ mangadl covers ~/Manga # preview without writing, or split a flat folder into series $ mangadl covers ~/Manga --dry-run $ mangadl covers ~/Manga --sort-only UPDATES$ mangadl updates # new chapters for watched series
SETTINGS$ mangadl config --list $ mangadl config --set output_dir="D:\Manga" $ mangadl config --set chapter_workers=5 SOURCES$ mangadl sources # list them with their ranks $ mangadl sources --disable nhentai $ mangadl sources --rank mangadex=1 WHERE THINGS LIVE ~/.mangadl/config.json settings and per-source config ~/.mangadl/library.json what you have downloaded ~/.mangadl/jobs/ crash-resume journals
Screens

What it looks like

The desktop app, and the terminal it grew out of.

MangaDL search results in a cover grid
Search — every enabled source at once, duplicates merged across sites.
A series page with its chapter list
Series — pick chapters by range, or take the lot.
The download queue with collapsible per-series tiles
Queue — one collapsible tile per book, with a live rate sparkline and the chapters in flight.
Statistics with a contribution calendar
Stats — a year of activity, each day tinted by the sources it came from.
The library view listing downloaded series
Library — what you have, where it is, and whether it moved.
The full-screen terminal interface
TUI — the same engine over SSH, no desktop required.
Install

Two lines

Python 3.9 or newer. That is the whole prerequisite.

1

Clone it

Or download the ZIP from the releases page.

git clone https://github.com/Compromisee/MangaDL2
2

Install it

[all] adds the desktop app and the TUI.

cd MangaDL2 && pip install -e ".[all]"
3

Run it

Start anywhere; they share one config.

mangadl-gui
info

The base install covers the CLI and the menu. Optional extras: [gui] for the desktop app, [tui] for the full-screen terminal UI, [tray] for background downloading from the system tray.