Skip to content

Web Transfer

Web Transfer turns your device into a temporary web server so you can move games, saves, and other files over Wi-Fi from any browser on your computer — no cable required.

From the Library, tap the menu and choose Web Transfer. Every time you open it, Sakura starts a fresh server with a new random 6-digit PIN.

Once the server starts, the popup shows:

On your computer’s browser, open {URL} and enter this PIN {PIN}

Along with a reminder: “Keep this window open during transfers. The device must stay on the same Wi-Fi as your computer.”

Open that URL in any browser on a computer on the same network, and enter the PIN to connect. If the server fails to start, you’ll see an error with a Retry button.

The browser exposes four roots:

  • Games — where you import new games; also readable/writable
  • Saves — read/write, though importing a save here always goes through the structured Saves tab (see below), not a raw file drop
  • Backups — read and delete only
  • Documents — your device’s general Documents folder

Drag and drop a file anywhere in the Files tab to upload it. Dropping onto the Games root shows an extra hint that archives can be imported automatically.

When you drop an archive onto the Games root, a chooser asks “How should ‘{name}’ be transferred?” with three choices:

  1. Extract here & send (recommended) — your computer extracts the archive in the browser and streams the extracted files to the device, so the device only ever needs disk space for the extracted game (not the archive too). Not offered for .exe files.
  2. Send archive as-is — the archive is uploaded whole and the device extracts it, so the device needs space for both the archive and the extracted result. This is the default (and only) option for .exe installers.
  3. Upload as a plain file — no import happens; the file is just stored as-is.

Password-protected archives prompt for the password in the browser: ”‘{name}’ is password-protected. Enter the archive password:”. Any single top-level wrapper folder in the archive is stripped automatically before it’s sent, so you don’t end up with a doubly-nested game folder.

Once on the device, import follows the same detection pipeline as an in-app import (see Importing Games) — the same “not a game” message applies: “This doesn’t look like an ONScripter game (no 0.txt / nscript.dat / arc.nsa / script.file found).” The best icon candidate is applied automatically; there’s no Customize step for web imports.

  • Recognized NSIS, Inno Setup, and self-extracting installers are imported normally.
  • A CAB self-extracting .exe shows: “This .exe is a CAB self-extracting archive, which iOS can’t unpack. Extract it on a computer and repack the game as zip or 7z.”
  • An .exe with no detectable archive payload shows: “No archive payload found in this file. Extract it on a computer and repack the game as zip or 7z (or upload it as a plain file from the Files tab).”

Plain file uploads run up to 3 at a time, are resumable, and auto-retry up to 3 times (showing “Reconnecting…” if the connection drops mid-upload).

Game imports, however, are queued and run one at a time — a queued import shows “Queued — waiting for the current import”, and the active one shows “Importing…”. Plain uploads and downloads aren’t affected by this queue and stay concurrent.

If the device runs out of space mid-transfer, you’ll see “Out of disk space”: “The device ran out of disk space while transferring ‘{name}’. The transfer was stopped and its temporary files were removed — free up space and try again.”

iCloud placeholder files not yet downloaded to the device show a ”☁ not downloaded” badge with a “☁️ Download” action.

The Saves tab lists your games so you can pick one and manage its saves remotely:

  • Per-save actions: Backup (confirms “Backup completed.”), Delete, and download/export.
  • ↑ Import save uploads a save file for the selected game, confirming with a “Save imported” toast. See Importing Saves for the accepted file types.

Each row shows the folder name (with a ☁ prefix for iCloud folders) and a summary like “{saves} saves · {games} games”. From here you can:

  • Create a new folder, choosing Storage location: “Local (this device)” or “iCloud”.
  • Rename a folder.
  • Link save folder to relink which folder a game uses.

See Global Saves for more on how save folders and links work.

If the device sleeps or the app is backgrounded, the browser shows: “Device sleeping or app in background — reconnecting…”. If the connection is fully lost, you’ll see “Disconnected”: “Connection to the device was lost. Make sure the app is open on the device — this page will reconnect automatically.”

Closing the Web Transfer popup on the device is the only way to stop the server — this cleans up any staging files and triggers a final library rescan.

For connection or transfer issues not covered here, see Import Problems and Storage.