Go AGPL-3.0

manga-downloader

📚 Download manga (and comics) from over 80+ online reading websites

E

elboletaire

Dernière activité 29 sept. 2026
elboletaire/manga-downloader

249

étoiles

31

forks

4

issues ouvertes

clicomicscomics-readerdownloaderlinuxmacosmangamanga-downloadermanga-readermangadexmangareaderreadingwindows

Ce README est souvent en anglais.

manga downloader

Tests Go Reference GitHub release GitHub downloads Docker Pulls License

⭐ If you like this project, star it on GitHub!

Website • Features • Installation • Desktop app • Command line • Supported sites • Troubleshooting

Manga Downloader downloads manga chapters from MangaDex and more than 100 other sites and packs them into CBZ files, ready to read on your e-reader or in your favorite comic app. It comes as a desktop app for Windows, macOS and Linux, and as a command line tool for scripts, servers and Docker.

The Manga Downloader desktop app with a series loaded

Features

Desktop app

  • Paste a URL and it loads: the series, its chapters and the languages and scanlation groups it offers appear on their own.
  • Pick what you need: type a range such as 1-10,12, Shift+click a span, or select all, then choose the language and scanlation group the series has.
  • Live progress: every chapter shows up as it's fetched and packed, with a summary and an Open folder button when it's done.
  • Native folder picker, and a window that follows your system's light or dark theme.

Desktop app and command line

  • 115 supported sites, from big aggregators to small scanlation groups.
  • Chapter ranges such as 1,3,5-10, so you download only what's missing.
  • E-reader friendly output: AVIF and WebP pages are converted to JPEG, so they don't show up blank on Kobo, KOReader or Calibre.
  • Flexible output: one CBZ per chapter, one per volume (--volumes), a single bundled CBZ (--bundle), or plain image folders (--format raw), named from a template.
  • Language and scanlation group filters for sites that host several versions of a chapter, and skipping pages such as credits or ads.
  • Concurrent downloads with retries.
  • JavaScript and Cloudflare-protected sites are handled by driving a local Chromium browser, which clicks "Verify you are human" checkboxes for you.

Command line

  • A single binary with no runtime, no dependencies and no config file, plus Docker images.

Installation

Desktop app

The easiest way is the website, which picks the right download for your system. Or download the manga-downloader-gui asset for your system from the releases page:

  • Windows: manga-downloader-gui-<tag>-windows-amd64.zip, or -windows-arm64.zip for ARM devices such as Snapdragon laptops. Unzip it and run manga-downloader-gui.exe.

  • macOS: manga-downloader-gui-<tag>-darwin-universal.zip. Unzip it and move Manga Downloader.app wherever you like. Or install it with Homebrew, which also puts manga-downloader-gui on your PATH:

    brew install --cask elboletaire/tap/manga-downloader

    The cask installs the command line tool too, so manga-downloader ui works. Mind the --cask: without it, Homebrew installs only the command line tool, which shares the name.

  • Linux: manga-downloader-gui-<tag>-linux-amd64.tar.gz, or -linux-arm64.tar.gz. Extract it and run manga-downloader-gui. It needs WebKitGTK 4.1 (libwebkit2gtk-4.1-0 on Debian and Ubuntu), which most desktops already have.

Note

macOS doesn't sign the app, so Gatekeeper blocks its first launch. Allow it under System Settings → Privacy & Security with Open Anyway. You only need to do this once.

Windows needs the Microsoft Edge WebView2 runtime. Windows 11 and current Windows 10 already have it; without it, the app offers to download and install it on first launch. If SmartScreen shows "Windows protected your PC", click More info → Run anyway: the file is only flagged because it isn't signed.

If the desktop app sits next to the command line tool or is on your PATH (the Homebrew cask puts it there), manga-downloader ui opens it. On Windows, double-clicking manga-downloader.exe does the same.

When a newer release is out, a yellow ! next to the version in the status bar links to it.

