Export and import your MangaDex library to/from MyAnimeList and AniList — with scores, statuses, and chapter progress
Project description
MangaDex Sync
Export and import your MangaDex library to/from MyAnimeList and AniList — with scores, statuses, and optional chapter progress — all from a single clean app.
Features
- Single app — Export, Import, and Convert in one place, no switching between scripts
- Import — Restore your library from a MangaDex JSON backup or a MAL/AniList XML file
- Fast mode — Exports titles + status in minutes (recommended)
- Deep mode — Also fetches your last read chapter per manga (slower)
- MAL XML — Ready to import at
myanimelist.net/import.php(includes.gz) - AniList XML — Same format, ready to import at AniList
- JSON backup — Full local backup of your library data
- Scores — Fetches your MangaDex ratings and carries them over
- Resume — Saves a checkpoint so it can pick up if interrupted
- Skipped list — Shows exactly which manga had no MAL ID
- Export history — Logs every export with timestamp and file list
- Dry run mode — Simulate without writing any files
- Native window — Opens as a desktop app via pywebview (or falls back to browser)
Requirements
- Python 3.10 or newer
- A MangaDex account
- A MangaDex API Personal Client (free to create)
Installation
pip install mangadex-sync
Everything including the native desktop window is included — no extra steps needed.
Usage
mangadex-sync
This opens a native desktop window. You can also open http://localhost:7337 in any browser — useful for accessing it from another device on the same network.
Step-by-step Guide
1. Get your MangaDex API credentials
- Go to mangadex.org/settings
- Scroll to API Clients → click Create
- Give it any name, set type to Personal
- Copy your Client ID and Client Secret
2. Export your library
- Open the app and go to the Export tab
- Fill in:
- Client ID and Client Secret (from step 1)
- Username and Password (your MangaDex login)
- Save folder — where to save the output files
- Choose Fast or Deep mode (Fast is recommended)
- Click ⚡ Extract Entire Library
MAL User ID and MAL Username are optional. You do not need to fill them in to generate a working XML file. MAL identifies you by your login session when you upload — the ID and username fields in the XML header are just metadata and are ignored during import. Leave them blank if you don't know them.
3. Convert to XML
After export finishes, the Convert tab auto-fills with your exported files. Just:
- Click ⚡ Generate XML Files
- Files are saved to your chosen folder
4. Import to MAL / AniList
- MAL: Go to myanimelist.net/import.php and upload the
mal_*.xmlfile - AniList: Go to anilist.co/settings/import and upload the
anilist_*.xmlfile
5. Import back to MangaDex
Use the Import tab to restore your library from:
- A
mdex_*.jsonbackup file (exported by this app) - A MAL XML file (
mal_*.xml) - An AniList XML file (
anilist_*.xml)
- Browse or paste the path to your file
- Optionally enable Import Scores to restore your ratings
- Click Start Import
Fast vs Deep Mode
| Fast | Deep | |
|---|---|---|
| Speed | ⚡ Minutes | 🐢 15–60+ min |
| Titles & status | ✓ | ✓ |
| Ratings/scores | ✓ | ✓ |
| Last read chapter | ✗ | ✓ |
| Recommended | ✓ | Only if you need progress |
Deep mode fetches every individual chapter you've ever read to find your last one per manga. This can mean 5,000–10,000+ API calls for a large library, which is why Fast mode exists.
Output Files
For each status group (reading, completed, etc.) the app creates:
| File | Description |
|---|---|
mdex_{status}_{timestamp}.xlsx |
Raw export data — used by Convert tab |
mdex_{status}_{timestamp}.json |
Full JSON backup — used by Import tab |
mal_{status}_{timestamp}.xml |
MAL import file |
mal_{status}_{timestamp}.xml.gz |
Compressed version (also accepted by MAL) |
anilist_{status}_{timestamp}.xml |
AniList import file |
Resume
If the export is interrupted (crash, network error, you stopped it), the app saves a checkpoint after each completed status group. Click ▶ Resume on the Export tab to continue from where it left off.
To start fresh, go to Settings → Clear Checkpoint.
Troubleshooting
"Authentication failed"
- Double-check your Client ID, Client Secret, username, and password
- Make sure your API client is set to Personal type and is approved on MangaDex
- Try the ✓ Test Credentials button first
"Failed to set status" during import
- Make sure your API client exists and is approved at mangadex.org/settings
- Check that your credentials are correct
Native window doesn't open
- The app will fall back to your browser automatically with instructions on how to fix it
- On Linux you may need to install a GTK system package — the app will tell you the exact command for your distro
Manga missing from MAL after import
- Those titles are listed in the Skipped Manga section — they have no MAL ID on MangaDex
- Add them manually on MAL
Slow export speed
- The API enforces rate limits — the app already waits the minimum required between requests
- Deep mode is inherently slow for large libraries — use Fast mode if chapter progress isn't critical
Dependencies
| Package | Purpose |
|---|---|
flask |
Local web server |
requests |
MangaDex API calls |
pandas |
Excel file read/write |
openpyxl |
Excel engine for pandas |
pywebview |
Native desktop window |
PyQt6 + PyQt6-WebEngine |
Qt backend for pywebview |
qtpy |
Qt abstraction layer |
Credits
Based on the original export scripts by Seriousattempts. Rewritten and extended with a web UI, Fast/Deep mode, import support, resume, score export, and AniList output.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mangadex_sync-2.0.3.tar.gz.
File metadata
- Download URL: mangadex_sync-2.0.3.tar.gz
- Upload date:
- Size: 29.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.19
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0ebda81ac196174db5dc340c62bdce0c1187545b85a0894962c03e5f23869b41
|
|
| MD5 |
6f6e309e46d50146539f8b53ab500b8b
|
|
| BLAKE2b-256 |
cc2be7f26aaf268501fcabacd78b739ffacb2f09bfdc44dc4d0682a99f747eff
|
File details
Details for the file mangadex_sync-2.0.3-py3-none-any.whl.
File metadata
- Download URL: mangadex_sync-2.0.3-py3-none-any.whl
- Upload date:
- Size: 26.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.19
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
386e243c5a761e09aa183e927ed0c98c544681e077e9b2af0278488424cd1261
|
|
| MD5 |
5c9bc6427a57ae1b7ed37378ab21daab
|
|
| BLAKE2b-256 |
cd794edeb1fae83a0fd0d397949979548d913ff57ac11cbe3826ee3bfa1744a4
|