Before You Start: World Format Compatibility
Minecraft worlds are stored on disk in a format called Anvil, which has remained largely backward-compatible across versions. However, there are important caveats before you move a world. A world created on Java Edition cannot be used on Bedrock Edition and vice versa: the two editions use completely different storage formats and the chunks are not interchangeable without a conversion tool. This guide covers Java Edition server-to-server transfers.
Within Java Edition, you can generally move a world from an older version to a newer version and Minecraft will upgrade the chunks on first load. Going backwards (newer version to older) is not supported and will cause errors or corrupt the world. If both servers are running the same Minecraft version, there are no compatibility concerns at all. Also note that if your world uses custom structures or blocks from mods, those mods must be present on the new server or those blocks will disappear.
Downloading Your World via SFTP
Stop the server before copying the world to ensure all chunks are saved to disk and no data is mid-write. An SFTP client like FileZilla or WinSCP works well for this. Connect to your current server's SFTP endpoint using the credentials from your server panel.
The world folder is typically located in the server root directory and named world by default. On a standard Paper or Spigot server, there are three world folders:
world: the overworldworld_nether: the netherworld_the_end: the end dimension
Download all three folders to your local machine. For a large world (several gigabytes), compress them into a ZIP or tar.gz first using the server panel's file manager if it supports compression, then download the single archive. This is much faster than downloading thousands of small chunk files over SFTP individually.
Uploading to the New Server via SFTP
Stop the new server if it is running. Connect to the new server via SFTP and navigate to the server root directory. Upload your three world folders (or the archive and then extract it). If the new server already has existing world, world_nether, and world_the_end folders from a first run, delete them before uploading yours to avoid merging old and new chunks.
If you compressed the worlds into an archive, use the server panel's file manager to extract them in place. The resulting directory structure should match what was on the original server: the world folder should contain a region/ subfolder with .mca chunk files, a level.dat file, and other data folders.
Setting the Correct World Name in server.properties
Open server.properties in the new server's root directory. Find the level-name setting and make sure it matches the name of the folder you uploaded:
level-name=world
If you uploaded a world folder named mysurvivalworld instead of the default world, update this line accordingly:
level-name=mysurvivalworld
Save the file. The server reads this setting on startup to determine which folder to load as the overworld. For the nether and end, Paper and Spigot automatically append _nether and _the_end to the level name. So if your level name is mysurvivalworld, the nether folder must be named mysurvivalworld_nether. Rename your folders accordingly if needed.
Verifying the World Loaded Correctly
Start the new server and watch the console output carefully. You should see the server log loading chunks without errors. Key things to check:
- No
corrupt chunkerrors during startup. - The seed shown in console matches the original world's seed (check with
/seedin-game). - Spawn point is in a recognizable location from the original server.
Join the server in-game and type /spawn to teleport to the world spawn. Explore the area to confirm the terrain, builds, and structures are intact. If you see blank flat terrain where there should be builds, the chunks likely failed to upload correctly. Re-upload the region/ folder for the affected dimension and restart.
Transferring Player Data
Player inventories, health, hunger, XP, and position are stored in the world's playerdata/ folder, not in a separate location. Each player has a .dat file named after their UUID. If you moved the world folders correctly, player data moves with them automatically.
However, if the new server uses a different plugin for inventory management (like Multiverse-Inventories or PerWorldInventory), those plugins store data separately and you will need to migrate that data according to the plugin's own documentation. For a vanilla or standard Paper server with no inventory management plugins, the playerdata/ folder inside the world directory is all you need.
EssentialsX stores additional player data (homes, nicknames, economy balance) in plugins/Essentials/userdata/ using the same UUID-named files. If you want to preserve homes and balances from the old server, copy that folder as well. LuckPerms stores group assignments in its own database; export it from the old server with lp export backup.json and import it on the new server with lp import backup.json.