The status bar with a yellow exclamation mark next to the version, linking to a newer release

Command line

Homebrew

On macOS and Linux, install the command line tool from Homebrew:

brew install elboletaire/tap/manga-downloader

Homebrew doesn't quarantine the command line tool, so there's no Gatekeeper step on macOS. brew upgrade manga-downloader updates it.

This installs only the command line tool. On macOS, the desktop app is a cask with the same name, which installs both and gets manga-downloader ui working:

brew install --cask elboletaire/tap/manga-downloader

Prebuilt binary

Download the archive for your system from the releases page, extract it and run the binary:

./manga-downloader --help

Builds are published for Linux, macOS and Windows on amd64 and arm64 (Windows arm64 included), plus 32-bit builds for Linux and Windows. The Windows 32-bit build is named windows-32bit-legacy.

To run it from any folder, move the binary to a folder in your PATH, such as /usr/local/bin on Linux and macOS.

Windows: step-by-step setup

[!IMPORTANT] Manga Downloader is a command line tool, so run it from a terminal, as shown below. Double-clicking manga-downloader.exe opens the desktop app when the app is next to it or on your PATH. Without it, the window only shows the help and waits for Enter.

  1. Open PowerShell: press the Start button, type PowerShell and press Enter.

  2. Paste this line and press Enter:

    irm https://raw.githubusercontent.com/elboletaire/manga-downloader/master/install.ps1 | iex
  3. Close the terminal and open a new one. Then run it from any folder:

    manga-downloader https://mangadex.org/title/a1c7c817-4e59-43b7-9365-09675a149a6f/one-piece 1-10

The install script downloads the latest release to %LOCALAPPDATA%\Programs\manga-downloader and adds that folder to your PATH. It doesn't need administrator rights. Run the same line again to update, and delete that folder to uninstall.

[!TIP] Files are saved in the folder the terminal is in. To download straight into a folder, open it in File Explorer, type cmd in the address bar and press Enter. A terminal opens there, ready to use.

Prefer not to run a script?

Download the windows-amd64 zip from the releases page (or windows-arm64 if you have an ARM device, such as a Snapdragon laptop), extract it, and copy manga-downloader.exe to C:\Windows\System32. Windows asks for administrator permission. After that, manga-downloader works in any terminal.

[!WARNING] This works, but it isn't the best place for the program: it needs administrator rights and mixes it with Windows' own files. To update or uninstall it, you have to go back to that folder and replace or delete the file yourself.

If Windows SmartScreen shows "Windows protected your PC", the binary is only flagged because it isn't signed. Click More info → Run anyway.

macOS: allowing an unsigned binary

The binary isn't signed, so Gatekeeper blocks it the first time you run it:

  1. Run ./manga-downloader once and dismiss the warning.
  2. Open System Settings → Privacy & Security, scroll down to Security, and click Open Anyway next to the manga-downloader message.
  3. Run ./manga-downloader again and confirm the dialog.

You only need to do this once.

Docker

docker run --rm -it -v "$PWD:/downloads" elboletaire/manga-downloader [url] [chapters]

Files are written to the mounted /downloads folder. They're owned by USER_ID/GROUP_ID, which both default to 1000. If your user has a different ID, pass it with -e USER_ID=$(id -u) -e GROUP_ID=$(id -g).

:latest and :browser follow releases. The current development version is :master (and :master-browser).

The default image has no browser. For sites marked with *, use the :browser image, which ships Chromium and a virtual display:

docker run --rm -it -v "$PWD:/downloads" elboletaire/manga-downloader:browser [url] [chapters]
Showing the browser window on your own display

The :browser image passes Cloudflare challenges on its own. If a challenge needs a real person, forward the window to your Linux desktop. You may need to run xhost +local: first:

docker run --rm -it -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix \
    -v "$PWD:/downloads" elboletaire/manga-downloader:browser --browser-visible [url] [chapters]

Go

go install github.com/elboletaire/manga-downloader@latest

Tip

