Skip to content

How to Move an Existing Minecraft Server to GameServerKings

Move an existing Minecraft Java server to a new host: what to copy, why to stop it first, matching the version, and the checks to run on first boot.

Updated August 19, 2026
Minecraft

Moving a Minecraft server that already has a world, a player base and a plugin set is not the same job as setting a new one up. Nothing needs to be recreated — it needs to be copied intact, in the right order, onto a server running the same software and the same version. This guide covers that move onto a Minecraft server plan, whether your server is with another host or running on a box under your desk.

It is written for Java Edition. Bedrock stores its worlds differently and is covered in Setting up your Bedrock Minecraft server.

Pre-Flight Checklist

Work through this before you copy anything. Every item here is something that, missed, turns a clean migration into a rebuild.

  • Server software and exact version of the old server — paper, purpur, fabric, forge, neoforge or vanilla, and the Minecraft version it runs (26.2, 1.21.11, and so on)
  • level-name from the old server.properties — this is the world folder's name, and it is not always world
  • Plugin or mod list with versions, so you can tell afterwards whether anything failed to load
  • Database credentials for any plugin that uses MySQL
  • A full backup of the old server, taken and downloaded before you touch anything
  • Somewhere to put it — the new server ordered and booted once, so its folders exist
  • A cut-over time you have told your players about

Boot the new server once before you migrate

Starting the new server empty generates its folder structure, eula.txt and a default server.properties, and confirms the jar and version you picked actually launch. You then overwrite that scaffolding with your own files. It is much easier to diagnose "the jar does not start" separately from "my world did not load".

Step 1: Stop the Old Server First

This is the step people skip, and it is the one that costs worlds.

A running Minecraft server does not hold your world on disk in a finished state. Chunks live in memory and are written out over time into region files, each of which begins with a header table pointing at where inside the file every chunk's data sits. Copy a region file while the server is midway through writing it and you get a header that points at data which is not there yet. The copy looks like a normal folder, transfers without error, and fails when the server tries to load those chunks.

The world folder also contains a session.lock file, which exists precisely because two processes must never write to one save at once. Minecraft opens it, writes a single character to it and takes a lock on it; anything else that wants the world has to acquire that lock or give up.

So: run /stop from the console. Mojang's own description of that command is that it "saves all changes to disk, then shuts down the server" — which is exactly the guarantee you want before copying.

If you genuinely cannot stop the server

There is a supported way to take a copy from a running server, and it is not "just copy the folder". Run save-off to pause writes to the level files, then save-all flush to force everything in memory out to disk immediately, then take your copy, then save-on. The wiki describes save-off as doing exactly this — disabling level-file writes "in order to copy them for backup". Never leave save-off on: until you run save-on, every block placed exists only in memory. The full sequence is in Minecraft Server Commands.

Step 2: Work Out What Actually Has to Move

A Minecraft server directory holds a lot of files that are regenerated on boot. You want the ones that carry state or configuration, and you can leave the rest.

Take it What it is
The world folder(s) Terrain, chests, builds, player inventories, the lot
server.properties Your core settings — port, difficulty, view distance, MOTD
ops.json Who is an admin, with their UUIDs and op levels
whitelist.json Your whitelist, if you run one
banned-players.json, banned-ips.json Your ban list. Losing this quietly un-bans everyone
plugins/ Plugin JARs and the per-plugin config folders inside it
mods/ and config/ Modded servers: the mod JARs and their configs
bukkit.yml, spigot.yml, commands.yml, permissions.yml, help.yml Bukkit-family config, on Paper/Purpur/Spigot
config/paper-global.yml, config/paper-world-defaults.yml Paper's own tuning
server-icon.png Your 64×64 server-list icon. Small file, easy to forget
Plugin databases If a plugin stores data in MySQL rather than in its folder
Leave it Why
eula.txt Regenerated on first boot; you accept it again on the new server
logs/ History, not state. Grab it only if you are investigating something
usercache.json A cache of Mojang API data. It rebuilds itself
libraries/, versions/, .paper-remapped/ Extracted and rebuilt by the server on boot
The server JAR itself The new panel supplies its own — see Step 4

Plugin configs are not inside the JAR

A plugin's settings live in plugins/<PluginName>/, not in the .jar. Copying just the JARs gets you every plugin installed and every one of them reset to defaults — ranks gone, homes gone, economy balances gone. Move the whole plugins/ directory, folders included.

The three access files — ops.json, whitelist.json and the ban lists — are worth checking rather than assuming, because nothing warns you when they are missing. Minecraft Whitelist and Ban Management covers what is in each of them.

Where the World Folders Actually Are

This depends on your version, and it changed recently in a way that most guides on the internet have not caught up with.

Java Edition 26.1 restructured the entire world save format. Everything now lives inside one world folder:

