Homebrew app [Release] Switch Library Manager Web – a self-hosted manager for your Switch backups (Docker / Unraid / Windows / macOS / Linux)

  • Thread starter Thread starter DeLFuS77
  • Start date Start date
  • Views Views 1,442
  • Replies Replies 18
  • Likes Likes 4

DeLFuS77

Member
Newcomer
Joined
Nov 14, 2025
Messages
11
Reaction score
17
Trophies
0
Age
49
XP
74
Country
United States
Switch Library Manager Web
A self-hosted web app to keep your Nintendo Switch backup library tidy, up to date and smaller

GitHub · Downloads · Docker Hub · Unraid Community Apps

library.png

Hi everyone!

I have been working on Switch Library Manager Web, a web app that runs on your NAS, home server or PC and manages the dumps of your own games: it scans your folders (NSP, NSZ, XCI, XCZ and split files), tells you which updates and DLC you are missing, compresses, checks and organizes your files, and shows everything in a clean interface you can open from any browser, also on your phone.

It started as a fork of giwty's switch-library-manager and dtrunk90's web version, and has grown a lot since. It is free, open source (AGPL-3.0) and has no ads, accounts or telemetry.

Screenshots
Game page (updates, DLC, version history, time to beat)
title.png


Upcoming releases
upcoming.png


Series
sagas.png


Statistics
statistics.png


Your year on Switch
year.png


Setup wizard
wizard.png


Quick search
search.png

Features

Your library at a glance
  • Scans NSP, NSZ, XCI, XCZ and split files, and rescans by itself when files change
  • Missing updates (games and DLC), missing DLC and missing games, with filters and a typo-tolerant search
  • Game pages with description, screenshots, DLC, version history (every update with its date) and one-click download of a whole game as a ZIP
  • Favorites, your own collections and a quick search from any page (Ctrl+K)
  • SD card planner: pick what fits on a card and copy it in one go

Discover
  • Upcoming releases calendar, with your wishlist and the sequels of your series first
  • Series: how many games of each series you have and which ones are missing, from IGDB and Wikidata
  • "You might like" suggestions, and a wishlist that tells you when a game comes out
  • Optional times to beat from IGDB (with your own free Twitch key)

Save space, safely
  • Compress NSP to NSZ and XCI to XCZ in pure Go, compatible with nsz; Tinfoil, DBI and other installers install them directly
  • Every compressed file is decompressed again and checked against the original SHA-256 before anything is deleted
  • File check of the whole library: NCAs are checked against their content IDs, and files rewritten by tools such as NSC_Builder are checked through their internal hash trees, so they are not reported as damaged
  • Complete packs: game + latest update + DLC in one NSP/NSZ, without the update's delta fragments
  • Space page: old updates, duplicates, compressed originals and copies of the same game from other regions, freed safely (a file that still holds a game is never deleted)

Keep it tidy
  • Organize and rename files from templates, always with a preview first
  • Delete old updates, duplicates and empty folders
  • Optional automations: new files are checked, compressed, replaced updates removed and the library organized by itself

Save vault (new)
  • Keep your save backups on your server: JKSV on the console uploads them over WebDAV, matched to your games, with history and downloads

Made for a server
  • Docker image for amd64 and arm64, Unraid template, and ready-to-run programs for Windows, macOS, Linux and Raspberry Pi
  • Fast with tens of thousands of files, low memory use, background hours for heavy work
  • Live tasks page (they keep running on the server when you close the browser), notifications on Discord, Telegram or a webhook
  • Users with admin and read-only roles, brute-force protection, works behind Cloudflare or a reverse proxy
  • Installable on your phone's home screen, with a QR code and guides for Android and iPhone in Settings
  • JSON API with OpenAPI description (e.g. for Home Assistant)
  • 11 languages: English, Spanish, French, German, Italian, Portuguese, Dutch, Russian, Japanese, Korean and Chinese
  • A setup wizard walks you through everything on the first start

Getting started

Docker
Code:
docker run -d \
  --name switch-library-manager-web \
  --restart unless-stopped \
  -p 3000:3000 \
  -e PUID=1000 -e PGID=1000 -e TZ=Europe/Madrid \
  -v /path/to/appdata:/usr/local/share/switch-library-manager-web \
  -v /path/to/your/switch/games:/mnt/roms \
  delfus77/switch-library-manager-web
Then open http://your-server:3000 and follow the wizard.

Unraid: search for Switch Library Manager Web in Community Applications.
Windows, macOS, Linux: download the program for your system from the releases page, unzip it and run it.

Keys: the app needs your own prod.keys, dumped from your own console, to read and compress your games. Put it in the data folder; it never leaves your server. No keys are included or shared, and none should be asked for in this thread.