Binaries installed this way don't report a version number, because the version is only added to release builds.

Using the desktop app

Open the app and follow these steps:

  1. Paste the series' URL into the box at the top. The app loads the series on its own, without a button.

  2. Pick chapters in the list. Type a range such as 1-10,12 and press Add range, Shift+click to select a span, or use All and None. The arrow keys and Space work too.

  3. Choose a language and a scanlation group when the site offers them. The selectors only appear for series that list them, and picking one reloads the chapter list. Sites that support it also offer All.

    The language selector open, with Catalan selected
  4. Set the options in the Options tab: where the files go, the format (CBZ archive or image folder), Pack as (a file per chapter, per volume, or one for everything), Convert to JPEG for AVIF and WebP pages, pages to skip, the file name template, and whether to Show the browser window. Packing by volume adds a Volumes box above the chapter list, filled with the site's volumes when it lists them, and groups the list by volume.

    The Options tab, with the format, Pack as and Convert to JPEG options Packing by volume: the Volumes box above the chapter list, the list grouped by volume, and the Download button naming the volumes
  5. Press Download. The Activity tab shows each chapter as it's fetched and packed. Cancel lets the chapters already downloading finish, and starts no new ones. A log is one click away in the status bar.

    A download in progress
  6. When it's done, the summary shows what was downloaded. Press Open folder to go straight to the files.

    The finished download summary

    If a chapter fails, the summary names it and says why; the other chapters are still saved.

    A finished download where one chapter failed, with the reason

The app saves your options to gui.json in the manga-downloader folder of your user config folder (the same place as the Manga Plus secret, see below), so they're still there the next time you open it. Files go to your Downloads folder (or your home folder, if there isn't one) unless you choose another folder.

The app uses the command line's defaults for concurrency and retries. Sites whose image servers limit the request rate get lower limits automatically, in both the app and the command line.

Using the command line

manga-downloader [flags] [url] [chapters]
  • url is the manga's index page, the page that lists all its chapters. Don't use the URL of a single chapter.
  • chapters is a comma-separated list of numbers and ranges, such as 1,3,5-10. If you leave it out, the tool asks whether to download every chapter. The answer defaults to "no".

Arguments aren't positional, so manga-downloader 1-50 [url] works too.

prompt img

download img

Language and scanlation group

Some sites, such as MangaDex, list each chapter once per language. Use --language to download only one of them:

manga-downloader --language es https://mangadex.org/title/a1c7c817-4e59-43b7-9365-09675a149a6f 1-10

On sites that list several languages, --language all downloads every one of them.

Sites that host several scanlation groups' versions of the same chapter download the group with the most chapters, and list the other groups. Use --scanlator <name> to pick a group, or --scanlator all to download every version. With all, the group name is added to each file name.

Bundling and output format

# all chapters in a single CBZ, one folder per chapter inside it
manga-downloader --bundle [url] 1-8

# plain image folders instead of CBZ files
manga-downloader --format raw [url] 1-8

bundle img

Volumes

--volumes packs one file per volume. auto uses the volumes the site files chapters under (not every site lists them); otherwise give the chapters of each volume, separated by slashes, in the chapter range syntax:

manga-downloader --volumes 1-7/8-16 [url] 1-20

That writes Series Vol. 01.cbz and Series Vol. 02.cbz, with a folder per chapter inside, and chapters 17 to 20, outside every volume, one file each. The chapters argument still picks what's downloaded: a volume packs the chapters of it you asked for. A group can give its volume number with N:, and the groups after it count on from there:

manga-downloader --volumes 16:112-114/115-118 [url] 112-118

That's volumes 16 and 17. An empty group also skips a number (1-7//20-30 has no volume 2), and --volumes can't be combined with --bundle.

volumes img

Image conversion

Most e-readers can't display AVIF, so a chapter with AVIF pages looks empty on the device even though the download succeeded. AVIF pages are converted to JPEG by default. WebP renders fine in phone apps but is unreliable on e-ink, so converting it is opt-in:

