Fix Slow Chunk Loading in Minecraft

Slow chunk loading creates visible holes in the world, rubber-banding as players move and lag spikes during exploration. It is one of the most common performance complaints on Minecraft servers, especially during world generation when the server has to create terrain from scratch.

What are chunks and why do they matter?

A Minecraft world is divided into 16x16-block columns called chunks. Each chunk stretches from the bottom of the world to the top (384 blocks in modern versions). The server loads chunks around each player based on the view distance. When a player moves into unexplored territory, the server must generate new chunks. This involves terrain generation, structure placement, lighting calculations and entity spawning, all of which are computationally expensive.

What causes slow chunk loading

  1. Slow storage. Loading saved chunks from disk is an I/O operation. HDD storage is dramatically slower than SSD, and SSD is slower than NVMe. If your server runs on a hard drive, chunk loading will always be a bottleneck.
  2. Not enough RAM for the chunk cache. The server caches recently used chunks in memory. With too little RAM, chunks get evicted from the cache and must be re-read from disk frequently.
  3. Heavy world generation mods. Mods like Terralith, Biomes O' Plenty or custom datapacks that add complex terrain, structures or biomes make generation significantly slower than vanilla.
  4. Too many entities in chunks. Chunks with hundreds of mobs, villagers or item frames take longer to load and process. A single chunk with a massive villager trading hall can cause a lag spike every time it loads.
  5. Single-threaded chunk loading. Vanilla Minecraft and Spigot process chunks on a single thread. Paper introduced asynchronous chunk loading, which is a major improvement.
  6. Large view distance. A view distance of 16 loads 1,089 chunks per player. Reducing it to 8 loads only 289. That is a 73% reduction in chunks that need to be loaded.

Step-by-step fixes

1. Switch to Paper or Purpur

If you are running Vanilla or Spigot, switch to Paper (or Purpur, which is based on Paper). Paper loads and generates chunks asynchronously, spreading the work across multiple CPU threads. This is the single biggest improvement you can make for chunk loading speed. The switch is straightforward: Paper is a drop-in replacement for Spigot, and existing plugins work without changes.

2. Reduce view distance

Set view-distance=8 in server.properties. This is enough for comfortable gameplay and reduces chunk loading by a massive amount. In Paper, you can also set simulation-distance separately: keep simulation at 6 and view at 10. Players see further, but the server only processes entities and redstone within 6 chunks.

3. Pregenerate your world with Chunky

World generation is the slowest part. Pre-generating chunks removes this bottleneck entirely. Install the Chunky plugin and run:

  • /chunky radius 5000 (generates a 10,000-block diameter area)
  • /chunky start

Let it run overnight or during low-traffic hours. Once pregenerated, players moving through that area load pre-built chunks from disk instead of generating them from scratch. Set a world border at the same radius to prevent players from going beyond the pregenerated area.

4. Limit entity counts

Reduce mob spawning in Paper's configuration. Set lower values for spawn-limits in bukkit.yml (monsters: 50, animals: 8, water-animals: 3). Clear dropped items with a plugin on a timer. Limit the number of villagers per chunk. Each entity in a chunk adds to its load time and processing cost.

5. Use NVMe storage

Chunk data lives on disk. NVMe drives read data 5 to 10 times faster than SATA SSDs, and 50 to 100 times faster than HDDs. If your server runs on anything slower than NVMe, chunk loading will be limited by storage speed. This is especially noticeable with large worlds (10+ GB of region data).

6. Allocate enough RAM

More RAM means the server can cache more chunks in memory. For a server with 10 to 20 players and a 5,000-block world border, 4 to 6 GB is a good starting point. Modded servers need more. Check your server's actual RAM usage in the panel; if it frequently exceeds 80% of the allocation, increase it.

7. Optimize garbage collection

Use Aikar's JVM flags to optimize Java's garbage collector. Poor GC settings cause periodic freezes where the entire server pauses, including chunk loading. Aikar's flags use the G1 garbage collector with settings tuned specifically for Minecraft's memory patterns. Check the Paper documentation for the exact flags.

Fast chunk loading starts with fast hardware. HostValues Minecraft servers run on NVMe storage with high-clock-speed CPUs, giving your server the raw performance it needs for smooth world loading.

Should I pregenerate the entire world?

Not the entire infinite world, but the playable area, yes. Set a world border first, then pregenerate everything inside it. A 10,000-block diameter world (radius 5,000) takes a few hours to generate on a decent server. This eliminates generation lag during gameplay entirely.

View distance vs simulation distance: what is the difference?

View distance controls how many chunks are sent to the player's client for rendering. Simulation distance controls how many chunks the server actively processes (mob AI, redstone, crop growth). On Paper, you can set simulation lower than view. Players see far but the server only does heavy processing nearby. For example: view distance 10, simulation distance 6. This gives a good visual range with much lower server load.

Does more RAM help chunk loading?

Yes, but only up to a point. More RAM lets the server cache more chunks in memory, so it reads from disk less often. But if chunk loading is slow because of generation (CPU-bound) rather than disk reads, more RAM will not help. In that case, a faster CPU or pregenerating the world is the solution. Check whether your server's RAM is full when lag occurs; if it is not, RAM is not the bottleneck.

Upgrade to NVMe-powered hosting at HostValues and feel the difference in chunk loading speed from day one.


Still stuck? Open a support ticket and our team will help you out.

Back to the blog