Skip to main content

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.

Python Flask PyPI Downloads


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


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

  1. Go to mangadex.org/settings
  2. Scroll to API Clients → click Create
  3. Give it any name, set type to Personal
  4. Copy your Client ID and Client Secret

2. Export your library

  1. Open the app and go to the Export tab
  2. Fill in:
    • Client ID and Client Secret (from step 1)
    • Username and Password (your MangaDex login)
    • Save folder — where to save the output files
  3. Choose Fast or Deep mode (Fast is recommended)
  4. Click Extract entire library (or press Ctrl+Enter)

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:

  1. Click Generate import files
  2. Files are saved to your chosen folder

4. Import to MAL / AniList

5. Import back to MangaDex

Use the Import tab to restore your library from:

  • A mdex_*.json backup file (exported by this app)
  • A MAL XML file (mal_*.xml)
  • An AniList XML file (anilist_*.xml)
  1. Browse or paste the path to your file
  2. Optionally enable Import Scores to restore your ratings
  3. 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 → Resume checkpoint → 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
  • Click Verify credentials first: it checks your login against MangaDex and shows how long the token is valid

"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 panel (with a one-click MAL search for each) — 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.

Metadata

Release files for mangadex-sync 2.2.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mangadex-sync 2.2.3
File Size Uploaded
mangadex_sync-2.2.3.tar.gz 46.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for mangadex-sync 2.2.3
File Interpreter ABI Platform
mangadex_sync-2.2.3-py3-none-any.whl Python 3 none any Details

Total release size: 91.3 kB

Release files / mangadex_sync-2.2.3.tar.gz

Download URL mangadex_sync-2.2.3.tar.gz
Size 46.9 kB
Tags Source
SHA-256 checksum
How to use checksums
0a7b198661a7edb5dce76a673469bb2f0b3cd4d9644d434ec9974ad6bbc7a022
BLAKE2b-256 checksum
How to use checksums
048fa282edac384bc4e31f639bbb74d9d31cae3adb8f0c5d05e9faaee6edec0d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.6

Release files / mangadex_sync-2.2.3-py3-none-any.whl

Download URL mangadex_sync-2.2.3-py3-none-any.whl
Size 44.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2129700e6d19ad225c8ddea11229ba30a381fd06c2c0f9a46545011b5bbe41d9
BLAKE2b-256 checksum
How to use checksums
e945b7e2e716e29f8e775f06b962c87f01772e734d7ec1bf7bc9b88d5208ba9e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.6

Release history Release notifications | RSS feed

2.2.5

2 release files

2.2.4

2 release files

This release

2.2.3 This release

2 release files

2.2.2

2 release files

2.2.1

2 release files

2.2.0

2 release files

2.1.0

2 release files

2.0.3

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page