manga-downloader --convert-images avif,webp [url] 1-10   # strict e-ink setup
manga-downloader --convert-images none [url] 1-10        # keep pages untouched

JPEG, PNG and GIF pages are never re-encoded. If a page fails to convert, it's kept as it was and a warning is shown, so the rest of the chapter isn't lost.

Note

The AVIF decoder is embedded as WebAssembly, so you don't need to install any system library. It's slower on the 32-bit builds (linux-386 and windows-32bit-legacy), so use --convert-images none there if speed matters.

The desktop app offers the same choice as two checkboxes, AVIF and WebP.

Skipping pages

Scanlation groups often reserve a page or two of every chapter for their own credits or ads. --skip-pages drops them, using the same range syntax as the chapter argument, applied to each chapter's pages:

manga-downloader --skip-pages 2 [url] 1100-1110       # just the credits page
manga-downloader --skip-pages 2,5-7 [url] 1100-1110   # several at once

Pages count from 1, and negative positions count backwards from the end of the chapter: -1 is its last page, -3--1 the last three. They're resolved per chapter, so -1 means each chapter's own last page however long it is:

manga-downloader --skip-pages 2,-1 [url] 1100-1110    # one at each end

The pages are dropped before they're downloaded, so they cost no time or bandwidth, and a page that's broken on the site's end can't fail the chapter around it — which is the only way to download a chapter whose page 404s.

The archive is still numbered 000, 001, … in order, with no holes left by the skipped pages. A position the chapter doesn't have is ignored.

Tip

Both --skip-pages -1 and --skip-pages=-1 work: the value right after the flag is taken verbatim, dash and all. Use the = form if a shell or a wrapper script trips on the leading dash.

File names

Use --filename-template to change file names. It takes a Go text/template string, and the default is:

{{.Series}} {{.Number}} - {{.Title}}{{if gt .Version 1}} v{{.Version}}{{end}}

{{.Version}} is a counter that's added when two files would have the same name, and {{.Volume}} is the volume number (0 when the site doesn't say); {{printf "%02d" .Volume}} pads it.

Volume files (--volumes) get their own default name while the template is left as is:

{{.Series}} Vol. {{printf "%02d" .Volume}}{{if gt .Version 1}} v{{.Version}}{{end}}

A custom template names them too, with {{.Number}} being the volume's chapters (1-7) and {{.Title}} Vol. 01.

Environment variables

Variable Description
MANGAPLUS_SECRET Anonymous device secret to use for Manga Plus

Manga Plus answers the complete chapter list only to an app client, which authenticates with an anonymous device secret. manga-downloader registers one on first use and caches it in manga-downloader/mangaplus-secret inside your user config folder ($XDG_CONFIG_HOME or ~/.config on Linux, ~/Library/Application Support on macOS, %AppData% on Windows): no account is ever needed. Secrets are 32 lowercase hexadecimal characters, and anything that isn't one is treated as absent — so exporting a malformed MANGAPLUS_SECRET, or deleting the cached file, makes the next run register a fresh device, as does a cached secret the API stops accepting. Export a valid MANGAPLUS_SECRET to reuse a secret registered elsewhere, such as the one of a device with your Manga Plus subscription.

In Docker, the cached secret lives inside the container and is lost with it, so every run registers a new device. To keep one, either pass it with -e MANGAPLUS_SECRET=..., or mount your own config folder so the container shares the secret of your local install (create the folder first, or Docker creates it owned by root):

mkdir -p ~/.config/manga-downloader
docker run --rm -it -v "$PWD:/downloads" \
    -v ~/.config/manga-downloader:/home/manga/.config/manga-downloader \
    elboletaire/manga-downloader [url] [chapters]

Manga Plus also publishes one edition per language, and their chapter lists differ: some list the whole series, others only a handful of chapters. A URL points at one edition, and --language downloads another one instead (--language en on a Spanish URL downloads the English edition).

Options

