Minecraft server help centre

Performance

Optimize the Paper configuration of your Minecraft server

Paper creates its configuration files on the first start. The defaults stay close to the normal game, so farms and redstone behave as players expect. On a busy server a few changes take a lot of work off the main thread.

This guide lists the keys by file, with the default and a value that is safe for a survival server. Values marked as changing gameplay are the ones to announce to your players.

In short

To optimize Paper, edit four files in the Files tab: config/paper-world-defaults.yml, config/paper-global.yml, spigot.yml and bukkit.yml. The settings with the most effect are entity activation range, mob spawn limits, despawn ranges, the redstone implementation, hopper timing and the per-chunk limits for projectiles. Change one group at a time, restart, and compare TPS on a busy evening before you change the next.

Where the Paper configuration files are

FileFolderApplies to
paper-global.ymlconfigThe whole server: chunk loading rates, threads, packet limits
paper-world-defaults.ymlconfigEvery world, unless a world has its own override
paper-world.ymlEach world folder, such as worldThat one world; only the keys you put in it
spigot.ymlTop folderEntity activation, tracking, merging, hoppers, per world under world-settings
bukkit.ymlTop folderMob spawn limits and spawn timing, chunk clean-up, autosave

Open them in the Files tab. Purpur reads all of these too, plus its own purpur.yml. For the differences between the server types, see Paper, Purpur or Spigot.

  1. Make a backup in the Backups tab, so a broken file is one restore away.
  2. Change one group of settings.
  3. Save the file and restart the server. Paper reads these files at start.
  4. Check the console for config errors, then compare TPS with the evening before.

YAML files use spaces for indents, never tabs. A wrong indent can stop the file from loading, and the console names the line.

Entity activation range in spigot.yml

Mobs further from a player than the activation range tick less often: they stand still until something wakes them. This is one of the biggest savings on a server with many animals and villagers.

world-settings:
  default:
    entity-activation-range:
      animals: 24
      monsters: 24
      raiders: 48
      misc: 8
      water: 8
      villagers: 24
      flying-monsters: 32
KeyDefaultSafe value
animals3224
monsters3224
raiders6448
misc168
water168
villagers3224

Changes gameplay: farms that need mobs to move, such as some mob grinders, work slower when the player stands far away. Very low ranges make mobs stand still close enough for players to see it.

Mob spawn limits in bukkit.yml and Paper

bukkit.yml sets how many mobs of each kind may exist in the area around players. Fewer mobs means fewer entities to tick.

spawn-limits:
  monsters: 50
ticks-per:
  monster-spawns: 2
  • spawn-limits.monsters is 70 by default. 50 is still a dangerous night, with fewer mobs to tick.
  • ticks-per.monster-spawns is 1, so the server tries to spawn monsters every tick. 2 halves those attempts.
  • ticks-per.animal-spawns is 400 by default and can stay.

config/paper-world-defaults.yml has the same limits under entities.spawning.spawn-limits and ticks-per-spawn. Their default is -1, which means: use the value from bukkit.yml. Set a number there only to give one world other limits.

Leave entities.spawning.per-player-mob-spawns at true. It spreads spawns over players, so one player's mob farm does not use up the spawns for everyone else.

Entity collisions and per-chunk entity limits in paper-world-defaults.yml

collisions:
  max-entity-collisions: 2
chunks:
  entity-per-chunk-save-limit:
    arrow: 16
    ender_pearl: 8
    experience_orb: 16
    fireball: 8
    small_fireball: 8
    snowball: 8
KeyDefaultSafe valueEffect
collisions.max-entity-collisions82Crowded mobs check fewer neighbours to push
chunks.entity-per-chunk-save-limit.arrow-1 (no limit)16Only 16 arrows per chunk are saved; the rest disappear on unload
chunks.entity-per-chunk-save-limit.experience_orb-116Stops chunks full of orbs near XP farms
chunks.entity-per-chunk-save-limit.snowball and others-18Same idea for projectiles

The save limit only applies when a chunk is saved and unloaded. It does not remove anything in loaded chunks, so players do not see items vanish in front of them.

Despawn ranges and item despawn time

Mobs further than the hard despawn range from every player are removed at once. Between the soft and the hard range they despawn at random. In Paper each mob category has its own pair:

entities:
  spawning:
    despawn-ranges:
      monster:
        soft: default
        hard: 96

default uses the normal game values, 32 soft and 128 hard for monsters. A hard range of 96 removes far monsters sooner, so new ones can spawn near players.

Item despawn in spigot.yml and Paper

  • item-despawn-rate in spigot.yml is 6000 ticks, which is five minutes, the same as the normal game. Lowering it to 4000 clears dropped items after about three and a half minutes. This changes gameplay: players who die have less time to fetch their items.
  • entities.spawning.alt-item-despawn-rate in paper-world-defaults.yml sets a shorter time for listed items only. Turn it on with enabled: true and list items such as cobblestone: 300, so cheap blocks from mining vanish after 15 seconds while tools and armour keep the full five minutes.

