Rearrange your Nintendo 3DS HOME menu from your PC.
Download · What it does · What you need · Writing to the card · Troubleshooting · Running from source · How it works · Support
Organizing icons on the console is one stylus drag at a time. 3DSort edits the layout on the SD card instead: put the card in your computer, drag games, folders and badges around with a live preview of the console screen, then write it back and boot the console.
Download the latest release:
a portable .exe for Windows, a .app for Apple Silicon Macs and a tar.gz
for Linux. No installer, no Python.
- Drag and drop anything: games, system apps, folders, badges, the Game Card slot. Drop one tile on another to swap them, or on an empty cell to move it
- Select many titles at once (Shift-click a range, Ctrl-click or Cmd-click to add) and move them together onto a title, an empty cell or a folder
- Sort A to Z, Z to A or by release date, DSiWare and NDS forwarders included
- Create, rename and delete folders, and give them a badge as icon
- Place the badges from your collection on the grid (3DSort does not install badges; tools like GYTB do)
- Live preview of the console screen for every view setting
- Undo, redo and reset. Nothing touches the card until you hit WRITE and confirm, and every write takes an automatic, restorable backup first
- Unwraps gift-boxed icons and keeps your HOME menu theme on every write
- A 3DS with custom firmware (Luma3DS) and GodMode9
- A PC with an SD card reader. On Windows 10, possibly the WebView2 Runtime (Windows 11 has it; the app tells you if it is missing)
The first run walks you through the rest: pick the SD card, run the
3DSort_dump script the app puts on the card, press verify. That script copies
the console keys (boot9.bin, movable.sed) and the HOME menu save, so you
never copy them by hand. The INSTRUCTIONS tab keeps the full procedure.
Regions: USA, JPN and EUR are tested on real consoles; CHN, KOR and TWN should work but have not run on one.
Games and badges live on the SD card, so those writes are done when the app
says so. System apps and folders live in a NAND save: after writing, run
3DSort_inject in GodMode9. It checks every copy with SHA-256 and aborts
rather than write anything inconsistent.
Important
Do not boot the HOME menu between writing on the PC and running
3DSort_inject. If you do, the script refuses to run: dump again and retry,
nothing is lost.
An interrupted write (card pulled, power cut) shows up in SYNC, where you can complete it or restore the backup.
- Region-changed console (CTRTransfer): the card keeps the layout from before the change. 3DSort shows both with their contents, suggests the most recent one and asks which is yours; only the one you pick is ever written. You can change it later in SYNC.
- "3DSort needs the Microsoft Edge WebView2 Runtime": install it from the link on that screen, then reopen 3DSort.
- "3DSort could not start" or "Still waiting for 3DSort":
open an issue with the text on
screen. On Linux, also run
./3DSortfrom a terminal and include its output. - Old keys: always let
3DSort_dumptakemovable.sedfrom the console. A key from an old NAND backup stops working after a format or system transfer.
pip install -r requirements-dev.txt
python app.py # native window, real SD card
python app.py --serve --mock --mock-badges # browser, synthetic data
python -m pytest tests -q # 269 tests, no console needed
Tests that need real console keys skip themselves, and a guard test fails if
anything ever writes to a real SD card. node tools/test_spatial_ui.cjs and
node tools/test_multiselect_ui.cjs drive the UI in a headless browser.
- Windows:
pyinstaller 3DSort.spec, thendist\3DSort.exe --selftest - macOS (Apple Silicon): built by GitHub Actions; not notarized, so
right-click and Open on first launch (or
xattr -cr 3DSort.app). From source:tools/build_save3ds_macos.sh, thenpyinstaller 3DSort.macos.spec - Linux (x86_64): the release needs glibc 2.39+ and WebKitGTK
(
sudo apt install gir1.2-webkit2-4.1 libwebkit2gtk-4.1-0). From source:pip install pywebview[gtk]and a save3ds built withbash tools/build_save3ds_macos.sh. See docs/LINUX_TESTING.md
The HOME menu layout lives in an encrypted archive on the SD card.
save3ds extracts and reimports it with
your console's keys; 3DSort edits SaveData.dat and preserves every byte it
does not understand. Folders and system app positions live in Launcher.dat
on the NAND, reached through the GodMode9 dump and inject scripts. Badges live
in a third archive, where only the placement table is rewritten.
Stable for daily use. The full cycle (write, NAND inject, restore) is validated on two USA New 3DS consoles, on a New 2DS XL from macOS, and on a JPN-to-USA region-changed console.
GPL-3.0, the same as Cthulhu, whose bulk unwrap mechanism 3DSort reimplements.
- save3ds by wwylele, which handles the 3DS crypto and filesystem
- 3dbrew for the file format documentation
- Cthulhu by Ryuzaki-MrL, which showed how the gift-wrap flags work
- GYTB by MrCheeze and Simple Badge Injector by AntiMach, which put badges on the test console
- @appleforever11: macOS support, validated on a real New 2DS XL
- @ratatabananana-bit: region-changed (CTRTransfer) console support, validated on hardware
- @krazykuzon-hue: multi-select, and the stale dump cache fix
If 3DSort saved you an afternoon of dragging icons around, you can buy me a coffee on Ko-fi.


