Short answer
Stop the server, zip the whole world folder, upload the zip into the server folder, unzip it so it sits next to server.properties, and check that level-name names it. A wrong level-name is the reason uploads "do nothing": the server generates a fresh world instead.
Uploading a world is a file copy with one trap. The server decides which world to load from level-name in server.properties, so an upload that lands in the right place under the wrong name is a new empty world, and it looks exactly like the upload failing.
This guide covers moving a world from your own machine or from another host: how to package it, where it goes, the version check that decides whether it can load at all, and how to tell a successful upload from a silent one.
Before you start
- File access to both the source world and the destination server
- The Minecraft version the world was created with
- Both servers stopped while you copy
1. Stop the server and check the version first
The world must not be running while you copy it. A world copied while the server is writing to it contains half-saved chunks, and the damage shows up later as terrain that is wrong or missing.
Check the Minecraft version the world was made on. A world can be loaded by that version and the ones after it; it cannot be loaded by an older server. If your server is older than the world, upgrade the server software first.
.minecraft/saves/<world name>/
level.dat the world metadata, including the version it was made on
region/ the chunks, in .mca files
playerdata/ inventories and positions
entities/ entity data
datapacks/ data packs in use
stats/ per-player statistics2. Package the world as a zip
Zip the folder itself, keeping the folder as the top level inside the archive. Both the zip and the destination panel usually handle this, and a zip of the contents without the folder is the other common cause of an upload that lands in the wrong place.
Check the archive before uploading: unzip it into an empty folder on another machine and confirm the world opens. A truncated archive is worse than a rejected one, because it fails after you have deleted something.
# from the saves folder, so the zip contains the world folder itself
zip -r my-world.zip MyWorld
unzip -l my-world.zip | headCompress-Archive -Path .\MyWorld -DestinationPath .\my-world.zip3. Upload it and put it in the right place
Upload the zip into the server's file manager and extract it there, so the world folder ends up beside server.properties, plugins and world. Not inside world, not in a subfolder: beside them.
If your panel extracts zips itself, use that. If it only uploads files, upload the zip and run an extract command in the console or over SFTP.
server root/
server.properties
server.jar
MyWorld/ <- the uploaded world
plugins/
logs/4. Point level-name at it and start
level-name in server.properties tells the server which folder to load. It defaults to world, so an upload into a folder called MyWorld loads nothing and the server generates a new world instead. Set level-name to your folder's exact name, with the server stopped.
Start the server and read the console. The line Preparing level "<name>" names the world it is loading; Preparing spawn area means it found it. A world that loads slowly the first time is normal, since the spawn chunks are being written for the first time.
level-name=MyWorld[12:31:02 INFO]: Preparing level "MyWorld"
[12:31:04 INFO]: Preparing spawn area: 89%
[12:31:09 INFO]: Done (14.882s)! For help, type "help"5. Verify in game, then open it up
Join and look around: the terrain, your base, your chests. A world from another version may open with newer blocks missing their data, which looks like holes in structures built with them. That is expected when moving forward in versions, and it does not reverse.
Then check the other things that live with the world: the whitelist, the player permissions and any plugins that store their data in the world folder. A plugin with per-world data will not find it in a new folder until it has read it once, which it normally does on first start.
Good to know
- Uploading a world between different server software works, because the format is the same. Paper and Purpur read a vanilla world without conversion.
- An upgraded world cannot be downgraded by uploading it to an older server. The block and entity data the newer versions wrote is not something the older server can read.
- Keep the zip until the server has run a session. Restoring the old world is a matter of deleting the folder and extracting again.
- Backing up is the same packaging work on a schedule, and restoring is the reverse.
Common questions
Why did my server generate a new empty world after I uploaded?
Because level-name in server.properties names a folder that does not exist. The server creates that folder and a fresh world in it. Rename the folder to match level-name, or set level-name to the folder's name, with the server stopped.
Can I upload a world to a different Minecraft version?
Forward, yes: a world loads on its own version and later ones. Backward, no. The data newer versions write is not something an older server understands.
Where does a Minecraft world folder live?
On your own machine it is in .minecraft/saves/<name>/ (Windows: %APPDATA%/.minecraft/saves). On a server it sits beside server.properties, and level-name decides which folder the server loads.
Do I need to upload player inventories too?
They are inside the world folder, in playerdata, so uploading the whole folder includes them. Uploading only region brings the map and none of the players' data.
Can I move a world from Paper to vanilla?
Yes, the world format is the same. Stop both servers, move the folder, and start the vanilla server. Plugins are separate from the world, so their data does not travel with it.
Sources
Official documentation this guide was checked against.
Rather not run this on your own machine? PufferHost gives every player a free Minecraft server with 3 GB of RAM and 10 slots. Create a free server.