Switching hosts is scary for one concrete reason: the world. Months of builds, the economy, every player's rank, the chests. The good news is that a Minecraft server is, in the end, a folder. Copy the whole folder and start the same software on the other side, and everything is where it was. This guide is that process in the right order, including the panel-to-panel differences (Multicraft, Pterodactyl, custom panels) and the things that go wrong.
It works for any source and destination. If your new host offers free migration (we do), it is still worth understanding the process so you know what to ask for and what to check afterwards.
Before touching anything: three decisions
1. Same software, same version
Migrating and updating at the same time is the surest way to not know what broke. If your server runs Paper 1.21.1, the destination must start Paper 1.21.1. If you run a specific Forge or NeoForge modpack, the destination needs exactly the same loader and pack version. Update later, once everything works, with a fresh backup.
2. What kind of server you have
- Vanilla, Paper, Purpur or Spigot: the essentials are the world folders,
plugins/and the root config files. - Forge, NeoForge or Fabric: plus
mods/,config/and, in big packs, folders likekubejs/,scripts/ordefaultconfigs/. Take everything; sorting is not worth the risk. - Bedrock: the
worlds/folder,server.properties,permissions.json,allowlist.jsonand your behavior and resource packs. - A network (Velocity or BungeeCord): migrate one backend at a time and the proxy last; the forwarding secret and internal addresses will change.
3. How big it is
Check the server folder size in the file manager. A survival world that has run for months can be 5-20 GB, almost all of it the world. That decides whether you download and re-upload through your PC (slow) or transfer server-to-server (fast), and whether the destination plan has enough disk.
Step 1: announce it and freeze
Post the migration date and time in-game and on Discord. On the day, turn on the whitelist or stop the source server before copying: if you copy the world while people play, chunks saved after your copy are lost, and that is the number one source of "my build from yesterday vanished".
Correct order on the source: announce → kick everyone → save-all → stop. With the server stopped, the copy is consistent.
Step 2: take a full backup and download it
Even if the old panel keeps backups, take a manual one now and download it to your PC. It is your insurance if something corrupts in transit, and against the old host closing your account the moment you cancel, which happens.
Step 3: copy the whole folder
Do not cherry-pick files. Take the server root. If you must know what matters most:
- Worlds:
world/,world_nether/andworld_the_end/on Paper and Spigot. On Vanilla, Forge and Fabric all three dimensions live insideworld/. A custom world name is inlevel-nameinserver.properties. - plugins/ or mods/ with their config folders (every plugin stores its config and data under
plugins/PluginName/: ranks, economy, claims, shops). - Root files:
server.properties,bukkit.yml,spigot.yml, Paper'sconfig/folder,ops.json,whitelist.json,banned-players.json,banned-ips.json,usercache.jsonandeula.txt. - External databases (MySQL for LuckPerms, CoreProtect or a shop plugin) are not in the folder: export them separately.
Panel differences
Multicraft usually puts the server in a folder with the server name and may keep the jar separately; Pterodactyl exposes the root directly, with the port it assigned already in server.properties. The content is the same; only where you find it changes. If the old panel hides the root, download from the top-most folder you can see.
How to move it
- Server to server over SFTP (fastest for big worlds): compress the folder on the source from its file manager, download the
.zipor.tar.gzand upload it to the destination, or ask the destination's support to pull it directly if they offer that. - From your PC over SFTP with FileZilla or WinSCP: always works, but at the speed of your connection, and thousands of small region files upload far slower than one archive. Compress first.
Extract on the destination from the panel's file manager, not on your PC. Check the structure: server.properties must be in the root, not inside an extra folder named after the archive.
Step 4: prepare the destination and start once
- Server type and version match the source (Paper 1.21.x, NeoForge with the same pack version, and so on).
- RAM is what you need; the RAM calculator gives a figure, and if you started with Aikar's flags before, keep them (start script generator).
- The port in
server.propertiesis the one the new panel assigned. This is the most common failure: the file carries the old port and the server will not bind. eula=trueis still there.- Java version matches what your Minecraft version needs (17 for 1.18-1.20.4, 21 for 1.20.5-1.21.x, 25 for 26.x). On a panel this is the Java image of the server.
Start it and read the whole console, not just "Done". Look for red lines about plugins that failed to load (usually a missing dependency such as Vault) or version mismatches. For start and connection problems, see connection errors explained.
Step 5: verify what matters, in this order
- Join yourself. You should appear where you were, with your inventory. Spawn with an empty inventory means the loaded world is not yours: check
level-name. - Ranks and permissions.
/lp user YourName infowith LuckPerms. Defaults everywhere meansplugins/LuckPerms/did not come over or the external database is not connected. - Claims and economy. Test a protected area and a money command; those are the data players miss most and that are hardest to rebuild.
- Nether and End. Walk through a portal. A fresh Nether means
world_netherorDIM-1was not copied. - Bedrock, if you run crossplay: join from a phone. Geyser needs the destination's UDP port in its config; it is usually the first thing to fix.
Step 6: switch the address without losing anyone
- If players join through a hostname (like
play.yourserver.com), change the A record and the SRV record (_minecraft._tcp.play.yourserver.com) to the new IP and port. Lower the TTL to 300 seconds a day earlier so the change propagates fast. Nobody has to do anything. Bedrock does not read SRV: give Bedrock players the A record plus Geyser's port. - If players join by a raw IP, there is no shortcut: keep the old server up for a few days with a MOTD showing the new address, and if you can, a plugin that shows a sign with the new address on join. Use the switch to move to a subdomain, which panels usually provide free, and never hand out a raw IP again.
Step 7: do not cancel the source yet
Keep the old server (stopped or whitelisted) until the new one has run a week without surprises. That is when the odd problems show up: a plugin that stored data outside its folder, a player who cannot find their base because they joined the old server on migration day. Then cancel from the old provider's panel before the renewal date, rather than just letting a card fail.
What usually goes wrong
- "It loaded a new world": different
level-name, or the folder ended up nested inside another after extracting. - "We lost the last few hours": the world was copied with the server running or without
save-all. - "Plugins have no data": plugin subfolders or the external MySQL database were left behind.
- "It will not start": old port in
server.properties, wrong Java version, or-Xmxlarger than the plan's RAM. - "Phone players cannot join": Geyser still points at the old UDP port.
- "It runs worse than before": not the migration, the destination's hardware or config. Run a Spark report and compare.
Checklist
- Community notified with a date and time.
- Whitelist on,
save-all, server stopped. - Manual backup downloaded to your PC.
- Full root folder copied (worlds, plugins or mods, configs, op and ban lists).
- External database exported, if any.
- Same software and version on the destination; port, RAM and Java correct.
- You joined, your inventory and ranks are there, the Nether is yours.
- DNS updated, or MOTD with the new address on the old server.
- Source kept for a week, then cancelled from its panel.
If you would rather we did it
Migration to any TaroHosting plan is free: we bring the world, plugins or mods and config over from your current host, take a backup before touching anything and check performance when it is done. It is coordinated on Discord and usually finished the same day. We need SFTP access or the archive of your server; steps 1 and 6 depend on your community, so those stay with you.