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.
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,neoforgeorvanilla, and the Minecraft version it runs (26.2,1.21.11, and so on) level-namefrom the oldserver.properties— this is the world folder's name, and it is not alwaysworld- 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.txtand a defaultserver.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-offto pause writes to the level files, thensave-all flushto force everything in memory out to disk immediately, then take your copy, thensave-on. The wiki describessave-offas doing exactly this — disabling level-file writes "in order to copy them for backup". Never leavesave-offon: until you runsave-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 wholeplugins/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/ 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. Copyworld_netherandworld_the_endacross 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.
- In the old host's file manager, select the world folder(s),
plugins/(ormods/andconfig/),server.properties,ops.json,whitelist.jsonand the ban lists. - 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.
- Download the archive.
- 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.
- 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.
- Use Unarchive in the file manager to unpack it in place.
- 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. - Overwrite
server.properties,ops.json,whitelist.jsonand the ban lists with yours. - Put
plugins/(ormods/andconfig/) in place.

Do not carry
server-portover
server-portis 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 inserver.propertiescan 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:
- The jar downloads and the server starts. If it stops here, the version or type is wrong, or the Java requirement is not met.
- Accept the EULA. First boot on the new server writes
eula.txt; seteula=falsetoeula=trueand restart. - 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-nameand folder name do not agree. - 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.
- Join, and check you are still an op. If
/gamemode creativeis refused,ops.jsondid not come across, or it did and you have not restarted since. Fixing it is one console command:op YourUsername. - 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.
- 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.
- 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.comalone 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
Arecord handles the address. AnSRVrecord additionally carries the port, so players can type a bare domain with no:portsuffix — 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 ownArecord 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-nameinserver.propertiesdoes 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_netherandworld_the_endbehind. Copy them across; nothing is lost. - Everyone lost their inventories. Player data is keyed by UUID. If the old server ran with
online-mode=falseand the new one runs withonline-mode=true(or the reverse), the UUIDs no longer match: offline-mode UUIDs are derived from the username, not from the Mojang account. Setonline-modeto 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.
What to Read Next
- Getting started with your Minecraft server for the Startup tab, versions and first boot
- How to upload files via SFTP for the transfer mechanics in detail
- Minecraft server.properties: The Complete Reference for every setting in the file you just copied
- Minecraft Server Commands for
/save-off,/save-all flushand the safe backup sequence - Managing your Minecraft server for backups, scheduled restarts and performance once you have landed
- How to create a Database via your panel if a plugin needs MySQL on the new server
- Converting a Singleplayer World to a Minecraft Server if what you are bringing across came out of singleplayer rather than off another server
- Minecraft World Management for world borders, pre-generation and resets once you have landed
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