Your server runs fine for the first few days. Twenty TPS, smooth gameplay, no complaints. Then a handful of players decide to explore. They scatter in every direction, loading new terrain faster than your server can generate it. Suddenly TPS drops to single digits. Chat fills with "why is the server lagging?"
This is chunk generation lag, and it hits almost every new Minecraft server eventually. The fix is to generate those chunks before players get there. That is what Chunky does — and once you understand how to use it, you will wonder why you did not do this on day one.
Why Chunk Generation Causes Lag
Minecraft servers run on a 20-tick-per-second clock. Every tick, the server processes mob AI, player actions, block updates, and redstone. It has 50 milliseconds to finish each tick. Miss that window, and TPS drops.
Generating a new chunk is expensive. The server has to run the terrain generator, calculate biomes, place structures, populate ores, spawn initial mobs, and write the result to disk. On vanilla, a single chunk might take 10-30ms to generate. On a modded server with worldgen mods, it can be far worse.
When one player explores, the server generates chunks at a sustainable pace — maybe a few per second. But when five players explore in five different directions, the server tries to generate chunks in parallel. Each generation eats into the 50ms tick budget. If total generation time exceeds the budget, TPS drops.
The root problem is that chunk generation competes with gameplay for the same tick budget. If you want smooth gameplay during exploration, you need to separate them.
What Chunky Does
Chunky is a chunk pre-generator that works on Paper, Purpur, Fabric, Forge, NeoForge, and Sponge. It generates chunks in the background, one at a time, without overwhelming the main thread.
The key difference from player-driven exploration: Chunky throttles itself. It generates a few chunks per tick, monitors TPS, and backs off if the server starts lagging. You can run it overnight when no one is online, or at a reduced pace while players are active.
Chunky uses a task queue system. You define a world, a center point, a radius, and a shape (circle or square). Then you start the task. Chunky saves progress, so if your server restarts, it picks up where it left off.
Once chunks are pre-generated, players loading them only need to read from disk — no terrain generation, no structure placement, no ore population. Just a fast disk read.
Installing Chunky
Installation depends on your server software. Here is what you need for each platform.
| Platform | Download Location | File Type | Install Path |
|---|---|---|---|
| Paper / Purpur / Spigot | Modrinth or SpigotMC | .jar | /plugins/ |
| Fabric | Modrinth or CurseForge | .jar | /mods/ |
| Forge / NeoForge | CurseForge | .jar | /mods/ |
For Paper or Purpur servers, drop the plugin JAR into your /plugins/ folder and restart. For Fabric or Forge, add it to /mods/ and restart. No config edits required for basic usage.
After restart, run /chunky in console or in-game (with op permissions) to confirm it loaded. You should see a help message listing available commands.
Calculating Your Radius
Before you start generating, decide how large your world should be. This decision affects storage, generation time, and gameplay.
The math
Chunky uses a radius measured in blocks from the center point. A radius of 5,000 blocks creates a 10,000-block diameter — meaning players can travel 5,000 blocks in any direction from spawn before hitting unexplored territory.
The area scales quadratically. Double the radius, and you get four times the chunks:
| Radius | Diameter | Approximate Chunks | Estimated Storage |
|---|---|---|---|
| 3,000 | 6,000 | ~140,000 | ~2 GB |
| 5,000 | 10,000 | ~390,000 | ~5 GB |
| 8,000 | 16,000 | ~1,000,000 | ~12 GB |
| 10,000 | 20,000 | ~1,560,000 | ~17 GB |
| 15,000 | 30,000 | ~3,500,000 | ~38 GB |
These estimates assume vanilla terrain. Modded worldgen or many structures can increase storage by 20-50%.
What radius do you need?
For a small friends-and-family server, 3,000 blocks is plenty. Most players will never explore that far. For an SMP with an active community that builds spread-out bases, 5,000-8,000 blocks gives room to grow. For public servers or networks expecting hundreds of players, 10,000+ makes sense — but check your storage first.
If you are unsure, start with 5,000. You can always extend later by running another Chunky task with a larger radius.
World border alignment
If you plan to enforce a world border, match it to your pre-generated radius. A 5,000-block radius in Chunky corresponds to a 10,000-block diameter world border:
/worldborder center 0 0
/worldborder set 10000
This prevents players from exploring beyond pre-generated terrain. See the server.properties guide for more world boundary options.
Running the Pre-Generation Task
Once Chunky is installed and you know your target radius, start the generation. Here is the full workflow.
Step 1: Select the world
On Paper-based servers, the world names are world (overworld), world_nether, and world_the_end. Run:
/chunky world world
For the Nether or End, substitute the appropriate name. On Fabric, world names may differ depending on your setup — check your /saves/ or server root for the exact folder name.
Step 2: Set center and radius
By default, Chunky centers on 0,0. If your spawn is elsewhere, adjust:
/chunky center 0 0
/chunky radius 5000
Step 3: Choose a shape
Chunky supports circle (default) and square. Circles generate fewer chunks for the same radius, saving storage and time. Squares align cleanly with world borders.
/chunky shape circle
Step 4: Start generation
/chunky start
Chunky begins generating. You will see progress messages in console showing chunks completed, rate per second, and ETA.
Monitoring progress
Chunky logs progress every few seconds by default. If the output is too verbose, silence it:
/chunky silent
To check progress manually:
/chunky progress
Pausing and resuming
If you need to pause (server maintenance, players complaining about slight lag):
/chunky pause
Resume later:
/chunky continue
Progress is saved automatically. Server restarts do not lose progress.
Canceling
To abort and discard progress:
/chunky cancel
This does not delete already-generated chunks — just stops the task.
RAM and CPU Tuning During Generation
Pre-generation is a CPU and memory-intensive operation. For the fastest results, temporarily increase your server's resources.
RAM recommendations
Chunk generation creates many temporary objects. If your server normally runs on 4 GB, consider bumping to 6-8 GB during generation. This reduces garbage collection pauses and speeds up the process. Check the RAM guide if you are unsure how much your server needs in normal operation.
On Swelis, you can adjust RAM allocation from the panel without restarting — scale up for generation, scale back down afterward.
CPU matters more than RAM
Chunk generation is heavily single-threaded. A high clock speed CPU with good cache (like the Ryzen 9 7950X3D nodes Swelis uses) generates chunks significantly faster than a multi-core server CPU running at lower frequencies. There is not much you can configure here — it comes down to your host's hardware.
Estimated generation times
On a 6 GB plan with modern hardware, expect roughly:
| Radius | Estimated Time |
|---|---|
| 3,000 | 30-60 minutes |
| 5,000 | 1-2 hours |
| 8,000 | 3-5 hours |
| 10,000 | 6-10 hours |
Run the generation overnight or when the server is empty. If players are online, Chunky will self-throttle to avoid lag, but generation will take longer.
Verifying Completion and Setting a World Border
When Chunky finishes, it logs a completion message. But trust and verify — here is how to confirm your world is fully pre-generated.
Check for gaps
Walk (or fly) to the edges of your pre-generated area. If you see terrain loading smoothly without TPS drops, the chunks are there. If you hit a spot where generation kicks in, you may have an incomplete task or used the wrong center point.
Set the world border
Lock players inside your pre-generated area:
/worldborder center 0 0
/worldborder set 10000
The set value is the diameter, not the radius. A 5,000-block Chunky radius needs a 10,000-block world border.
Add a buffer warning so players know they are approaching the edge:
/worldborder warning distance 100
/worldborder warning time 15
What about the Nether and End?
If your players use Nether highways, pre-generate the Nether too. Remember that Nether coordinates are 1:8 relative to the overworld. A 5,000-block overworld radius corresponds to a ~625-block Nether radius for equivalent travel distance:
/chunky world world_nether
/chunky center 0 0
/chunky radius 625
/chunky start
The End is usually not worth pre-generating unless you have custom End terrain or players routinely explore distant End islands.
Troubleshooting Common Issues
Chunky seems slow. Check your server's CPU and RAM usage. If RAM is maxed, increase allocation. If CPU is pegged, that is expected — chunk generation is CPU-bound. Run it during low-traffic hours.
Server keeps restarting mid-generation. Some hosts have automatic restart schedules. Chunky saves progress, so this is usually fine — just /chunky continue after each restart. If your host restarts every 6 hours and you have a 10-hour generation, plan accordingly.
"Task already running" error. You already have an active Chunky task. Run /chunky pause or /chunky cancel before starting a new one.
World border does not match pre-generated area. Double-check that your world border diameter equals twice your Chunky radius. A 5,000 radius needs a 10,000 diameter border.
TPS drops during generation despite throttling. Chunky throttles based on TPS, but heavy modpacks or plugins can still cause lag during generation. Try /chunky quiet to reduce log spam, or generate in smaller chunks (e.g., 3,000 radius first, then extend to 5,000).
For general performance tuning beyond chunk generation, see the lag troubleshooting guide and performance optimization tips.
Quick Reference
| Command | What it does |
|---|---|
/chunky world <name> | Select target world (e.g., world, world_nether) |
/chunky center <x> <z> | Set center point (default: 0,0) |
/chunky radius <blocks> | Set radius in blocks |
/chunky shape <circle|square> | Choose generation shape |
/chunky start | Begin pre-generation |
/chunky pause | Pause current task (saves progress) |
/chunky continue | Resume paused task |
/chunky cancel | Stop and discard task progress |
/chunky progress | Show current task status |
/chunky silent | Toggle console output |
/worldborder set <diameter> | Set world border (2x your radius) |
Related Guides
- How to Fix Minecraft Server Lag — diagnose and fix lag from all sources, not just chunk generation.
- How to Optimize Server Performance — configs, JVM flags, and entity management for better TPS.
- Minecraft server.properties Explained — every setting in the main config file, including view distance and simulation distance.
- What RAM Does Your Server Need? — figure out the right allocation for your player count and modpack.
- Paper, Purpur, Fabric, or Forge? — which server software to choose if you are still deciding.
- Control Mob Spawning and Entity Lag — another common source of TPS drops once chunk generation is solved.
