How to Upload a Minecraft World to Your Server

Learn how to upload a Minecraft world to a server using ZIP or SFTP, set level-name correctly, and fix Java and Bedrock world-loading problems.
A blocky Minecraft landscape and glowing archive moving toward a dedicated server.

How to upload a Minecraft world to a server depends on whether you use Java Edition or Bedrock Edition, but the process is straightforward: stop the server, transfer the correct world folder, and point level-name at it. This guide covers ZIP uploads and SFTP, including the folder paths and fixes for the common “new world loaded” problem.

What you need before you start

Prepare these items before changing any server files:

  • The world you want to move, with the game fully closed so its files are not changing during the transfer.
  • The same edition on both sides. A Java world belongs on a Java server; a Bedrock world belongs on a Bedrock Dedicated Server. They are different world formats.
  • SSH or SFTP access to the server, including its IP address, port, username, and password or SSH key.
  • A backup of the existing server world. Do not delete the old folder until the replacement has loaded and you have checked it in-game.
  • A ZIP utility such as 7-Zip, WinSCP, or FileZilla. SFTP is usually the better choice for a large world because it transfers directly over SSH.

If you are still choosing the machine, a Buffalo Linux VPS gives you full root access, a dedicated IPv4 address, KVM access, and 4 GB of reserved RAM for $9.99/mo. See the Buffalo Linux VPS plans and the game server provider checklist before ordering.

Step 1: Find your world folder

Why: Locate the complete world before transferring anything.

Java Edition

On Windows, Java single-player worlds are normally in:

%AppData%\.minecraft\saves

Each folder inside saves is a separate world. On macOS, check ~/Library/Application Support/minecraft/saves; on Linux, check ~/.minecraft/saves. Minecraft’s official Java world-transfer instructions document the Windows and macOS locations.

Open the folder for the world you want. Its top level should contain level.dat, along with folders such as region, playerdata, and possibly datapacks. The folder name will become the server’s level-name unless you rename it.

If the world is already on another Java server, use that server’s world folder instead of the local saves folder. It is normally the folder named by level-name in that server’s server.properties file.

Success looks like: You can identify the correct folder and see level.dat inside it.

Bedrock Edition

A Bedrock world exported from the game usually arrives as a .mcworld file. Treat it as an archive and extract it to a normal folder before uploading it. The folder should contain level.dat and the other Bedrock world files.

For Bedrock on Windows, local worlds are stored under:

%appdata%\Minecraft Bedrock\users\<user-id>\games\com.mojang\minecraftWorlds

The folders may have short, unfamiliar names. Open each candidate and read levelname.txt to identify it. Microsoft’s Bedrock Dedicated Server documentation confirms this location and explains how the folder is mapped to level-name.

Step 2: Stop the server and make a backup

Why: Prevent live writes and keep a rollback copy.

  1. Open the server console or connect over SSH.
  2. Send the server’s normal stop command. For a Java or Bedrock console, this is usually:
   stop
  1. Wait for the process to close and for the console to return to the shell.
  2. In the server directory, rename the existing world folder instead of removing it. For example:
   mv world world-before-import

If the current Java world has another name, replace world with that name. For Bedrock, preserve the existing folder inside worlds/.

Renaming gives you a quick rollback. If the imported world does not load, you can stop the process, restore the old folder name, and change level-name back.

Success looks like: The server is stopped and the old world has a safe backup name.

Step 3: Zip the world correctly

Why: Preserve every world file and avoid a nested-folder import.

For Java, open the world folder and confirm that level.dat is at its top level. Then compress the folder itself. With 7-Zip on Windows, right-click the folder, choose 7-Zip → Add to archive, select ZIP, and create a file such as my-world.zip.

For Bedrock, extract the .mcworld archive first if necessary, identify the folder containing level.dat, and then compress that folder into my-world.zip. Avoid special characters in the final folder name; MyWorld or survival-2026 is easier to use in server.properties.

There are two valid ZIP layouts:

my-world.zip
└── MyWorld/
    ├── level.dat
    └── region/              # Java example

or, if you extract the archive into the server directory:

server-folder/
└── MyWorld/
    ├── level.dat
    └── region/

The important check is that the final world folder—not an accidental second nested folder—contains level.dat.

Success looks like: The archive extracts to one world folder with level.dat at its top level.

Step 4: Upload the world by SFTP

Why: Transfer large archives directly over the server’s SSH connection.

WinSCP or FileZilla

  1. Install WinSCP or FileZilla on your computer.
  2. Create an SFTP connection using the server IP, port 22, your server username, and your password or SSH key.
  3. On the remote side, open the directory containing server.properties, the server JAR or Bedrock executable, and the other server files.
  4. Upload my-world.zip to that directory. Do not upload it into a random home folder unless that is where your server runs.
  5. If the client supports extraction, extract the ZIP in place. Otherwise, connect over SSH and run:
   cd /path/to/minecraft
   unzip -q my-world.zip
  1. Check the resulting path. For Java it should look like /path/to/minecraft/MyWorld/level.dat. For Bedrock it should look like /path/to/minecraft/worlds/MyWorld/level.dat.

