Skip to main content
← All Guides
Troubleshooting · 7 min read

How to Fix Chunk Loading Lag in Minecraft

Fix slow chunk loading and chunk lag in Minecraft servers and clients. Covers pre-generation, async loading, view distance tuning, and disk I/O optimization.

How to Fix Chunk Loading Lag in Minecraft

The Problem

[Server] Chunk generation taking too long: 245ms
[Server] Can't keep up! Is the server overloaded?
Players report invisible chunks, falling through the world, or frozen terrain

Chunk loading lag manifests as invisible or slowly appearing terrain, players falling through unloaded blocks, and server TPS drops during exploration. There are two types: chunk generation (creating new chunks that have never been visited) and chunk loading (reading existing chunks from disk). Generation is CPU-bound and far more expensive than loading.

Quick Fix

Pre-generate your world using Chunky. This converts chunk generation (expensive) into chunk loading (cheap) for all pre-generated areas. Run /chunky radius 5000 then /chunky start while no players are online.

Step-by-Step Diagnosis

  1. Identify the type of lag. Check your Spark profiler. If ChunkGenerator methods dominate, the issue is generation. If RegionFile.read dominates, the issue is disk I/O during loading.
  2. Pre-generate the world. Install Chunky: /chunky radius 5000 sets a 5000-block radius from spawn. /chunky start begins generation. Let it run to completion before opening the server to players.
  3. Reduce view distance. Set view-distance=8 and simulation-distance=6 in server.properties. The number of chunks loaded scales quadratically with distance: view distance 16 loads 4x more chunks than distance 8.
  4. Use Paper's async chunk loading. Paper loads chunks asynchronously by default. If you are on Spigot, switching to Paper gives a major improvement in chunk loading performance.
  5. Check disk speed. Slow HDDs cause chunk loading lag because reading region files is I/O-bound. Run dd if=/dev/zero of=testfile bs=1M count=1024 oflag=direct on Linux to test write speed. SSDs (especially NVMe) dramatically reduce chunk loading times.
  6. Set a world border. Prevent players from exploring infinitely by setting a world border: /worldborder set 10000. This limits the area that needs to be generated and loaded.
  7. Tune Paper chunk settings. In paper-global.yml, review chunk-loading-basic and chunk-loading-advanced settings. The max-concurrent-chunk-loads setting limits how many chunks load simultaneously to prevent overwhelming the disk.

Common Causes

  • No pre-generation. Players exploring new terrain forces the server to generate chunks in real time, which is the most CPU-intensive operation in Minecraft.
  • High view distance. Each player loads a square of chunks. More chunks means more disk I/O and more memory usage.
  • HDD instead of SSD. Region file reads on a spinning hard drive are 10-50x slower than on an SSD. NVMe SSDs are ideal for Minecraft servers.
  • Datapacks with custom worldgen. Datapacks that modify world generation make chunk generation even slower because custom features add processing time per chunk.
  • Multiple worlds. If players teleport between worlds (like with Multiverse), each world loads its own chunks. This multiplies the I/O load.

FAQ

How long does pre-generation take?

It depends on hardware and radius. A 5000-block radius (about 100,000 chunks) takes roughly 1-3 hours on modern hardware. Run it overnight when no players are online.

Does reducing view distance affect gameplay?

Players see fewer distant chunks, but Paper sends extra chunk data for rendering without simulating it. A simulation distance of 6 with view distance of 8 is a good balance between performance and visual range.

Can I pre-generate the Nether and End too?

Yes. Chunky supports all dimensions. Run /chunky world world_nether then set radius and start generation. The Nether generates faster because it has less surface detail.

Why do chunks load slowly even on an SSD?

If chunk loading is slow despite having an SSD, the bottleneck may be CPU (decompressing and deserializing chunk data) rather than disk I/O. Profile with Spark to confirm. Also check if Paper's async chunk loading is enabled and functioning. On very busy servers, the chunk loading thread pool may be saturated.

Optimizing Chunk Loading Performance

Beyond pre-generation and view distance, several additional settings affect chunk loading speed:

  • Use Paper's async chunk system. Paper loads chunks off the main thread by default. This prevents chunk loading from blocking the tick loop. Spigot does not have this feature, making Paper a significant upgrade for chunk performance.
  • Tune max-concurrent-chunk-loads. In Paper's configuration, this setting limits how many chunks load simultaneously. Setting it too high overwhelms the disk. Setting it too low causes visible loading delays. Start with the default and adjust based on your hardware.
  • Use region format optimization. Paper uses an optimized region file format that reduces I/O overhead. Ensure you are running the latest Paper build for your version.
  • Consider RAID or NVMe. For high-player-count servers, NVMe drives with their low latency and high IOPS provide the best chunk loading performance. RAID configurations add redundancy but the latency benefit over a single NVMe is minimal for Minecraft's sequential read pattern.

Need a server that handles all this? Astroworld Hosting, NVMe SSDs, Pterodactyl panel, DDoS protection on every plan.

Related Tools & Resources

🔧

Minecraft Tools

Calculators, generators & server tools

🧱

Item Database

Browse all Minecraft items, stats & recipes

⚒️

Crafting Recipes

Visual crafting guides for every recipe