π MeManga
Automatic manga downloader with a desktop app and a power-user CLI.
Track manga across 224 scrapers / 319 domains, read downloaded chapters in the built-in reader, and optionally email them to your Kindle. Works offline once chapters are downloaded.
β¨ Highlights
- π₯οΈ Single-file desktop app β
MeManga.exe/MeManga, no Python install required - π Library tracking β your read/unread state survives reboots
- π Multi-source search β 15 popular aggregators pre-checked, ranked by reliability
- π Built-in reader β zoom, fit-to-page, keyboard nav, no external viewer needed
- π₯ PDF / EPUB / CBZ / ZIP / JPG / PNG / WEBP output
- π§ Kindle delivery β auto-send chapters by email after download
- π Backup sources β fall back to a second source if the primary stops updating
- π Offline-aware β gracefully disables network actions, auto-resumes when wifi returns
- π€ Power-user CLI β same engine, scriptable, cron-friendly, works on headless servers
- π No telemetry, no accounts, no cloud β everything stays on your machine
π₯ Download
The fastest path is the release binary. Nothing to install β double-click and you're in.
| OS | File |
|---|---|
| Windows | MeManga-windows-x64.exe |
| macOS (Apple Silicon) | MeManga-macos-arm64 |
| Linux (x86_64) | MeManga-linux-x64 |
First launch downloads Firefox (~80 MB, one-time, behind a progress dialog). Playwright uses it under the hood to scrape JS-heavy sources like MangaFire and WeebCentral.
Windows SmartScreen may warn the first time β click "More info β Run anyway". The app is not yet code-signed.
macOS Gatekeeper β right-click β Open the first time; future launches are normal.
Prefer building from source? See Build from source below.
Part 1 β Desktop App
π First five minutes
When you open MeManga for the first time:
- The Library page is empty β click + Add manga in the header.
- Paste a manga URL from any supported source, or click Search in the sidebar and type the title.
- The app remembers what you added, what you've downloaded, and what you've read β across restarts and across machines (config lives in
~/.config/memanga/).
π Library
The Library page is your home. Cards show the cover, status pill
(READING, COMPLETED, β¦), an unread badge when there are new
chapters, and an in-progress bar for the current chapter you're on.
- Click a card β Detail page (chapter list, status, mode, Kindle toggle)
- Right-click β quick actions (mark as read, change status, remove)
- Top-right chip row filters by status; the chip count updates live
π Reader
Click any downloaded chapter on the Detail page to open it in the built-in reader.
| Key / mouse | Action |
|---|---|
β β / scroll wheel |
Scroll within page |
β β / Page Up Page Down |
Previous / next chapter |
Ctrl/Cmd + scroll |
Zoom in/out |
Ctrl/Cmd + 0 |
Reset zoom |
| Click-drag while zoomed | Pan |
Esc |
Back to Detail |
π Search
Search hits only the 15 most popular working aggregators by default β MangaDex, MangaPill, MangaFire, MangaBuddy, WeebCentral, MangaKatana, Comick, MangaHub, MangaHere, MangaPanda, MangaClash, MangaHere.onl, MangaTaro, LuminousScans, TCBScans. Flip more on in the Sources tab if you want a wider net (the long-tail aggregators are usually slower or have stale catalogs).
Each result row shows the source domain, a 47 ch chip telling you
how many chapters that source has, and a + Add button that drops it
straight into your library.
π₯ Downloads
The Downloads page shows what's currently downloading and what just finished. Each row has progress, cancel, and "open folder" buttons. Cancel-all drains the queue cleanly.
If a chapter fails partway through, MeManga retries the failed pages up to 3Γ with exponential back-off. If pages are still missing, the chapter is not marked as downloaded β next "Check" will pick it back up.
π Sources
The Sources page shows every supported domain with its current health status (latency, last successful check, last error). Toggle individual sources on/off; your selection persists across restarts.
Hit Re-check health to ping every enabled source.
βοΈ Settings
- General β output format (PDF/EPUB/CBZ/β¦), download folder, theme, concurrency
- Kindle / Email β Gmail App Password setup for sending chapters to your Kindle
- Advanced β fallback-source delay, cron, cache management
Setting up Kindle delivery
- Generate a Gmail App Password (regular passwords won't work; Google blocks them for SMTP).
- Add your Gmail address to your Amazon "Approved Personal Document E-mail List".
- In Settings β Kindle / Email, paste your Kindle email, sender Gmail, and the App Password. Hit "Test" β you'll get a "Test email sent" toast when it works.
- On the Detail page of any manga, toggle Send to Kindle after download.
PDFs over 18 MB are split automatically; EPUB / CBZ files can't be split so they fail-loud with a size warning.
Part 2 β Command-line interface
Just want the CLI? A dedicated
clibranch strips PySide6 and the GUI module out of the tree β leaner venv, fasterpip install, no Qt runtime to worry about, ideal for headless servers and Docker images.mainkeeps both.
The CLI ships in the source tree (not the release binary). It's the right tool for cron jobs, headless servers, batch operations, and scripting. The desktop app and the CLI share the same config, state, and download files β you can drive your library from both interchangeably.
Install
git clone https://github.com/meellm/MeManga.git
cd MeManga
python setup.py # creates a venv + installs everything
The CLI lives at python -m memanga once the venv is active.
On Windows, prefer:
.\scripts\windows\setup.bat
.\scripts\windows\run.bat <command>
On macOS / Linux:
./scripts/run.sh <command>
Commands
| Command | Purpose |
|---|---|
list (ls) |
Show every tracked manga with status + chapter counts |
add |
Add a manga; supports -t TITLE -u URL [-b BACKUP_URL] or -i interactive |
set TITLE STATUS |
reading / on-hold / dropped / completed |
remove TITLE (rm) |
Drop a manga from tracking |
update TITLE β¦ |
Edit URL, backup source, or rename |
check [TITLE] [--from N] [--auto] [--safe] |
Look for new chapters, optionally download them |
failed [--retry] [--clear] |
List / re-attempt / clear partially-failed downloads |
status |
Show config dir, download dir, manga count, last check time |
config |
Interactive settings editor |
cron install [--time 06:00] |
Schedule a daily check --auto job |
cron status / cron remove |
Inspect / uninstall the cron job |
sources |
List all 319 supported domains, marking which ones are healthy |
export FILE / import FILE |
Back up or restore your library + state as JSON |
tui |
Launch the in-terminal interactive view |
Run any subcommand with --help for full flags.
Common recipes
Add a manga with a backup source
python -m memanga add \
-t "Blue Lock" \
-u "https://mangapill.com/manga/580/blue-lock" \
-b "https://mangadex.org/title/4141c5dc-c525-4df5-afd7-cc7d192a832f"
If MangaPill stops updating, MeManga falls back to MangaDex after
fallback_delay_days (default 2) β long enough for a slow-translating
primary to catch up.
Backfill an entire series from chapter 1
python -m memanga check -t "Blue Lock" --from 1 --auto --safe
--safe restarts the browser every 3 chapters to keep memory usage
flat across long bulk runs.
Schedule daily checks
# Linux/macOS β installs a crontab entry
python -m memanga cron install --time 06:00
# Windows β register a Task Scheduler entry (run as your user)
python -m memanga cron install --time 06:00
Retry every failed chapter
python -m memanga failed --retry
failed is the safety net for the "downloaded but incomplete" class of
errors β the modern downloader refuses to mark a chapter complete if
any page failed, and tracks the failure so you can batch-retry later.
π Sources
The default search sweep covers these 15 verified working aggregators (popularity order):
| Source | Type | Notes |
|---|---|---|
| mangadex.org | API | Largest fan-translation library |
| mangapill.com | Requests | Fast, no Cloudflare |
| mangafire.to | Playwright | VRF bypass + image descrambling |
| mangabuddy.com | Playwright | Popular aggregator |
| weebcentral.com | Playwright | 1000+ series |
| mangakatana.com | Playwright | General library |
| comick.io | Playwright | Clean API |
| mangahub.io | Requests | Huge library |
| mangahere.cc | Requests | Reliable mirror |
| mangapanda.onl | Requests | MangaHub network |
| mangaclash.com | Playwright | Manhwa-heavy |
| mangahere.onl | Playwright | Alternate mirror |
| mangataro.org | Requests | ComicK replacement |
| luminousscans.com | Requests | Scanlation focus |
| tcbonepiecechapters.com | Requests | Jump titles (One Piece, JJK, MHA) |
200+ more aggregators are in the registry β toggle them on in the
Sources tab or via python -m memanga sources. See the
full domain list.
π οΈ Build from source
git clone https://github.com/meellm/MeManga.git
cd MeManga
python setup.py # one-time venv setup
# Dev build β console window stays open for tracebacks
python build.py # β ./MeManga-Dev.exe (or ./MeManga-Dev)
# Release build β no console, identical pins as the GitHub release
python build_app.py # β ./MeManga.exe (or ./MeManga)
Both scripts produce a single file at the repo root and sweep their
build/ + dist/ scratch dirs after. The release build pulls from
requirements-lock.txt (exact pins for every transitive dep) so the
binary you rebuild from a tagged commit in six months matches what
shipped on the release day.
See CONTRIBUTING.md for project layout, test commands, scraper-add walkthroughs, and the lock-refresh flow.
π Where your data lives
| Path | What |
|---|---|
~/.config/memanga/config.yaml |
Library, settings, source toggles, theme |
~/.config/memanga/state.json |
Read/unread state, download history, source health |
~/.config/memanga/covers/ |
Cover image cache |
~/.config/memanga/crash.log |
Uncaught exceptions from the windowed release exe |
~/Downloads/MeManga/<title>/ |
Default download folder (changeable in Settings) |
Sensitive credentials (SMTP App Password) are stored in the OS keyring (Keychain on macOS, Credential Manager on Windows, Secret Service on Linux) β never in plain text on disk.
β FAQ
Will my downloads work without internet? Yes β once a chapter is on disk it opens in the reader instantly. The app gracefully disables network actions (Search, Check, Download) when it detects you're offline and re-enables them when the wifi returns.
Does it phone home / send analytics?
No. The app talks only to the manga sources you enable. No telemetry,
no crash reports auto-sent. Crash dumps go to crash.log locally β
if you want to share one in a bug report, you can.
Why does the first launch take a while? It's downloading Playwright's Firefox driver (~80 MB) so it can scrape JS-heavy sites. One-time, behind a progress dialog. After that, startup is ~2 seconds.
A source I use stopped working β what now?
- Check Sources β Re-check health for status. If it's red, the site is genuinely down or changed its HTML. File an issue with the Scraper broken template.
- Use the search-result chapter chip to spot dead sources
at a glance β they'll show no
N chchip. - Switch your manga to a backup source (Detail page β Edit) until the scraper is fixed.
Can I use this on a Raspberry Pi?
The CLI runs anywhere Python 3.10+ runs. The GUI works too if you
have a display, but on a headless Pi you'd typically use cron + the
CLI's --auto flag and xvfb-run for Playwright sources.
π€ Contributing
PRs welcome β bug fixes, new scrapers, GUI polish, all of it. See CONTRIBUTING.md for the dev setup, test commands, and PR checklist. There are issue templates for bugs, features, and broken scrapers.
For security-sensitive reports, see SECURITY.md.
π License
MIT β see LICENSE.