Command-line alternative

If the world archive is on your computer and you know the remote path, you can upload it with scp:

scp my-world.zip username@SERVER_IP:/path/to/minecraft/

Then use SSH to extract it. Replace the example username, IP address, and path with your own values. Do not paste a real password into a command or article screenshot.

Success looks like: The archive or extracted folder is in the server directory you will use for level-name.

Step 5: Set level-name to the new folder

Why: Tell Minecraft which uploaded folder should be active.

Java server

Put the world folder beside server.properties, then set:

level-name=MyWorld

The value must match the folder name. If the folder is /path/to/minecraft/MyWorld, level-name=world will make the server generate or load a different folder instead.

Bedrock Dedicated Server

Put the folder inside worlds/ and use the same name in the property:

level-name=MyWorld

That means the Bedrock path should be /path/to/minecraft/worlds/MyWorld. Microsoft specifically notes that the level-name value is the folder name and that the match is case-sensitive. The Minecraft server.properties reference also documents how level-name selects the active Bedrock world.

Save the file, then confirm that the account running Minecraft can read the folder and its files. If you uploaded with root but the server runs as another user, correct the ownership before starting it, for example:

sudo chown -R minecraft:minecraft MyWorld

Use the actual service account and path for your installation. Do not run this example unchanged if your server uses a different user.

Success looks like: level-name exactly matches the uploaded folder, including capitalization.

Step 6: Start the server and verify the import

Why: Confirm that the server opens the transferred world, not a generated replacement.

Start the server using the same command or service you normally use. Watch the console for the world-loading messages and wait until it reports that the server is ready.

Join using the same edition and a client version compatible with the server. Check a few landmarks, your inventory, player positions, the Nether and the End, and any important farms. If you use datapacks, mods, plugins, resource packs, or behavior packs, verify those separately; they may require matching server-side files beyond the world folder.

Do not delete world-before-import yet. Keep it until you have joined successfully and confirmed that the imported world is the one you expected.

Success looks like: You join the expected world and can see its landmarks, inventory, and dimensions.

Fix: the server loads a new world instead

This is almost always a path or spelling issue. Stop the server and check these items in order:

  1. Print the configured value and compare it with the folder name:
   grep '^level-name=' server.properties
   ls -la
  1. For Bedrock, list the worlds directory instead:
   ls -la worlds/
  1. Make sure the world folder is not nested as MyWorld/MyWorld/level.dat.
  2. Confirm that level.dat exists in the folder named by level-name.
  3. Check capitalization, spaces, and punctuation. MyWorld, myworld, and My World are different names on Linux.
  4. Confirm that you uploaded a Java world to a Java server or a Bedrock world to Bedrock Dedicated Server.

If the server generated a new folder, stop it before doing more testing. Move the generated folder aside, correct the path, and start again so the new folder does not hide the original problem.

Moving a world between servers

To move a world from one VPS to another, stop the old server, create a fresh ZIP backup, and upload it to the new server over SFTP. Use the same edition and a compatible server version, then repeat the level-name step on the destination.

For a safer cutover, test the copied world with a temporary server directory first. Once it loads correctly, point your normal service at the tested directory and keep the original ZIP as a rollback copy. If you are comparing a home computer, VPS, and dedicated server for this setup, see Home Game Server vs VPS vs Dedicated Server.

FAQ

Can I upload a Java world to a Bedrock server?

Not as a normal folder copy. Java and Bedrock use different world formats, so use a compatible server edition or a properly supported conversion tool before attempting a migration.

Where does a Java world go on a server?

Upload the complete world folder beside the Java server’s server.properties file. Set level-name to that folder’s exact name, and confirm that level.dat is directly inside it.

Where does a Bedrock world go on a server?

Place the world folder inside the Bedrock Dedicated Server’s worlds/ directory. Set level-name to the exact folder name, including capitalization.

Why does my server say the world is missing?

Check for a nested folder, a misspelled level-name, or a mismatch between Java and Bedrock. The most useful test is to verify that the selected path contains level.dat and that the server user can read it.

Should I upload the ZIP or the extracted folder?

Upload a ZIP when your panel can extract it on the server or when the world contains many files. Use SFTP to upload the extracted folder when the panel cannot unpack archives, then check the final path before changing level-name.

Samrat Ghosh
Written by

Samrat Ghosh

Founder & Infrastructure Engineer

Samrat Ghosh is the founder of VPSLake, where he builds and runs the remote desktop and VPS hosting infrastructure the company is built on. He writes hands-on guides about RDP, Windows Server, VPS management and secure remote access - the practical documentation he wishes had…

Previous Article

How to Install Docker Compose on AlmaLinux 8

Next Article

How to Install Docker Compose on AlmaLinux 9

Write a Comment

Leave a Comment

Your email address will not be published. Required fields are marked *

Subscribe to our Newsletter

Subscribe to our email newsletter to get the latest posts delivered right to your email.
Pure inspiration, zero spam ✨