[![Tests][tests badge]][tests] [![Go Reference][go reference badge]][go reference] [![GitHub release][release badge]][releases] [![GitHub downloads][downloads badge]][releases] [![Docker Pulls][pulls badge]][docker hub] [![License][license badge]][license]
⭐ If you like this project, star it on GitHub!
Features • Installation • Desktop app • Command line • Supported sites • Troubleshooting
Manga Downloader downloads manga chapters from MangaDex and more than 80 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.
Features
Desktop app
- Paste a URL and it loads: the series, its chapters and the languages and
- Pick what you need: type a range such as
1-10,12, Shift+click a span,
- Live progress: every chapter shows up as it's fetched and packed, with a
- Native folder picker, and a window that follows your system's light or
Desktop app and command line
- 86 supported sites, from big aggregators to small
- 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
- Flexible output: one CBZ per chapter, a single bundled CBZ (
--bundle),
--format raw), named from a template.
- Language and scanlation group filters for sites that host several versions
- Concurrent downloads with retries.
- JavaScript and Cloudflare-protected sites are handled by driving a local
Command line
- A single binary with no runtime, no dependencies and no config file, plus
Installation
Desktop app
Download the manga-downloader-gui asset for your system from the
[releases page][releases]:
- Windows:
manga-downloader-gui-, or-windows-amd64.zip
-windows-arm64.zip for ARM devices such as Snapdragon laptops. Unzip it and
run manga-downloader-gui.exe.
- macOS:
manga-downloader-gui-. Unzip it and move-darwin-universal.zip
Manga Downloader.app wherever you like.
- Linux:
manga-downloader-gui-, or-linux-amd64.tar.gz
-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, manga-downloader ui
opens it. On Windows, double-clicking manga-downloader.exe does the same.
Command line
Prebuilt binary
Download the archive for your system from the [releases page][releases], extract it and run the binary:
~~~bash ./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.
- Open PowerShell: press the Start button, type
PowerShelland press
- Paste this line and press Enter:
- Close the terminal and open a new one. Then run it from any folder:
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][releases] (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:
- Run
./manga-downloaderonce and dismiss the warning. - Open System Settings → Privacy & Security, scroll down to
- Run
./manga-downloaderagain and confirm the dialog.
Docker
~~~bash 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).
The default image has no browser. For sites marked with *, use the :browser
image, which ships Chromium and a virtual display:
~~~bash 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:
~~~bash 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
~~~bash 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:
- Paste the series' URL into the box at the top. The app loads the series
- Pick chapters in the list. Type a range such as
1-10,12and press
- Choose a language and a scanlation group when the site offers them. The
- Set the options in the Options tab: where the files go, the format
- Press Download. The Activity tab shows each chapter as it's fetched and
- When it's done, the summary shows what was downloaded. Press
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.
Using the command line
~~~bash manga-downloader [flags] [url] [chapters] ~~~
urlis the manga's index page, the page that lists all its chapters.
chaptersis 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:
~~~bash manga-downloader --language es https://mangadex.org/title/a1c7c817-4e59-43b7-9365-09675a149a6f/one-piece 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 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
~~~bash
all chapters in a single CBZ, one folder per chapter inside it
manga-downloader --bundle [url] 1-8plain image folders instead of CBZ files
manga-downloader --format raw [url] 1-8 ~~~![bundle 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:
~~~bash 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 nonethere 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:
~~~bash 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:
~~~bash 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 -1and--skip-pages=-1work: 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][go 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.
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):
~~~bash 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 |
| --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 | | Show the browser window from the start | off |
| --version | -v | Show version information | |
Run manga-downloader help to list them in your terminal.
![help img]
Supported sites
Show all 86 supported sites
- asmotoon.com (Asmodeus Scans)
- asurascans.com (Asura Scans, former asuratoon.com)
- atsu.moe (Atsumaru)
- aurorascans.com (redirects to qimanga.com)
- baozimh.com (包子漫画)
- bigsolo.org
- bluesolo.org (Blue Solo, French scantrad)
- comix.to \*
- danke.moe (Danke fürs Lesen)
- deathtollscans.net
- demonicscans.org (MangaDemon / Demonic Scans)
- dragontea.ink \*
- drakecomic.net (Drake Scans, former drakecomic.org)
- dynasty-scans.com (Dynasty Reader)
- elftoon.com
- en-hijala.com (Hijala Translations)
- en-thunderscans.com (Thunderscans)
- fanfox.net (Manga Fox)
- flamecomics.xyz (Flame Comics, former Flame Scans)
- fmteam.fr
- furyosociety.com
- gdscans.com (GalaxyDegenScans)
- genzupdates.com (Genz Toon)
- guya.moe (Guya, Kaguya-sama)
- hivetoons.org (HiveToons, VoidScans)
- inmanga.com
- jestful.net
- kappabeast.com \*
- kaynscans.com (Kayn Scans, former kaynscan.org)
- lagoonscans.com
- leercapitulo.co \*
- lhtranslation.net (LHTranslation)
- luacomic.org (LuaScans)
- madarascans.org (former madarascans.com)
- mangaball.net
- mangabats.com (former mangabat.com)
- mangadenizi.net
- mangadex.org (MangaDex)
- mangafire.to \*
- mangahere.cc (MangaHere)
- mangahub.io \*
- mangak.io (MangaK, former mangabuddy.com)
- mangakakalot.gg (MangaKakalot) \*
- mangakatana.com
- mangalib.me (MangaLib)
- mangalivre.to (Manga Livre, former mangalivre.tv/mangalivre.net)
- mangapark.page (MangaPark, the only live host: mangapark.to and the other mirrors are dead) \*
- mangapill.com
- mangaplus.shueisha.co.jp (Manga Plus, Shueisha's official reader)
- mangaread.org
- mangasushi.org
- mangataro.org
- mangtto.com (Mangitto)
- manhuaplus.com
- manhuatop.org \*
- manhuaus.com \*
- mgeko.cc
- mistscans.com
- mkissa.to \*
- natomanga.com (MangaNato, former manganato.com/manganelo.com) \*
- projectsuki.com
- qimanga.com
- rawkuma.net
- ritharscans.com
- rokaricomics.com
- roliascan.com
- sacachispa.site
- sanascans.com (Sana Scans)
- setsuscans.com \*
- silentquill.net (Armageddon Scanlation)
- stonescape.xyz
- sushiscan.net \*
- taiyo.moe
- tcbonepiecechapters.com (TCB Scans, former tcbscans.com)
- team-shadowi.com
- templetoons.com (Temple Scan)
- toongod.org \*
- toonily.com \*
- tritinia.org (Tritinia Scans)
- utoon.us (UToon, home of reset-scans' content)
- violetscans.org
- vortexscans.org
- weebcentral.com
- witchtoons.net (WitchToons, former witchscans.com)
- writerscans.com
- zonatmo.org (TuMangaOnline, former zonatmo.com)
[!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. Pass --browser-visible to
skip the headless attempt and show the window from the start.
Other sites built on the same platforms often work too, even when they aren't listed. If one doesn't, [open an issue][issues] 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. Checkboxes are clicked automatically, but some challenges
need you to click them yourself. To show the window from the start, pass
--browser-visible or tick Show the browser window in the app.
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:
~~~bash 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):
~~~bash 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][star history]][stargazers]
[downloads badge]: https://img.shields.io/github/downloads/elboletaire/manga-downloader/total [go reference badge]: https://pkg.go.dev/badge/github.com/elboletaire/manga-downloader.svg [release badge]: https://img.shields.io/github/release/elboletaire/manga-downloader.svg [pulls badge]: https://img.shields.io/docker/pulls/elboletaire/manga-downloader [license badge]: https://img.shields.io/github/license/elboletaire/manga-downloader?color=green [tests badge]: https://github.com/elboletaire/manga-downloader/actions/workflows/test.yaml/badge.svg?branch=master [tests]: https://github.com/elboletaire/manga-downloader/actions/workflows/test.yaml [go reference]: https://pkg.go.dev/github.com/elboletaire/manga-downloader
[license]: ./LICENSE [releases]: https://github.com/elboletaire/manga-downloader/releases [issues]: https://github.com/elboletaire/manga-downloader/issues [stargazers]: https://github.com/elboletaire/manga-downloader/stargazers [star history]: https://raw.githubusercontent.com/elboletaire/manga-downloader/star-tracker-data/charts/star-history.svg [go template]: https://pkg.go.dev/text/template [docker hub]: https://hub.docker.com/r/elboletaire/manga-downloader [download img]: https://raw.githubusercontent.com/elboletaire/manga-downloader/master/demos/download.gif [bundle img]: https://raw.githubusercontent.com/elboletaire/manga-downloader/master/demos/bundle.gif [help img]: https://raw.githubusercontent.com/elboletaire/manga-downloader/master/demos/help.gif [prompt img]: https://raw.githubusercontent.com/elboletaire/manga-downloader/master/demos/prompt.gif