App Details
If you appreciate the dev's work, please consider supporting development through a donation. Any contribution is appreciated, but never required! Creating and maintaining these tools takes a lot of time and effort. Donation link: https://ko-fi.com/W7W51JF9W6
Rewritten from the ground up:
JKSV's rewrite aims to accomplish the following:
Clean up and modernize the codebase: The original master branch code became a mess over time and is extremely difficult to navigate and maintain.
Zero global variables: Everything is encapsulated via interfaces. This alone makes the rewrite easier to work with and much less fragile in comparison to the original.
Improved error logging: The master branch did an extremely poor job at logging errors. The rewrite corrects this greatly. Each error is logged with the file, line, and column making errors and bugs easier to track down.
Designed with translations in mind: Unlike the original, translations weren't a feature that were tacked on later. This also made the original difficult to maintain.
Use standard formats: JKSV originally used a custom file parser for data files. This has been removed in favor of JSON using libjson-c.
Uses FsLib instead of fs_dev.c:
All file operations are handled using FsLib. FsLib is a C++ wrapper I wrote around libnx's FS API.
FsLib also handles SD card redirection so libraries that depend on C standard I/O can read and write files to and from the SD card.
More convenient Google Drive login.
Improve WebDav Support and code.
Title Cache: Titles found on the system are cached the same way JKSM was. This improves boot time greatly on higher Switch firmware versions.
The title cache is also auto-invalidating. No need to manually update it like JKSM on 3DS.
Proper use of C++ features:
Polymorphism and state patterns instead of scattered global variables and logic.
Smart pointers to enure no memory leaks can occur.
C APIs wrapped in smart pointers and classes to ensure proper cleanup.
Templated task system to reduce code duplication and complexity.
SDL textures are all wrapped and managed by a central texture manager.
JKSV's rewrite is a ground-up rewrite. It shares none of the original's code at all. Everything has been reworked and rewritten.
Features:
Supports all save data types used on Nintendo Switch:
Account (User)
System
BCAT
Device / Shared
Temporary
Cache
System BCAT
Export Options:
Standard, unpacked folders for editors.
ZIP for better compatibility.
NOTE: ZIP is required and enforced for cloud backup!
All At Once:
JKSV can backup all the save data on the system or for individual users at once.
Cloud Support:
If configured, JKSV currently supports:
Google Drive
WebDav
JKSV can be configured to upload these automatically.
Create Save Data:
JKSV can create save data for any title on your system by itself. No need to start a game to import data for it.
JKSV can create save data for every title found on your system at once for a single user.
SVI File Support:
Import and create save data for titles not installed on your system.
NOTE: These are not properly installed to the system. Use at your own discretion!
Resize save data:
JKSV can extend save data to any size you would like. This is useful for games such as Minecraft.
Cleanup Tools
JKSV features functions and tools to make cleanup less of a chore compared to Nintendo's Data Management and confirmation prompts:
Just hold A for three seconds to:
Delete save data for individual games.
Delete all save data for a single user at once.
Statistics:
View basic data and statistics about the save and title.
Customizable:
JKSV features many options to customize it to your liking.
Safety:
JKSV can require holding to complete destructive operations or be set to make quick automatic backups upon restoring backups.
Screenshots
Changelog
v09/13/2025
JKSV 09/13/2025
This release addresses the following issues:
- A bug in string sanitation logic has been corrected that would result in the final character being replaced with a null terminator.
- Non-safe path characters are now ignored instead of replaced with spaces. This prevents duplicate spaces in safe titles and nicknames.
- As a result, some titles may not match their previous output directories. I understand this might be inconvenient, but the change helps keep paths cleaner and more consistent, and it may also improve compatibility with certain WebDAV implementations.
What's new:
- Korean language text has been updated thanks to @DDinghoya!
- State transition logic has been consolidated into a single class.
I know this may be inconvenient, and I truly appreciate everyone’s patience. I’m doing my best, but I’m only human.- If you notice anything wrong or off at all, don't hesitate to report it.
v09/08/2025
JKSV 09/08/2025:
This release addresses the following issues with the previous: https://github.com/J-D-K/JKSV/releases/tag/08%2F25%2F2025 release:
- Empty directories in ZIP backups are now preserved correctly.
- Directory entries in ZIP backups are now handled properly.
- This resolves a bug where ZIPs created by other programs could fail to restore.
- Available journaling space is now fetched directly from save data before falling back to default NACP values.
- Path sanitation logic has been corrected so Pokémon titles now use the same output path as in the original JKSV.
- Addresses a small oversight where icons would fail to shrink back to their original size.
What's new:
- File Mode has been implemented:
- Access it by highlighting a game, pressing X, and choosing Open in File Mode.
- Extra features such as browsing various filesystems on the Switch have been implemented now.
- NOTE: File Mode in the rewrite functions differently from the original JKSV in a few ways. It may take some adjusting.
- FsLib has been updated to be fully RAII-compliant.
- Various small tweaks and improvements across JKSV and its libraries.
Thanks to:
@qazrfv1234 for updating the Traditional Chinese translation!
Feedback:
If you encounter bugs, issues, or have feature requests, feel free to report them here.
Support
If you appreciate my work with JKSV and would like to show support, you can. It's never required, but I do appreciate it! Thank you so much Nick and Impeeza! I really appreciate it!

