Minecraft Server Performance Optimization Guide
How to reduce lag, improve TPS, and optimize your Minecraft Java server with settings, flags, and plugins.
A comprehensive guide to getting the best performance out of your Minecraft server.
Use the Right Server Software
| Software | Performance | Plugins | Mods |
|---|---|---|---|
| Vanilla | Poor | No | No |
| Spigot | Good | Yes | No |
| Paper | Best | Yes | No |
| Purpur | Best | Yes | No |
| Forge | Moderate | No | Yes |
| Fabric | Good | No | Yes |
Paper is recommended for most servers — it includes significant performance patches over Vanilla and Spigot.
Apply Aikar's JVM Flags
These optimize Java's garbage collection for Minecraft. See JVM Flags Guide.
Reduce View & Simulation Distance
The biggest performance lever:
view-distance=8
simulation-distance=6See View Distance Guide for recommendations by player count.
Don't Over-Allocate RAM
More RAM is NOT always better. Over-allocation causes longer GC pauses.
| Players | Recommended RAM |
|---|---|
| 1–10 | 2–4 GB |
| 10–20 | 4–6 GB |
| 20–50 | 6–10 GB |
Pre-Generate Chunks
Chunk generation is the most CPU-intensive task. Pre-generate your world using the Chunky plugin:
/chunky radius 5000
/chunky startThis generates all chunks within 5000 blocks of spawn. See Pre-Generate Chunks.
Paper-Specific Optimizations
If using Paper, edit config/paper-world-defaults.yml:
chunks:
max-auto-save-chunks-per-tick: 8
prevent-moving-into-unloaded-chunks: true
spawn:
keep-spawn-area-loaded: false
entity-per-chunk-save-limit:
experience_orb: 16
arrow: 16Also in config/paper-global.yml:
chunk-system:
gen-parallelism: default
worker-threads: -1Spigot/Bukkit Optimizations
In spigot.yml:
world-settings:
default:
mob-spawn-range: 6
entity-activation-range:
animals: 16
monsters: 24
misc: 8
merge-radius:
exp: 6.0
item: 4.0Anti-Lag Plugins
| Plugin | Purpose |
|---|---|
| Spark | Profiler — identifies what's causing lag |
| ClearLagg | Removes ground items and entities on a schedule |
| FarmControl | Limits mob farms to reduce entity count |
Monitor with Spark
Install Spark and run:
/spark tps
/spark profiler startThis shows exactly what's consuming your server's tick time.
Related Guides
How is this guide?

Give Operator (OP) Permissions on Your Minecraft Server
How to OP yourself and other players, understand permission levels 1-4, and manage admin access on your Minecraft server.
Change Max Players on Your Minecraft Server
How to increase or decrease the maximum player count on your Minecraft Java server.