world/
├── level.dat
├── session.lock
├── data/minecraft/            shared data: game rules, scoreboard, weather
├── datapacks/
├── dimensions/minecraft/overworld/    region, entities, poi
├── dimensions/minecraft/the_nether/   (was DIM-1)
├── dimensions/minecraft/the_end/      (was DIM1)
├── players/data/              player inventories and positions
├── players/advancements/
└── players/stats/
26.1 and later

Before 26.1, the Nether and End sat in DIM-1 and DIM1 inside the world folder, player data was in a top-level playerdata/ folder, and advancements/ and stats/ sat beside it. The full current tree is documented on the Minecraft wiki's level format page.

And on Paper, Spigot or Purpur before 26.1, they were not in the world folder at all. Bukkit-derived servers split the three dimensions into three sibling directories:

Server software Overworld Nether End
Vanilla / Fabric / Forge, pre-26.1 world/ world/DIM-1 world/DIM1
Paper / Spigot / Purpur, pre-26.1 world/ world_nether/DIM-1 world_the_end/DIM1
Any of them, 26.1 and later world/ world/dimensions/minecraft/the_nether world/dimensions/minecraft/the_end

The classic migration failure: "my Nether reset"

If you are moving from a pre-26.1 Paper-family server and you copy only the folder called world, the Nether and End appear to be gone and regenerate empty. Nothing has been lost — you left two folders behind. Copy world_nether and world_the_end across as well. PaperMC documents this case directly in its migration guide.

Substitute your own level-name for world throughout if you changed it.

Step 3: Get a Clean Copy Off the Old Host

With the server stopped, the fastest and safest route is almost always to archive first and download second.

  1. In the old host's file manager, select the world folder(s), plugins/ (or mods/ and config/), server.properties, ops.json, whitelist.json and the ban lists.
  2. Create a single archive of the selection. One large file transfers far faster than thousands of small region files, and it cannot silently drop a file partway through.
  3. Download the archive.
  4. Check the size against what the old panel reported. A world that was 4 GB on the server and 300 MB after download did not finish.

If the old host gives you SFTP but no archive tool, connect a client and pull the folders directly. How to upload files via SFTP covers client setup, and the same steps work in reverse for downloading.

If a plugin uses MySQL, export the database separately — a plugins/ copy will not contain it. LuckPerms permissions, large EssentialsX deployments and Discord bridges are the common cases.

Step 4: Match the Software and Version Before You Start

Do this before you start the new server for the first time with your world in place. A server that boots on the wrong jar or the wrong version will either refuse to load the world or upgrade it in a way you cannot undo.

In the Startup tab of your new server, set:

  • The same server type. Paper, Purpur, Fabric, Forge, NeoForge or vanilla, to match what you were running. Plugins and mods are not interchangeable — see Plugins and Mods for which is which, and Which Minecraft Server Software Should You Run? if you are not certain what you were on.
  • The same Minecraft version, exactly. Not "close enough".

Minecraft renumbered its releases in 2026, so versions now read as 26.2 rather than 1.x; the last release using the old numbering was 1.21.11. Getting started with your Minecraft server explains the scheme.

Version parity matters more than it used to, because the Java runtime requirement moved with it:

Minecraft version Minimum Java
26.1 and later Java 25
1.20.5 – 1.21.11 Java 21
1.18 – 1.20.4 Java 17
1.17 – 1.17.1 Java 16
1.12 – 1.16.5 Java 8

Paper publishes its support status per version through its own API, which is worth checking before you commit to staying on an old release. Checked in August 2026, Paper reports 26.2 and 26.1.2 as SUPPORTED with a Java 25 minimum, and 1.21.11 as UNSUPPORTED since 15 June 2026.

World upgrades only go one way

Starting an older world on a newer version converts it, and that conversion is not reversible. Minecraft stores a data version in the save and warns you when a world is newer than the game trying to open it, because opening it anyway risks corrupting it. If you were planning to change version as part of the move, do not — migrate onto the version you were already running, confirm everything works, then upgrade as a separate job with a fresh backup. Upgrading a Minecraft Server Across Versions covers that step properly.

There is one further wrinkle if you are changing server software at the same time. From 26.1, Paper writes game_rules.dat, scheduled_events.dat, wandering_trader.dat, weather.dat and world_gen_settings.dat into world/dimensions/minecraft/overworld/data/minecraft/, while vanilla expects them in world/data/minecraft/. Paper converts the layout for you when you move to it and documents exactly which five files to move back by hand if you ever go the other way. Migrating away from Spigot or CraftBukkit is harder still — Paper's own docs describe a direct Spigot-to-Paper move as impossible as of 26.1, and route you via vanilla first. Change one thing at a time.

Step 5: Upload