Feedback welcome
This is a hobby project and I would love to hear what you think: bugs, ideas, translations or anything that does not work with your library. The best place is a GitHub issue, or this thread.

If the app saves you time, a star on GitHub helps a lot. There is also a Ko-fi for anyone who wants to support it; it is entirely voluntary and unlocks nothing.

Thanks to giwty, dtrunk90 and trembon for the original switch-library-manager and its forks, blawar for titledb, nicoboss for the nsz format, and everyone who reports bugs. This tool is meant for managing backups of games you own.
 
thank you for doing this.

We have switch library manager already through trembon that is in 2.0. What we really need is an app that combines/splits NSPs for windows or Mac app that doesn’t corrupt the files.
Post automatically merged:

i wish someone would make an app that combined and splits NSP files (bonus: in bulk) that doesn’t corrupt the files. It is all that’s left in the switch scene
 
thank you for doing this.

We have switch library manager already through trembon that is in 2.0. What we really need is an app that combines/splits NSPs for windows or Mac app that doesn’t corrupt the files.
Post automatically merged:

i wish someone would make an app that combined and splits NSP files (bonus: in bulk) that doesn’t corrupt the files. It is all that’s left in the switch scene
Sounds like you want ns usbloader
https://github.com/developersu/ns-usbloader/
 
That is only splitting the files for the switch.

What we need is a tool to merge games from NSP. + NSP + NSP > 1 SuperNSP file. Ditto for splitting SuperNSP > NSP NSP NSP
It splits and merges but I see you were talking bout super xci/nsp etc. Not splitting for the 4gb limit on fat32
 
It splits and merges but I see you were talking bout super xci/nsp etc. Not splitting for the 4gb limit on fat32
Ya NSC_Builder can (painfully) combine to SuperNSP but unfortunately cannot split without corrupting them.
We have v2 of Trembon's Switch Library Manager and the new Fork NX File Info for validation of files. All that's left is to have an NSC_Builder alternative.
 
Ya NSC_Builder can (painfully) combine to SuperNSP but unfortunately cannot split without corrupting them.
We have v2 of Trembon's Switch Library Manager and the new Fork NX File Info for validation of files. All that's left is to have an NSC_Builder alternative.
You'll never get a program to split a superNSP back to an update and a game. The Update contains files that replaces files in the original game, so when you create your SuperNSP you are basically updating some of the files and the old ones are gone and will only ever exist in the orignal NSP.
 
You'll never get a program to split a superNSP back to an update and a game. The Update contains files that replaces files in the original game, so when you create your SuperNSP you are basically updating some of the files and the old ones are gone and will only ever exist in the orignal NSP.
This is not true.

A SuperNSP is just a container holding the base game’s NCA files, the update’s NCA files, and sometimes DLC, each with its own metadata (CNMT) and ticket. Nothing gets overwritten or merged. The update NCAs are patch archives, and the Switch applies them on top of the base game at runtime. The base game’s files stay in the package untouchd!

Because every title’s contents are still separate and intact inside the container, tools like NSC_Builder should be able to split a multi-content NSP back into a base NSP, an update NSP, and DLC NSPs.
 
This is not true.

A SuperNSP is just a container holding the base game’s NCA files, the update’s NCA files, and sometimes DLC, each with its own metadata (CNMT) and ticket. Nothing gets overwritten or merged. The update NCAs are patch archives, and the Switch applies them on top of the base game at runtime. The base game’s files stay in the package untouchd!

Because every title’s contents are still separate and intact inside the container, tools like NSC_Builder should be able to split a multi-content NSP back into a base NSP, an update NSP, and DLC NSPs.
nca's might be intact but you've replaced CNMT files with a new one so you would try and convert back you would need to try to figure out what nca files we from the game/update/dlc and then write new cnmt.nca file before packing back into an nsp or xci, good luck guessing what nca belongs to the update or the game.
 
I think your premise is wrong, so your conclusion doesn't follow.

A SuperNSP doesn’t replace the CNMTs with a single new one. Each title (base, update, DLC) keeps its own Meta NCA containing its own CNMT. Packing them together just puts all those files in one container. There’s no merged metadata that loses track of what belongs to what.
 
Thanks a lot for taking the time to try it and to comment, I really appreciate it!

@switchsv you're right that Switch Library Manager already has a great version 2.0 by trembon, and the original by giwty is where all this started. I didn't want to compete with them, but to do something different: a web app you host yourself, running in Docker on a NAS or home server (Unraid included), that you open from any device — PC, phone or even the TV — and that keeps working in the background: scanning, checking files, compressing to NSZ, organizing and freeing space, and telling you when there are new updates or DLC. There are still builds for Windows, macOS and Linux for anyone who prefers to run it on their own computer.

