NewSchokr 13 is here. A whole new UI, seven locations, snapshots and more. Read more →

Paper config optimization: safe settings to reduce lag

Tune paper-world-defaults.yml, spigot.yml and bukkit.yml for better performance on your Paper server, with safe values and the trade-offs explained.

Updated · 2 min read

Paper has many settings that trade a little vanilla accuracy for better performance. The safe approach is to change a few well-understood settings, restart, and measure with spark, rather than copying a huge "optimized" config you do not understand.

Where the files are

FileApplies to
config/paper-global.ymlServer-wide Paper settings.
config/paper-world-defaults.ymlDefault settings for every world.
world/paper-world.yml (in each world folder)Overrides for one world only.
spigot.ymlSpigot settings, including entity activation range.
bukkit.ymlSpawn limits and spawn rates.

Take a snapshot before editing, stop the server, change values in the file manager, then start it again. Keep the indentation exactly as it is.

paper-world-defaults.yml

Only the relevant parts are shown. Find each key in its existing section and change the value.

chunks:
  delay-chunk-unloads-by: 10s
  entity-per-chunk-save-limit:
    arrow: 16
    experience_orb: 16
    snowball: 8
    ender_pearl: 8
    fireball: 8
    small_fireball: 8
collisions:
  max-entity-collisions: 2
environment:
  optimize-explosions: true
misc:
  redstone-implementation: ALTERNATE_CURRENT
tick-rates:
  mob-spawner: 2

What each does:

  • entity-per-chunk-save-limit: caps how many of these projectiles are saved in a chunk, which prevents chunks bloated with arrows or XP orbs. -1 means no limit.
  • max-entity-collisions: how many collisions an entity processes per tick. Lower values help crowded mob farms. Very low values can slightly change how packed mobs push each other.
  • optimize-explosions: faster explosion calculations. Helps TNT and creeper-heavy servers.
  • redstone-implementation: ALTERNATE_CURRENT and EIGENCRAFT are faster than VANILLA. They can break rare contraptions that depend on vanilla update order, so keep VANILLA on technical redstone servers.
  • mob-spawner: how often spawner blocks tick. 2 halves their cost and slows spawner farms slightly.

spigot.yml

world-settings:
  default:
    entity-activation-range:
      animals: 16
      monsters: 24
      misc: 8
      water: 8
      villagers: 16
    merge-radius:
      item: 3.5
      exp: 4.0
  • entity-activation-range: entities further than this from a player tick less often. Lower values save a lot of CPU but can affect far-away farms.
  • merge-radius: merges nearby dropped items and XP orbs into fewer entities.

bukkit.yml

spawn-limits:
  monsters: 50
  animals: 8
  water-animals: 3
  water-ambient: 10
  ambient: 5
ticks-per:
  monster-spawns: 2

Lower spawn limits mean fewer mobs per player. Going too low makes the world feel empty and breaks mob farms, so reduce gradually.

server.properties

simulation-distance and view-distance usually matter more than any of the above. A simulation distance of 4 to 6 and a view distance of 7 to 10 is a common balance.

What not to do

  • Do not copy an entire config from another server or an old guide. Key names change between Paper versions, and outdated settings can be ignored or cause errors.
  • Do not change many settings at once. If something breaks, you will not know which one did it.
  • Do not chase TPS that is already 20. If spark shows the server is healthy, extra tuning only costs vanilla behaviour.

Measure the result

Run spark before and after your changes and compare MSPT under similar player counts. See how to use spark and TPS and MSPT explained.

For details on every option, see the Paper configuration docs.