Chunk loading, pre-generation and why exploring lags
Generating new terrain is the heaviest single job your server ever does, which is why a fresh world lags while players explore and then settles down: pre-generating the map ahead of time and capping it with a world border removes the problem for good.
6 min read · Updated Oct 21, 2026 · By GuavaHost Team
What a chunk is, and what loading one costs
A chunk is a 16 by 16 block column running from the bottom of the world to the top. Your server works in chunks, not blocks: it loads, ticks, saves and sends terrain a chunk at a time. Three very different things can happen as a player walks forward:
| What happens | Cost |
|---|---|
| A chunk already in memory comes into range | Almost nothing |
| A chunk is read from disk and loaded | Small, smaller still on NVMe storage |
| A chunk does not exist yet and has to be generated | Large |
That third row causes the lag people complain about. Generating a chunk means running the terrain noise, carving caves, placing ores and biome features, building any structure that starts there, calculating lighting, then writing it to disk. Much of that happens on the main thread, the single thread that also runs your mobs and redstone.
Why a new world lags and an old one does not
On a brand new world every direction a player walks is fresh terrain, so every step is generation. That is why a server can feel terrible in its first week with four players and smooth six months later with twenty.
Once a chunk exists it never needs generating again, so the lag is not about world size. It is about the frontier: how much unexplored edge your players are pushing into right now. Two patterns make it worse:
- Fast travel. Elytra flight, a boat on ice or a minecart line move a player across chunks faster than the server can generate them, so one elytra pilot can drag TPS down for everybody.
- The Nether. One block there equals eight in the Overworld, so a short Nether trip generates a long strip of Overworld terrain on the way back. Nether highways are a classic source of mystery lag.
How to confirm this is your problem
Check that generation is what is eating your ticks before you spend an evening on it.
- Run
tpsandmsptin the Console tab while someone is exploring. If the numbers only go bad when a player moves into new land, you have your answer. Reading TPS and MSPT explains them. - Run a profile:
spark profiler start --timeout 600. Chunk generation and loading entries high up theServer threadtree confirm it. Find what's causing lag with spark covers the report. - Watch the pattern. Generation lag follows players and stops when they stop; plugin and entity lag are steady whatever anyone does.
If the profile points elsewhere, see cutting entity and mob lag instead.
Pre-generate the map
Pre-generation is doing all that work in advance, while nobody is playing, so no player waits for it. It is the biggest smoothness win available to an exploration-heavy server.
The free Chunky plugin (or the Chunky mod for Fabric and Forge) is the standard tool, and setting the world spawn, world border and pre-generating chunks has the step-by-step for installing it and running chunky radius then chunky start.
Things worth knowing before you start:
- Set your world border first, then pre-generate to that size, or you are building terrain players can never reach.
- Run it during quiet hours. Pre-generation uses everything it can get, so TPS will be poor while it runs. That is the point: spend the lag now instead of later.
- It takes a while. A modest radius finishes in minutes, a large one in hours. Watch the progress in the Console.
- Do each dimension. Chunky can target the Nether and the End too, and the Nether is often more valuable.
- Modded worlds generate far more slowly, because every world-generation mod adds work per chunk, so pick a smaller radius.
Cap the world with a border
A world border is an invisible wall that stops the world growing forever, and it is what makes pre-generation finite. Pick a size you can actually pre-generate, then expand it later if players fill it: /worldborder set 10000 600 grows the border gradually, adding space without a generation rush. Without a border, no amount of pre-generation finishes.
Settings that help
A few config changes take the edge off generation without removing it.
- Lower view distance and simulation distance. Fewer chunks in range means less generation per step, and it is the biggest lever you have before pre-generating. See view distance vs simulation distance.
chunks.prevent-moving-into-unloaded-chunksin Paper'sconfig/paper-world-defaults.yml. Set totrue, it holds a fast-moving player at the edge instead of letting them force a burst of chunk loads. This is the elytra fix.- Leave the chunk system thread counts alone. In
paper-global.ymlthey default to-1, which sizes them automatically; overriding them usually makes things worse.
A random-teleport command is a generation request disguised as a feature, so keep its radius inside your pre-generated area.
Force-loaded chunks and chunk loaders
Normally chunks unload when nobody is near them, which is a big part of why your server copes. Three things override it: the /forceload command (run forceload query in the Console to see what is pinned), plugins that keep a base ticking while its owner is offline, and modded chunk loaders.
Each force-loaded chunk is ticked around the clock, with whatever entities and hoppers are in it. Sometimes that is worth it, but audit them: sixty loaded farm chunks is sixty farms running at all times for nobody.
The disk cost of a big map
Generated terrain lives on disk whether anyone visits again or not. Minecraft stores it in region files, each covering a 32 by 32 block of chunks, in the region folder inside your world.
The exact size depends on your version, your world height and how much of a chunk is solid, so there is no single figure to quote. What is reliably true: a modest pre-generated map is comfortable storage and a very large one is serious, modded worlds are much larger per chunk, and backups scale with all of it.
Check your storage on the Usage card on the Overview tab before and after a run. If you are near your limit, a smaller border is the cheapest fix; plan sizes are on pricing.
Trimming an oversized world is possible with tools that delete unvisited region files, but there is no undo once a region file is gone. Take a full backup first, and ask us on Discord before running anything that deletes region data.
A sensible order to do this in
- Take a snapshot on the Backups page.
- Confirm with a profile that generation is the cause.
- Set a world border at a size you can live with.
- Lower simulation distance a step or two.
- Set
prevent-moving-into-unloaded-chunkstotrue. - Pre-generate to the border overnight, in every dimension you care about.
- Re-check
tpsandmsptwith players exploring.
Exploring then stops being a performance event, and whatever lag is left is something else entirely.
Common questions
How long does pre-generating a world take?
It depends on the radius, your Minecraft version and how many world-generation mods you run, so the honest answer is to start it and watch the console. A small vanilla-style radius finishes in minutes; a large modded map can run for hours.
Can players be online while Chunky is running?
They can, but will not enjoy it, because pre-generation uses whatever is available and TPS drops while it works. Chunky can be paused and resumed, so run it during quiet hours and pause it when people are on.
Will a world border stop my existing players exploring?
It stops them going past it, so set it wide enough for the kind of server you run and tell people where the edge is. You can always expand it later with a gradual grow command, which is kinder than shrinking one.
Still stuck? Jump into our Discord at discord.gg/GuavaHost and the team will help you out.
- chunks
- pregeneration
- world border
- lag
- minecraft
Host a Minecraft Java server From $3.99/mo, with instant setup and DDoS protection.
Still need help? Our team is online 24/7 to answer questions.