How to Reduce World Save Lag
Stop your Minecraft server from freezing during auto-saves. Learn how to reduce world save lag minecraft servers experience by tuning auto-save intervals, using async I/O, and configuring Paper's chunk save settings.
Why World Saves Cause Lag
Minecraft servers periodically write all loaded chunk data, player data, and entity data to disk. By default, this auto-save happens every 6000 ticks (5 minutes). On a small server with a handful of loaded chunks, the save completes in milliseconds. On a server with 40 players exploring in different directions, thousands of dirty chunks must be serialized and written to disk. If this happens synchronously, the main thread stalls until the I/O finishes, causing a visible TPS drop. Learning to reduce world save lag minecraft servers suffer from is one of the easiest performance wins available.
Checking If Saves Are Your Problem
Before tuning anything, confirm that world saves are actually causing your lag spikes. Open Spark and run a profiler during a period when you notice periodic stutter. Look for methods related to ChunkRegionLoader, WorldServer.save, or MinecraftServer.saveAllWorlds in the flame graph. You can also check your server logs for timing information. Paper logs save durations when they exceed a threshold, and entries like [Server] Saving chunks for world 'world' took 342ms are a clear indicator.
Another quick test: run /save-all manually and watch the TPS counter. If TPS dips below 18 during the save, you have a problem worth fixing.
Spreading Saves Across Ticks
The most effective setting to reduce world save lag minecraft experiences is max-auto-save-chunks-per-tick in paper-world-defaults.yml:
# paper-world-defaults.yml
chunks:
max-auto-save-chunks-per-tick: 8
Instead of saving all dirty chunks in a single burst, Paper spreads the work across multiple ticks. With a value of 8, Paper saves at most 8 chunks per tick during the auto-save cycle. This turns a 200ms spike into a barely noticeable increase of 1-2ms per tick over several seconds. Lower values are smoother but take longer to complete the full save. A value between 6 and 12 works well for most servers.
Auto-save Interval
The default auto-save interval is controlled by ticks-per.autosave in bukkit.yml:
# bukkit.yml
ticks-per:
autosave: 6000
Setting this to -1 disables Bukkit's autosave entirely and lets Paper handle it through its own incremental save system. This is the recommended approach on modern Paper servers. Paper continuously saves dirty chunks in the background rather than batching everything into periodic bursts. If you set this to -1, verify that Paper's own auto-save is actually running by checking for save-related log entries. You do not want to accidentally disable all saves.
Disk I/O Performance
Save lag is fundamentally an I/O problem. The speed of your storage directly determines how long writes take. If your server runs on a traditional HDD, world saves will always be slower than on an SSD. NVMe SSDs are the best option, as they handle random write patterns (which chunk saves produce) far better than SATA SSDs. If you are on shared hosting with slow disk I/O, no amount of config tuning can fully eliminate save lag.
You can monitor disk I/O with the Linux iostat command:
iostat -x 1 5
Watch the %util column during a save. If it hits 100%, your disk is the bottleneck. Consider moving to faster storage or reducing the number of loaded chunks. See also our guide on the Linear world format, which can significantly reduce I/O overhead for world saves.
Reducing Dirty Chunks
Fewer dirty chunks mean smaller saves. Several configuration options help minimize the number of chunks that need writing:
- Lower simulation distance: Chunks outside the simulation distance do not tick, so they are less likely to be modified and marked dirty. A simulation distance of 5-6 is a good balance.
- Entity limits: Chunks with large numbers of entities get marked dirty frequently. Use Paper's entity per-chunk limits to keep counts reasonable.
- Redstone: Active redstone contraptions modify block states every tick, dirtying their chunks constantly. If certain chunks contain always-on redstone, consider whether the contraption can be redesigned. See our redstone lag guide.
- Hoppers: Hoppers check for items and transfer them every 8 ticks by default, modifying chunk data each time. Reducing hopper frequency or limiting hopper counts per chunk helps.
Backup Considerations
If you run a backup plugin that copies world files while the server is running, the backup process can conflict with auto-saves. Both operations compete for disk I/O, and if the backup reads a chunk file while the server is writing to it, you can get corrupted backups. Schedule backups during low-activity periods and consider pausing auto-saves during the backup window with /save-off and /save-on. Better yet, use a backup solution that creates filesystem snapshots (like ZFS snapshots or LVM snapshots) so the backup is instant and does not interfere with live I/O.
To reduce world save lag minecraft servers produce, the combination of Paper's incremental saves, reasonable chunk limits, and fast storage covers the vast majority of cases. For the full picture on maintaining 20 TPS, check our TPS optimization guide.
Need a server built for performance? Astroworld Hosting runs NVMe SSDs with optimized Paper configs on every plan.