
Minecraft Server Performance Tuning
Reduce Minecraft server lag by adjusting view distance, simulation distance, and Paper performance options.
Quick Wins for Lag
Lower view-distance in server.properties to 6-8. Default 10 is heavy on bandwidth and chunk loading.
Lower simulation-distance to 4-6. Entities and redstone beyond this distance do not tick. Simulation distance has a stronger impact on TPS than view distance.
Reduce max-players if you are hitting your slot limit and seeing TPS drops.
Use /gamerule random_tick_speed 3 (default) or lower to reduce random tick load. Higher values cause lag.
Paper-Specific Tuning
Paper has its own config files, both in config/: paper-global.yml (server-wide) and paper-world-defaults.yml (the defaults every world inherits). These replace the older paper.yml. A paper-world.yml inside a world directory overrides the defaults for that one world only.
In paper-global.yml, adjust chunk loading rates: player-max-chunk-generate-rate, player-max-chunk-load-rate, and player-max-chunk-send-rate.
In spigot.yml, set entity-activation-range to lower values to reduce mob AI processing.
Enable optimize-explosions and use-faster-teleporting in config/paper-world-defaults.yml.
Use the /tps command (op only) to see your server ticks per second. 20 TPS = perfect. Below 15 = noticeable lag.
Use spark (/spark profiler) to profile which plugins cause the most lag. The report can be viewed in a browser. Timings, which older guides name, no longer exists on current Paper.
Common Lag Sources
Large mob farms - lower the spawn limits in bukkit.yml, turn natural spawning off with /gamerule spawn_mobs false, or use a plugin like ClearLag.
Redstone clocks and dense redstone builds - limit with Paper redstone-implementation setting in config/paper-world-defaults.yml.
Many loaded chunks from spread-out players - lower view-distance or use a plugin to enforce grouping.
Heavy plugins - use spark (Paper) to profile which plugins cause the most lag.
Hopper farms - Paper has hopper-chunk-limit settings in config/paper-world-defaults.yml to reduce hopper processing load.