For anything but a very small world, upload the archive rather than the loose folders.

  1. Open the Files tab and upload your archive, or send it over SFTP if it is large. The panel's file manager takes files but not folders, so an archive is the practical route either way; How to upload files via SFTP has the credentials, the port and the client setup.
  2. Use Unarchive in the file manager to unpack it in place.
  3. Check the result: the world folder should sit in the server root alongside server.properties, not nested inside an extra folder created by the archive.
  4. Overwrite server.properties, ops.json, whitelist.json and the ban lists with yours.
  5. Put plugins/ (or mods/ and config/) in place.

Dragging an archive onto the panel's File Manager to upload it

Do not carry server-port over

server-port is managed by the panel, which binds your server to the allocation shown in its Network tab. Your old server's port almost certainly is not the one you have been given here. Everything else in server.properties can come across as-is, but let the panel keep this line. Minecraft server.properties: The Complete Reference covers the rest of the file key by key.

Also check level-name matches the folder you just uploaded. If the old server used level-name=SkyblockS4 and you renamed the folder to world on the way, the server will generate a brand new empty world rather than load yours.

Step 6: First Boot Checks

Start the server and watch the console rather than the game. In order:

  1. The jar downloads and the server starts. If it stops here, the version or type is wrong, or the Java requirement is not met.
  2. Accept the EULA. First boot on the new server writes eula.txt; set eula=false to eula=true and restart.
  3. The world loads rather than generates. A world that is being generated prints preparing-spawn-area progress and takes a while; a world that is being loaded does not. If you see generation, your level-name and folder name do not agree.
  4. Plugins and mods load. Errors name the file and the reason. Compare the loaded list against the inventory you took in the pre-flight checklist.
  5. Join, and check you are still an op. If /gamemode creative is refused, ops.json did not come across, or it did and you have not restarted since. Fixing it is one console command: op YourUsername.
  6. Check the Nether and End. Go through a portal. This is where a missed folder shows up, and it is much better to find it now than a week later.
  7. Check plugin data, not just plugin presence. Ranks, homes, economy balances, land claims. If a plugin loaded with default settings, its config folder did not make the trip.
  8. Take a backup on the new server from the Backups tab before you invite anyone in. See How to create a backup.

Step 7: Tell Players the New Address

Your server has a new IP and port, and that is the change your players will actually notice. Anyone who saved the old server in their multiplayer list will not see the new one — the old entry simply shows as offline. There is no way to carry an IP address between hosts.

You have two options:

  • Give out the new address, exactly as shown at the top of your panel page, port included. Our allocations are frequently not the Java default of 25565, so play.example.com alone will not connect if the port differs.
  • Point a domain at it, which you can then re-point later without asking anyone to change anything again. An A record handles the address. An SRV record additionally carries the port, so players can type a bare domain with no :port suffix — Minecraft looks it up at _minecraft._tcp.<your-domain>, and the record carries four values — <priority> <weight> <port> <target> — which most DNS panels present as four separate fields. The target is a name with its own A record pointing at your server. This is the option worth taking if you expect to move again.

Either way, announce it before the cut-over, not after. Keep the old server running until you have verified the new one — there is no reason to have both offline at once.

If You Would Rather We Did It

Everything above is the manual route, and it is entirely doable. If you would rather hand it over, we migrate servers by hand at no charge: you order the server you want to end up on, send us the login details for your current host (or upload a zip if you would rather not), and one of our team copies the files across and tells you when to check it. Your existing server stays up throughout — the cut-over happens when you say so.

Common Issues

  • The world generated fresh instead of loading. level-name in server.properties does not match the world folder's name, or the folder unpacked one level too deep. Stop the server, delete the generated folder, fix the name, restart.
  • The Nether and End are empty. You are migrating from a pre-26.1 Paper-family server and left world_nether and world_the_end behind. Copy them across; nothing is lost.
  • Everyone lost their inventories. Player data is keyed by UUID. If the old server ran with online-mode=false and the new one runs with online-mode=true (or the reverse), the UUIDs no longer match: offline-mode UUIDs are derived from the username, not from the Mojang account. Set online-mode to whatever the old server used.
  • Plugins are installed but reset to defaults. Only the JARs came across. Copy the per-plugin folders inside plugins/ too.
  • Chunk or region errors on load. The copy was taken from a running server. Restore from the backup you took while it was stopped.
  • The server will not start after a version change. Check the Java requirement for the version you selected — 26.1 and later need Java 25.
  • Players time out with no error. Check the address and port you gave out against the panel's Network tab, and see Players Can't Connect to My Server.

Made with 💜 by GameServerKings

Need a Minecraft server?

Deploy an instantly-provisioned Minecraft server on high-clock hardware — DDoS protected, no contracts, cancel anytime.

From $4.80 /month