MangaDex Sync — Export & Import your library to/from MAL and AniList

Member
Joined
Sep 2, 2025
Messages
4
MangaDex Sync — Export & Import your library to/from MAL and AniList

Hey everyone! I made a small tool that lets you sync your MangaDex library with other platforms and wanted to share it here.

What it does:
  • Export your full MangaDex library (reading, completed, on-hold, dropped, plan to read, re-reading) to MAL and AniList XML files — ready to import directly on their sites
  • Import your library back into MangaDex from a JSON backup, MAL XML, or AniList XML file
  • Carries over your scores and statuses
  • Fast mode (minutes) or Deep mode (includes last read chapter)
  • Resumes from where it left off if interrupted

How to use:
pip install mangadex-sync
mangadex-sync

Opens as a desktop app. Also works in a browser at http://localhost:7337, including on Android via Termux.

PyPI: https://pypi.org/project/mangadex-sync/
GitHub: https://github.com/spider2742/mangadex-sync

---

This tool uses the official MangaDex API with a personal client and follows the usage guidelines. It's a free, open source, ad-free personal project — I just hope it's useful to someone. If there are any concerns from the MangaDex team I'm happy to address them!
 
Contributor
Joined
Jan 19, 2018
Messages
740
Hey @Spider2742 , I took a look at your project and noticed a slight bug with how you collect ratings.
If you get to a batch of titles that have not been rated you get an empty "ratings" array. Calling "items()" on that causes an exception which stops the process of gather ratings for all remaining titles.

Example problem response:
JSON:
{'result': 'ok', 'ratings': []}

Problem code
Python:
def ratings(self, ids):
    out, bs = {}, 100
    for batch in [ids[i:i+bs] for i in range(0,len(ids),bs)]:
        d = self.get(f"{API_BASE}/rating", {"manga[]":batch})
        if d:
            for mid, rd in d.get("ratings",{}).items():
                out[mid] = rd.get("rating",0)
        time.sleep(0.25)
    return out

As for some feedback its nice that you show titles without a MAL id in the UI but i think it would also be useful to have that list exported even if its just in the JSON format
 
Last edited:
Contributor
Joined
Jan 19, 2018
Messages
740
Back again with another issue. When gathering details about titles "mature" titles will get excluded by the MD API unless you include the appropriate content rating parameter in the url

Updated code with content rating param
Python:
def manga_details(self, ids, cb=None):
    out, bs = {}, 100
    for i, batch in enumerate([ids[j:j+bs] for j in range(0,len(ids),bs)]):
        d = self.get(f"{API_BASE}/manga", {"ids[]":batch,"limit":100,"includes[]":["author"],"contentRating[]":["safe","suggestive","erotica","pornographic"]})
        if d:
            for m in d.get("data",[]): out[m["id"]] = m
        if cb: cb(min((i+1)*bs,len(ids)), len(ids))
        time.sleep(0.25)
    return out
 
Member
Joined
Sep 2, 2025
Messages
4
Thanks for checking out my projects and pointing out the bugs I have the json export idea already in list and thanks for telling me about the bugs I will fix them when I update it
 

Users who are viewing this thread

Top