Comment on page
Experiencing lag? Try adjusting some settings to improve performance without compromising on gameplay!
The first thing to keep in mind is that there is no "best" configuration. These values will only improve performance to a certain degree - you should increase or decrease them to adjust to your server’s needs. However, it should be noted that the values provided below aim to be close to vanilla as possible, unlike certain more aggressive guides.
Note: Before you check out our recommended server softwares, please note the given playercounts do not apply to everyone! They're just a generic estimate: how many players your specific server can handle will differ.
50+ players - Purpur | Purpur is based off Pufferfish, meaning it contains all of its extra optimisations. Only use Purpur if you need its configuration options! Not recommended if you generally want a 'vanilla' MC experience.
server.properties - view-distance: 7The view distance option is the most impactful option on server performance. This option controls how many chunks the server will load around players and how far they will be able to see. For servers with under 10 players, settings this value to 10 or higher can be acceptable. This option should never be reduced below 3.
server.properties - simulation-distance: 5Simulation distance controls how many chunks around the player will tick. If you don't want to lower the view distance any further but would like to avoid chunk lag, decreasing this option can help. You should never have this option set higher than the view distance.
paper-world-defaults.yml - prevent-moving-into-unloaded-chunks: trueThis option will prevent players from entering chunks that are unloaded by forcing them back. If players were allowed to move into said chunks, it would cause a load on the main thread and create a lag spike. Pre-generating chunks is recommended! Try a plugin like Chunky.
bukkit.yml - spawn-limitsThis option controls the amount of mobs per-player the server will spawn. Adjust this value as needed! If you need more animals, increase animals. If you need more zombies, increase monsters. This section is also the best and simplest one for limiting entity lag.
spigot.yml - mob-spawn-range: 4This option controls the maximum distance from a player that mobs will spawn, in chunks. This should always be lower/equal to your simulation distance.
spigot.yml - nerf-spawner-mobs: trueThis will result in mobs losing their AI if they spawned from a mob spawner. Consider leaving this option to false to preserve a more ‘vanilla’ experience for players, as this option is obviously very noticeable.
paper-world-defaults.yml - per-player-mob-spawns: trueThis option has little impact on performance. However, if enabled, it ensures the server distributes mobs evenly to each player. This means a single mob farm won’t be able to fill the server’s mob cap!
paper-world-defaults.yml - max-entity-collisions: 2This option will reduce the amount of work the server does to compute collisions between entities. However, this will screw with the entity cramming gamerule – set this value equal or greater than your gamerule’s value if that’s important for you!
paper-world-defaults.yml - update-pathfinding-on-block-update: falseThis reduces the amount of pathfinding mobs do, as they do not recompute pathfinding upon a block update. Do note that mobs will appear to be slightly laggier if this is enabled.
paper-world-defaults.yml - fix-climbing-bypassing-cramming-rule: trueThis fixes a vanilla bug where the entity cramming gamerule doesn’t affect mobs on vines/ladders. It does break vanilla behaviour, so this option is very much up to you.
paper-world-defaults.yml - mob-spawner-tick-rate: 2This option controls the frequency at which spawners will attempt to spawn mobs. A value of 2 is practically impossible to notice as a player. If your world has many spawners, you may want to consider increasing this number to 4, but you should avoid going higher because it can reduce spawn rates.
paper-world-defaults.yml - armor-stands-do-collision-entity-lookups: falseThis value simply prevents armour stands from participating in collisions. It is mostly used to prevent lag machines.
paper-world-defaults.yml - disable-chest-cat-detection: trueWhen opened, chests scan if there’s a cat sitting on top of it. Do you really need this behaviour?
pufferfish.yml - dab.activation-dist-mod: 8This value controls how quickly the effects of DAB* wear off with distance. This value should generally not be set below 6. If you have a smaller server, consider disabling DAB altogether to preserve vanilla behaviour.
*DAB stands for the Dynamic Activation of Brain. When entities are near to the player, they will tick like normal, but the farther away entities get, their AI will be ticked less and less frequently. These values can affect players’ mob farms, so consider increasing the activation-dist-mod parameter or disabling the feature altogether.
paper-world-defaults.yml - nether-ceiling-void-damage-height: 127There are two reasons for this. Firstly, if players are allowed onto the nether roof, they can roam freely and generate loads of chunks - causing lag. Secondly, the number of entities spawning on the roof will also be somewhat significant. Together, these reasons form a compelling argument to leave the nether roof disabled – however, it’s up to you to decide whether your server needs it – as it could be considered a ‘vanilla’ feature.
paper-world-defaults.yml - optimize-explosions: trueWhen set to true, this option will perform explosions much faster! It is almost indistinguishable from vanilla – there is almost no reason to keep this value set to false.
paper-world-defaults.yml – anti-xray.enabled: truePaper’s anti-xray feature is one of the best around, and is our recommended go-to. It should be noted that engine 2 is recommended and more effective, but it has been known to cause problematic network issues for those on a weaker internet connection.
paper-world-defaults.yml - enable-treasure-maps: falseTreasure maps are poorly implemented by Mojang and will cause a lag spike when generated. This is because it can sometimes hang the server if the ‘treasure' is in an ungenerated chunk. However, this is safe to enable if your entire map is pregenerated.
paper-world-defaults.yml - redstone: ALTERNATE_CURRENT / EIGENCRAFTWhen enabled, this option replaces the vanilla redstone algorithm with a far faster algorithm. Either algorithm is incredibly similar to vanilla and should have no noticeable differences in the majority of scenarios.
paper-world-defaults.yml - grass-spread-tick-rate: 4This option controls how quickly grass/mycelium spreads. This causes grass to spread more slowly, but will result in improved performance on servers where many chunks are loaded and grass is thus constantly spreading.
• Timings is a simple way to see exactly what is lagging your server! As it's (v2) built into Paper, you just need to execute the /timings paste command and click the link you're provided with. If you're unsure how to read timings, check out this video tutorial by Aikar.
• Avoid dodgy forks! Those downstream of Paper/Pufferfish/Purpur have been known to be shockingly unstable while providing a minor performance impact at best.