How to Configure Mob Spawning Rates Properly
Complete guide to the three layers of mob spawning configuration in Minecraft servers: bukkit.yml spawn limits, spigot.yml ranges, and Paper per-player mob spawns.
Why Mob Spawning Is the Hardest Thing to Tune
Mob spawning is the single biggest source of both performance problems and player complaints on Minecraft servers. Get it wrong in one direction and your TPS drops to 15 because thousands of zombies are chewing through CPU cycles. Get it wrong in the other direction and players complain that the world feels dead, mob farms do not work, and survival has no challenge. The difficulty is that mob spawning is controlled by three separate configuration files that interact with each other in non-obvious ways.
This guide walks through all three layers, bukkit.yml, spigot.yml, and Paper config, explains how they connect, and gives you tested values for different server sizes. If you have not read those individual config guides yet, this guide will still make sense, but you may want to reference them afterward for settings not covered here.
Layer 1: bukkit.yml, Spawn Limits (The Cap)
The first layer is bukkit.yml's spawn-limits section. These numbers define the maximum number of naturally spawned mobs in each category that can exist around a player. The key categories are:
spawn-limits:
monsters: 70
animals: 10
water-animals: 5
water-ambient: 20
water-underground-creature: 5
axolotls: 5
ambient: 15
The vanilla default for monsters is 70. That means up to 70 hostile mobs can exist within the spawn range of a given player at any time. If there are already 70, no more will spawn. When mobs die or despawn, new ones fill the cap.
This is a per-world cap by default (pre-Paper). If two players are in the same world, they share the same cap of 70 monsters. Player A standing in a mob farm can hog all 70 slots, leaving Player B with zero natural spawns. This is the fundamental problem that Paper solves, more on that below.
What Values Should You Use?
Lower values mean fewer mobs, better TPS, but potentially boring gameplay. Here is a starting point based on server population:
| Server Size | monsters | animals | water-animals | ambient |
|---|---|---|---|---|
| 1-10 players | 70 (vanilla) | 10 | 5 | 6 |
| 10-30 players | 50 | 8 | 3 | 3 |
| 30-60 players | 35 | 6 | 2 | 1 |
| 60-100+ players | 25 | 4 | 2 | 1 |
Ambient mobs (bats) are safe to set very low on any server. They serve no gameplay purpose and their flapping AI is surprisingly expensive. Water-ambient (tropical fish) can also be reduced without anyone noticing.
Layer 2: spigot.yml, Spawn Range and Activation Range
Spigot adds two critical settings that define where mobs spawn relative to players and how far away they need AI processing.
mob-spawn-range
world-settings:
default:
mob-spawn-range: 8
This value is measured in chunks (not blocks). A value of 8 means mobs can spawn within an 8-chunk radius (128 blocks) of each player. This range interacts directly with bukkit.yml's spawn-limits: the mob cap fills within this radius. If you reduce mob-spawn-range to 6, all 70 (or whatever you set) monster slots fill within a 96-block radius instead of 128. This concentrates mobs closer to the player.
Recommended: 6 for most servers. Going below 4 starts feeling unnatural, mobs only appear very close to the player, which removes the feeling of wandering into danger. Keep mob-spawn-range at or below your effective view distance; setting it higher than view distance wastes spawn attempts on chunks the player cannot see.
entity-activation-range
entity-activation-range:
animals: 32
monsters: 32
raiders: 48
misc: 16
water: 16
villagers: 32
flying-monsters: 32
This is where the real performance gains live. Entity activation range determines the distance at which mobs run their full AI. Mobs outside this range are "deactivated", they still exist, are still visible, but they stop pathfinding, attacking, and processing behaviors. They stand still or drift randomly at minimal CPU cost.
The distinction matters: a deactivated zombie 40 blocks away does not chase you. It stands there doing nothing. When you walk within 32 blocks (the default activation range for monsters), it suddenly activates and starts pathfinding toward you. Players rarely notice this because by the time they see a mob (within entity tracking range), it is usually also within activation range.
How activation range affects farms: This is the setting that breaks mob farms more than any other. If your mob farm positions mobs at 33 blocks from the player's AFK spot, and monster activation range is 32, those mobs are deactivated and will not walk into kill zones, fall through trapdoors, or process any farm mechanics. Farm-friendly servers keep activation ranges at vanilla (32) or slightly lower. Performance-focused servers drop them aggressively.
Recommended for different priorities:
| Priority | monsters | animals | villagers | misc |
|---|---|---|---|---|
| Farm-friendly | 32 | 32 | 32 | 16 |
| Balanced | 24 | 16 | 24 | 12 |
| Performance-focused | 16 | 12 | 16 | 8 |
Layer 3: Paper, Per-Player Mob Spawns and Despawn Ranges
Paper adds the most important spawning feature: per-player mob caps. This single setting solves the biggest problem with vanilla mob spawning on multiplayer servers.
per-player-mob-spawns
# paper-world-defaults.yml
entities:
spawning:
per-player-mob-spawns: true
When true, each player gets their own independent mob cap. If the monster limit is 50, Player A can have 50 monsters around them AND Player B can have 50 monsters around them, simultaneously. Without this, Player A's mob farm fills the global cap and Player B sees no spawns.
This setting should always be true on Paper servers. There is no meaningful performance cost, the total mob count stays similar because each player's cap is calculated independently. The difference is fairness: one player cannot monopolize spawns.
despawn-ranges
entities:
spawning:
despawn-ranges:
monster:
hard: 72
soft: 30
These ranges control when mobs despawn (are removed from the world). There are two thresholds:
- soft: Mobs beyond this distance (in blocks) from the nearest player have a random chance to despawn each tick. The farther past the soft range, the higher the chance.
- hard: Mobs beyond this distance are instantly removed. No exceptions.
The interaction with mob-spawn-range is important: if mob-spawn-range is 6 chunks (96 blocks) but hard despawn is 72 blocks, mobs can spawn up to 96 blocks away and immediately get despawned at 72. That wastes spawn attempts. Ideally, hard despawn >= mob-spawn-range * 16. With mob-spawn-range at 6, hard despawn should be at least 96. If you lower mob-spawn-range to 4 (64 blocks), you can drop hard despawn to 64-72 safely.
Recommended:
| mob-spawn-range | Soft Despawn | Hard Despawn |
|---|---|---|
| 8 (default) | 30 | 96-128 |
| 6 | 28 | 72-96 |
| 4 | 24 | 56-72 |
How All Three Layers Interact
Here is the full lifecycle of a mob spawn on a Paper server with all three layers configured:
- The server checks if Player A's personal mob cap (from bukkit.yml spawn-limits, distributed per-player by Paper) has room for another monster.
- If yes, it picks a random location within mob-spawn-range chunks (spigot.yml) of Player A.
- If the location is valid (correct light level, solid block below, enough space), a mob spawns.
- The mob checks entity-activation-range (spigot.yml). If the player is within range, the mob runs full AI. If not, it idles.
- Every tick, the mob checks despawn-ranges (paper config). If it is beyond the soft range, it may despawn randomly. If beyond hard, it is removed immediately.
- If the mob despawns, step 1 opens a slot in the cap and the cycle repeats.
Understanding this cycle is critical for debugging spawn problems. If players complain mobs are not spawning, check the cap first (is it full?), then check the spawn range (are mobs spawning too far away and immediately despawning?), then check activation range (are mobs spawning but frozen so the player thinks they are absent?).
Testing Your Configuration
Paper provides a built-in diagnostic command for mob spawning:
/paper mob caps
This shows each player's current mob count versus their personal cap. If a player's monster count is consistently at their cap, mobs are spawning and despawning correctly. If the count is well below the cap, something is preventing spawns, usually too few valid spawn locations (light levels, block types) or a mob-spawn-range that does not cover enough eligible terrain.
You can also use /spark tps from the Spark profiler plugin to monitor your TPS before and after changes. Make one change at a time and observe for at least 30 minutes before adjusting further. Mob spawning changes take time to stabilize because existing mobs need to despawn and new ones need to fill the modified caps.
Farm-Friendly vs Performance-Friendly Presets
Here are two complete presets you can copy. Choose based on your server's priority:
Farm-Friendly (preserves most vanilla farm behavior)
# bukkit.yml
spawn-limits:
monsters: 50
animals: 8
ambient: 3
# spigot.yml
mob-spawn-range: 6
entity-activation-range:
monsters: 32
animals: 24
villagers: 32
# paper-world-defaults.yml
per-player-mob-spawns: true
despawn-ranges:
monster:
soft: 28
hard: 96
Performance-Friendly (maximizes TPS, some farm impact)
# bukkit.yml
spawn-limits:
monsters: 30
animals: 4
ambient: 1
# spigot.yml
mob-spawn-range: 4
entity-activation-range:
monsters: 20
animals: 12
villagers: 16
# paper-world-defaults.yml
per-player-mob-spawns: true
despawn-ranges:
monster:
soft: 24
hard: 64
The performance preset will break some mob farm designs that rely on mobs being active at long range or on high mob density. If your server has a strong farming community, use the farm-friendly preset and look for performance gains in other areas first, the optimization guide has plenty of other options before you need to sacrifice farm mechanics.
Need a server for this? Astroworld Hosting runs NVMe SSD, Pterodactyl panel, and DDoS protection on every plan. See features , plans from €6.39/mo.