The idea is to keep improving everything little by little: speed with big libraries, the interface, accessibility and the tools for keeping the library tidy. Today's 1.46.0, for example, is much faster with libraries of tens of thousands of files.

About combining and splitting NSPs: the app can already make a "complete pack" (BETA) from a game's page (the game, its latest update and all its DLC in one NSP or NSZ). And you're right about splitting: a SuperNSP is just a container where each title keeps its own NCAs and its own CNMT, so it can be split back into one file per title without corrupting anything. Splitting, and making packs in bulk, are what I'm working on next.

Thanks again, and any feedback or idea is welcome, here or on GitHub!
 
Thanks a lot for taking the time to try it and to comment, I really appreciate it!

@switchsv you're right that Switch Library Manager already has a great version 2.0 by trembon, and the original by giwty is where all this started. I didn't want to compete with them, but to do something different: a web app you host yourself, running in Docker on a NAS or home server (Unraid included), that you open from any device — PC, phone or even the TV — and that keeps working in the background: scanning, checking files, compressing to NSZ, organizing and freeing space, and telling you when there are new updates or DLC. There are still builds for Windows, macOS and Linux for anyone who prefers to run it on their own computer.

The idea is to keep improving everything little by little: speed with big libraries, the interface, accessibility and the tools for keeping the library tidy. Today's 1.46.0, for example, is much faster with libraries of tens of thousands of files.

About combining and splitting NSPs: the app can already make a "complete pack" (BETA) from a game's page (the game, its latest update and all its DLC in one NSP or NSZ). And you're right about splitting: a SuperNSP is just a container where each title keeps its own NCAs and its own CNMT, so it can be split back into one file per title without corrupting anything. Splitting, and making packs in bulk, are what I'm working on next.

Thanks again, and any feedback or idea is welcome, here or on GitHub!

Bro thank you for your time & dev for switch apps. The community desperately needs it!

That said, be aware nicoboss is having major bugs with converting SuperNSPs to NSZ.
 
Bro thank you for your time & dev for switch apps. The community desperately needs it!

That said, be aware nicoboss is having major bugs with converting SuperNSPs to NSZ.

Fair point, so I went and tested it on the console instead of just trusting my own checks.

Quick rundown of how the compression works, since a few people asked. It writes standard NSZ, the same format nsz uses, so DBI and Tinfoil read it as usual. Before touching anything the app hashes every NCA in the original file. Then each big NCA gets decrypted with its title key (from the ticket, or from title.keys if there’s no ticket) and compressed with zstd. The first 0x4000 bytes are left alone, so the header and Nintendo’s signature stay exactly as they were. The key and AES counter of each section go into a small table so the installer can encrypt it back later. I keep the zstd window at 8 MiB so the Switch never runs out of memory decompressing it.

After that the app decompresses its own NSZ again, re-encrypts everything and compares every NCA with the original hash, byte for byte. The file only gets its real name if that passes; until then it’s a hidden temp file. The original is only deleted if you asked for it and the check went all the way through. Merged packs also get special treatment: some tools change an NCA and leave the old hash in the metadata, so instead of trusting that hash the app checks the NCA’s internal hash trees. That way it can tell “modified by a tool but fine” from actually damaged.

On the Switch the installer just does the reverse: decompresses on the fly, re-encrypts with the stored counters and checks the result against the NCA’s content ID. That’s the TRANSFER OK you see in DBI.

For the test I took a game with base, update and DLC. I had old NSZs of it made with another tool years ago, so I decompressed them with the app and compressed them again at max level. Then I installed everything with DBI over FTP on firmware 22.1.0, first as separate files and then as one complete pack.

Separate files: the base (about 7 GB compressed) gave TRANSFER OK and SIGNATURE OK and the game boots. The update gave TRANSFER OK and SIGNATURE OK and the console shows the right version. That one was the file I was most worried about, because its NCZ is split into 866 sections, each with its own counter, and one wrong section is enough to break the hash. The DLC (about 3 GB) also gave TRANSFER OK and SIGNATURE OK and shows up as installed.

Then I removed it all and installed the pack, a single NSZ with base, update and DLC inside. It installed fine, all the content registered, the right version shows and the game boots.

Testing also turned up a few things I’ve already fixed: decompressing NSZs made with other tools (they use a 128 MiB window) is now over 3x faster, progress no longer sits at 0% on big files, and Tasks shows the real file size.

Next up is trying it with Tinfoil.
 
  • Like
Reactions: digdat0
Hellow!

Quick update, this time about nsz itself.

While testing multi-content NSPs (a game update and its DLC merged into one file, the way NSC_Builder makes them) I found that nsz can’t compress them. Both the 5.0.0 release and the current master stop right at the start with an IndexError in SolidCompressor and don’t write anything.