JKSV 08/25/2025
This version of JKSV has been rewritten from the ground up. It shares none of original version's code. The goal of this was to make JKSV more stable, navigable, and maintainable.
As mentioned, JKSV has been completely overhauled and rewritten.
C++ features: JKSV now makes proper use of polymorphism, RAII, STL containers, and smart pointers throughout.
State system: Replaces the old mess of global variables to track state. This alone makes the code far easier to follow and maintain.
Resource management: No more manual memory management. No more memory leaks.
C APIs: All C library APIs are wrapped in classes and smart pointers. This ensures proper cleanup and makes the code easier to work with.
Error logging: Errors are logged with file, function, and line number, making issues far easier to track down.
Code structure and quality: Overall readability and maintainability have been drastically improved.
Cached boot.
Faster startup: JKSV now caches title data to improve boot times. On recent firmwares, Nintendo’s changes have slowed down NsGetApplicationControlData. Caching title information resolves this issue.
Automatic invalidation: JKSV detects and rebuilds the cache itself whenever new titles are detected. Unlike JKSM on 3DS, there’s no need to manually refresh this yourself.
Remote storage heavily reworked.
System overhaul: The entire remote storage system has been reworked from the ground up.
Expansion: The new design makes it simpler to add support for additional services in the future.
Important note: Adding support depends on the information a service requires. I’m not handing over all of my personal info just so JKSV can support it.
Overhauled WebDav code.
Completely reworked: The WebDav code has been rewritten from the ground up.
Namespace agnostic: Instead of slicing and splicing namespaces to find XML tags, the new code ignores them entirely. This eliminates unnecessary string allocations and improves compatibility.
Recursive fetching: Your entire WebDav listing is now fetched and processed recursively on boot, rather than on-demand. This eliminates UI pauses when servers respond slowly.
Consistency: Changing the output path for a title on your Switch now also updates the folder on your WebDav server automatically. This should have been like this in the first place...
Instructions for setting up WebDav can be found here.
Reworked Google Drive code.
Major cleanup: The Google Drive integration has been heavily reworked, fixing various issues and inconsistencies.
Full title support: Folder names once again use full UTF-8 titles. This was changed with the previous WebDav implementation and has been reverted.
New login method: Instead of relying on the Switch’s built-in web browser, JKSV now uses the Limited Input method. You can now log in with your phone or another device instead.
Instructions for setting up Google Drive can be found here.
Reworked file handling logic.
Complete overhaul: All file handling logic has been rewritten from the ground up.
Bug fix: This addresses a rare issue where JKSV could get stuck at the end of a file transfer.
Reworked UI Code.
Complete overhaul: All UI code and elements have been rewritten and fine-tuned.
Familiar Layout: The interface remains familiar, but everything underneath is completely different.
Better translation support: The UI was designed from the ground up with translations in mind. In the original, this was just tacked on later.
Text Menu (JKSM 2016) Mode Returns: For fans of the original JKSM on 3DS, JKSV now supports JKSM Mode where titles are listed using text menus instead of an icon grid array.
Additions.
Auto-Upload: JKSV can now automatically upload backups to your selected service and remove them from the SD card.
Controllable compression level: You can set the compression level used when creating zipped backups.
Text Menu (JKSM) mode: Toggle between icon grids and text menus for displaying titles.
Toggleable System Saves: You can now toggle whether scanning, loading, and display Device, BCAT, Cache, and System is desired. Disabling all of them also improves boot times.
JKSV now includes a metadata file in backups containing information about the save. This improves accuracy and reliability when restoring saves.
Notes concerning missing features.
Include Device Saves with Users hasn't been implemented yet. It requires some careful consideration and planning.
File Mode is not available yet.
Filtering paths from backup and deletion is not yet implemented.
Additional Notes.
Most backups from the original JKSV are compatible. Exceptions include titles that extend save data, which are now handled correctly in the rewrite.
The SVI format has been revised. SVI files from the original JKSV are not compatible with this rewrite.
The translations provided are all completed by AI. If you have revisions or would like to fix them, feel free to do so!
Some work may still be needed regarding cache type saves and handling them.
JKSV's rewrite does not use the same configuration file as the original. You will need to reconfigure it.
Extra, extra notes:
Uses FsLib, a C++ wrapper library I wrote around 3DS and Switch FS calls.
More control: FsLib allows me finer control over file operations.
For example, if the final size of a file is known ahead of time, FsLib can skip redundant calls to extend the file during writes. This speeds up file transfers.
Paths are standardized upon construction to ensure compatibility with the Switch's FS.
Improved error handling and logging: Every operation returns whether it succeeded. If not, FsLib records an internal error string with the location and error code for easier debugging.
Because of this, the option Use FS Commands Directly has been removed as it serves no purpose anymore.
Uses SDLLib, a C++ wrapper library I wrote containing reusable functions all of my projects share.
Central Texture Manager: All textures are now loaded, tracked, and freed by a single manager, eliminating duplicate handling.
Surfaces & Textures wrapped: SDL Surfaces and Textures are wrapped in smart pointers or classes, ensuring proper cleanup.
Improved text handling: Text handling has been reworked and improved compared to the original JKSV implementation.
TL;DR
This is effectively a completely different program. It looks like JKSV, runs like JKSV, but it's a completely different beast.
Support
I don’t expect it, and it’s absolutely not required, but rewriting JKSV to be the best it can be has, and still is, taking a lot of time and hard work. If you’d like to show your appreciation, you can now, and I truly do appreciate it.
URL: https://ko-fi.com/W7W51JF9W6