Item and XP merging in spigot.yml

Dropped items of the same type that lie close together merge into one stack. Fewer stacks means fewer entities. The radius is set per world in spigot.yml, in blocks:

world-settings:
  default:
    merge-radius:
      item: 2.5
      exp: 3.0

Check the current values in your file first. A larger radius merges more, which helps near mob farms and big explosions. It also makes items jump towards each other, which some item sorters do not expect. For exp, -1 keeps the normal game behaviour. On Paper, entities.behavior.only-merge-items-horizontally: true in paper-world-defaults.yml stops items from merging through floors.

Redstone and hoppers on Paper

File and keyDefaultSafe valueEffect
paper-world-defaults.yml, misc.redstone-implementationVANILLAALTERNATE_CURRENTLarge redstone builds update far fewer blocks
spigot.yml, ticks-per.hopper-transfer88Ticks between item moves; the normal game speed
spigot.yml, ticks-per.hopper-check18How often an empty hopper looks for items above it
paper-world-defaults.yml, hopper.cooldown-when-fulltruetrueA full hopper waits before trying again
paper-world-defaults.yml, hopper.disable-move-eventfalsefalse, unless no plugin needs ittrue skips a plugin event on every item move

ALTERNATE_CURRENT gives the same results as the normal game for almost all builds, but can change the order in which some contraptions fire. Test your players' main farms after switching. EIGENCRAFT is the third option.

Raising hopper-check makes empty hoppers react a few ticks later, which players rarely notice. Leave hopper-transfer at 8, because a different value changes the speed of every item sorter. Set hopper.disable-move-event to true only when no plugin uses hopper events; protection and shop plugins often do.

Explosions and TNT

  • environment.optimize-explosions in paper-world-defaults.yml is false. true caches parts of the blast calculation and makes TNT and creepers much cheaper. Blast results stay practically the same.
  • max-tnt-per-tick in spigot.yml is 100. Lower it to 50 if players build TNT cannons that drop the TPS; extra TNT waits for the next tick.

Chunk loading and saving settings

File and keyDefaultWhat it does
paper-global.yml, chunk-loading-basic.player-max-chunk-send-rate75.0Chunks per second sent to each player
paper-global.yml, chunk-loading-basic.player-max-chunk-load-rate100.0Chunks per second loaded from disk for each player
paper-global.yml, chunk-loading-basic.player-max-chunk-generate-rate-1.0 (no limit)New chunks per second generated for each player
paper-world-defaults.yml, chunks.delay-chunk-unloads-by10sKeeps chunks loaded briefly after a player leaves them
paper-world-defaults.yml, chunks.max-auto-save-chunks-per-tick24Spreads autosave over many ticks
paper-world-defaults.yml, chunks.prevent-moving-into-unloaded-chunksfalsetrue stops players who outrun chunk loading
bukkit.yml, chunk-gc.period-in-ticks600How often unused chunks are unloaded

On a fresh world with many explorers, set player-max-chunk-generate-rate to a number such as 40 to stop one player on an elytra from taking all the generation time. On a world that is already pre-generated, the limit hardly matters. Setting prevent-moving-into-unloaded-chunks to true holds fast players at the edge of loaded land until it catches up.

Paper settings per world

To give one world other values, create paper-world.yml in that world's folder, such as world_nether, and put only the keys you want to change in it. Every other key comes from paper-world-defaults.yml.

entities:
  spawning:
    spawn-limits:
      monster: 40

For spigot.yml, add a section with the world's folder name under world-settings, next to default. Restart after either change. When TPS is still low after these settings, reduce lag shows how to find the build or plugin behind it.

Questions from Minecraft server owners

What is the best Paper config for performance?

Start with a lower entity activation range, monster spawn limit 50, optimize-explosions: true, ALTERNATE_CURRENT redstone and per-chunk save limits for arrows and orbs. Then test one change at a time.

Where is paper-world-defaults.yml?

In the config folder in the top folder of the server. Paper creates it on the first start.

Do Paper config changes need a restart?

Yes. Save the file and restart the server. Reload commands for these files are not reliable.

Will these settings break my farms?

Most do not. Lower activation ranges slow mob farms when nobody stands close, and a shorter item despawn time affects item drops. Announce those two to your players.

Is ALTERNATE_CURRENT safe for redstone?

For nearly all builds, yes. It updates fewer blocks, but some contraptions that rely on exact update order can fire differently. Test the important farms after switching.

Can I set Paper settings for one world only?

Yes. Put a paper-world.yml with only the changed keys in that world's folder, and use a section with the world name under world-settings in spigot.yml.

Checked against the configuration files that Paper for Minecraft Java 1.21.11 writes, October 2026. Written by the Cheapest Minecraft Hosting team, first published , updated .