I looked into it and I think the cause is pretty simple. An NSP like that has one ticket per title, but nsz seems to load only the title key of the first ticket it finds. The NCAs of the other title can’t be opened, so they end up with no sections and the compressor crashes when it asks for the first one. The XCI side of nsz already reads every ticket, so the fix I propose is to do the same for NSP. It also makes nsz show a clear message about a missing title key instead of the IndexError if an NCA still can’t be read.

In my tests with a 7.4 GB multi-content NSP it compresses, --verify passes on every NCA, and decompressing gives back the exact same file (same SHA256). Normal single-title NSPs work like before.

I’ve sent the fix to nicoboss as a pull request. He still has to review it, so it’s not official until he looks at it and decides if it goes in: nicoboss/nsz#257 · Fix compressing multi-content…

By the way, Switch Library Manager Web doesn’t use nsz, it has its own compressor, so it already handles these files. You can compress them, split them back into one file per title, or make a complete pack from separate files.
 
  • Like
Reactions: digdat0
Wow @DeLFuS77 thank you for doing all the research.

I'll take a look at Switch Library Manager Web. Can it do it in bulk? Also, is that the only solution that works to compress SuperNSPs to NSZ?
 
Thanks!

Yes, it works in bulk. The Compress page lists every NSP and XCI in your library and you can select them all at once (or filter by game, update or DLC). It can work on several files at the same time and each file uses several threads, and if you start something while another task is running it goes into a queue and runs after. There’s also an option to compress new files automatically when they show up in your folders. SuperNSPs are compressed like any other NSP, the result is a single NSZ with all the titles inside, and every file is checked before the original is deleted.

About other ways: with nsz as it is today, the workaround is to split the SuperNSP into one NSP per title first and compress those. You can split it with Switch Library Manager Web (Compress > Split) or with NSC_Builder, and if you want everything in one file again afterwards you can make a pack from the compressed files. Once my fix is merged nsz should handle them directly, but that depends on nicoboss.
 
>About other ways: with nsz as it is today, the workaround is to split the SuperNSP into one NSP per title first and compress those

This is not an option for me. I actually have the original split files, but the entire *purpose* for me to run SuperNSPs in NSZ format is so that eden on android or PC can run them natively. I thought I saw something about this in the latest branch.
Do you know if Eden for Android and/or PC work to run NSZ natively?

Thanks again for the responses and support. I am definitely going to check out your app.
 
From what I can find, Eden doesn’t run NSZ directly yet in its main version. There’s a pull request in progress that adds it (eden-emu/eden#4552), but it’s still marked as work in progress and isn’t merged. Maybe that’s what you saw.

One important detail if it does get merged: only block-compressed NSZ (the ones made with nsz -B) and XCZ would run directly from the game list. A normal NSZ (“solid”, what nsz makes by default) could only be installed to the emulator’s NAND, not run as it is. That makes sense, since an emulator needs to read any part of the game without decompressing the whole file, and only block compression allows that.

So for your use case you’d want your SuperNSPs compressed in block mode. With nsz that runs into the same multi-ticket bug I found, so it would need my fix too. I’ll keep an eye on that Eden PR.

With so many questions about compression lately, I think I’ll start a separate project on my GitHub just for the compression side. That way I can work on it and test it on its own, without depending on the library manager. I’ll post here when there’s something to try.
Post automatically merged:

Quick update for those who asked about compression: I've split the compression part of the manager into its own program, NXPress. It's a single file for Windows, macOS and Linux, with a window and a command line that takes the same options as nsz.

It compresses SuperNSPs with several tickets (the case where nsz fails right now), can write NSZ in blocks for emulators, decompresses XCZ to XCI, and can pack a game with its update and DLC into one SuperNSP or into its own XCI.

Download: https://github.com/DeLFuS77/NXPress/releases/latest
New thread with all the details: https://gbatemp.net/threads/release...sp-nsz-compatible-windows-macos-linux.685719/

If you want to give it a try, I'd really appreciate it. I've tested it with DBI, so feedback from Tinfoil, Awoo, CyberFoil or Sphaira users would help a lot, and so would anyone with big SuperNSPs. The library manager keeps working as before. Any questions about NXPress are better asked in the new thread so this one stays about the manager.
 
Last edited by DeLFuS77,
  • Like
Reactions: snuffbot1
I am going to test this until my brain explodes. Expect my involvement in this project. I'm tracking your git now.

Edit: provided first feedback. Much more coming but this app is incredible. It compressed my entire collection like a hot knife through butter 🧈
 
Last edited by switchsv,

Site & Scene News

New Hot Discussed User Submitted