Flag Short Description Default
--output-dir -o Folder to write the downloaded files to current folder
--bundle -b Bundle all chapters into a single file off
--volumes One file per volume: auto, 1-7/8-16, 16:112-114 off
--format -f Output format: cbz or raw cbz
--filename-template -t Template for the file names see above
--language -l Only download the specified language site default
--scanlator -s Only download the specified scanlation group (or all) most chapters
--convert-images Formats to convert to JPEG: avif, webp or none avif
--skip-pages Pages to exclude from every chapter (-1 is the last) none
--concurrency -c Number of chapters downloaded at once (max 5) 5
--concurrency-pages -C Number of pages downloaded at once per chapter (max 10) 10
--retry -r Retries per failed page (max 3, 0 disables retrying) 1
--browser-visible Always show the browser window (rarely needed) off
--version -v Show version information

Run manga-downloader help to list them in your terminal.

Some sites cap the concurrency lower, because their image servers refuse requests that come too fast; a lower value still applies there. Pages refused for coming too fast (a 429) are retried after the wait the server asks for, up to a minute.

Supported sites

Show all 115 supported sites

Note

Sites marked with * need a Chromium-based browser (Google Chrome, Chromium, Brave or Edge). They either render with JavaScript or sit behind a Cloudflare challenge. Manga Downloader launches the browser itself and only shows a window when a challenge needs solving, remembering the sites that needed one until it exits. --browser-visible shows it for every site, which is rarely needed.

Other sites built on the same platforms often work too, even when they aren't listed. If one doesn't, open an issue or send a pull request.

Troubleshooting

The newest chapter downloads empty or is missing

Many sites keep their latest chapters behind a paywall, and the page often looks normal. Try a slightly older chapter to confirm that the site works.

Old chapters are missing, or a warning says the range starts before the first chapter

Sites often delete old chapters. The tool can only download chapters that the site still lists.

A browser window pops up

This is expected for sites marked with *. The window opens when the site shows a Cloudflare challenge or a captcha of its own, and the terminal (or the app) tells you when it may need you. Checkboxes are clicked automatically, but some challenges need you to solve them yourself; the download carries on once the page loads. You rarely need to show the window from the start, but you can with --browser-visible or Show the browser window in the app.

The app's alert asking you to look at the browser window, with Dismiss and Show the browser window buttons
No browser found

Sites marked with * need Google Chrome, Chromium, Brave or Edge installed in one of its usual places. To use another Chromium-based browser, set MANGA_DOWNLOADER_BROWSER to the full path of its executable (or a command on your PATH), for example MANGA_DOWNLOADER_BROWSER=/usr/bin/brave-browser. It works for the command line and the app alike (for the app, set it in the environment that starts it).

Pages don't show up on my e-reader

The site probably serves WebP images. Download the chapters again with --convert-images avif,webp, or tick WebP under Convert to JPEG in the app.

Building from source

The command line tool needs Go 1.19 or newer:

make install   # download dependencies
make build     # test and build ./manga-downloader

The desktop app is a Wails app: a Go program showing a React frontend in the system's webview. It needs Go 1.26 or newer (gui/go.mod), Node 22, pnpm 10, and on Linux the WebKitGTK 4.1 and GTK 3 development headers (libgtk-3-dev libwebkit2gtk-4.1-dev on Debian and Ubuntu):

make build/gui         # build ./manga-downloader-gui (frontend first)
make build/gui/windows # cross-build manga-downloader-gui.exe, no cgo needed

Star history

Star history chart

Projets similaires

tool to download comics and manga in pdf/epub/cbr/cbz from a website

Gocbrcbzcomic
GGirbons
678 étoiles71

A command-line tool to download manga from MangaDex, written in Python.

Pythonclidownloadermanga
Mmansuf
921 étoiles86

Manga & Anime Downloader for Linux, Windows & MacOS

JavaScriptanimeanime-downloadermanga
Mmanga-download
6,4 k étoiles607