Server Hosting

Minecraft Server Optimization Guide for 2025: Eliminate Lag and Maximize TPS

The definitive 2025 guide to Minecraft server optimization. Cover server software, JVM tuning, chunk management, entity optimization, and monitoring tools.

Game Server Hosting Host a Minecraft Server →

Why Optimization Matters

A Minecraft server runs on a single main thread that processes 20 ticks per second. When that thread falls behind, players experience block placement delays, rubber-banding, entity freezing, and general unresponsiveness. This is commonly called “lag” and it is the number one reason players leave a server.

The good news is that most lag is preventable. With the right server software, configuration, and monitoring, you can maintain a stable 20 TPS even with dozens of players online.

Step 1: Choose the Right Server Software

Your choice of server software is the single most impactful optimization decision.

For Plugin-Based Servers: Paper

Paper includes hundreds of performance patches on top of Spigot. It fixes vanilla bugs, optimizes entity processing, improves chunk loading, and provides extensive configuration options for fine-tuning performance. Switching from vanilla or Spigot to Paper can improve TPS by 20 to 50 percent on busy servers with no other changes.

Paper supports all Bukkit and Spigot plugins. There is no reason to run Spigot in 2025.

For Modded Servers: Fabric with Optimization Mods

Fabric’s lightweight architecture combined with dedicated optimization mods delivers the best modded server performance:

  • Lithium: Fixes core inefficiencies in mob AI, world generation, and block tick processing. No gameplay changes, significant performance gains.
  • C2ME: Parallelizes chunk generation across multiple CPU cores. Dramatically reduces lag when players explore new territory.
  • FerriteCore: Reduces memory usage, which decreases garbage collection pauses.
  • Starlight: Rewrites the light engine for faster light updates during block placement and world generation.

Install all four together. They are compatible and address different bottlenecks.

For Forge/NeoForge: Selective Optimization

The Forge ecosystem has fewer optimization mods, but Embeddium (a Forge port of Sodium’s rendering improvements) and FerriteCore (available for Forge) help significantly. NeoForge inherits these benefits and is generally recommended for newer Minecraft versions.

Step 2: Pre-Generate Your World

Chunk generation is one of the most CPU-intensive operations a Minecraft server performs. Every time a player walks into unexplored territory, the server must generate terrain, structures, caves, biomes, and mob spawns in real time. On busy servers, multiple players exploring simultaneously can tank TPS.

The solution is pre-generation. Install the Chunky plugin and generate terrain before players need it.

/chunky radius 5000
/chunky start

A 5000-block radius covers most early-game exploration. For established servers, consider generating 10000 blocks or using a world border to limit exploration to pre-generated areas.

Pre-generation alone eliminates the largest source of lag spikes on most servers.

Step 3: Tune simulation-distance and view-distance

These two settings control the bulk of per-player server load.

simulation-distance determines how far from each player the server actively processes game logic. Every additional chunk in this radius means more mob AI, redstone, crop growth, and block updates to calculate.

Recommended: 4-6 (default is 10)

Setting this to 4 or 5 is the single largest configuration-based performance improvement you can make. Players will not notice the difference in normal gameplay.

view-distance determines how many chunks of terrain players can see. This is less CPU-intensive than simulation-distance but consumes more RAM and network bandwidth.

Recommended: 8-10 (keep higher than simulation-distance)

This gives players a reasonable visual range while keeping the simulation area tight.

Step 4: Optimize Entity Processing

Entities (mobs, animals, dropped items, minecarts) are processed every tick and represent the second largest source of lag after chunk generation.

Reduce Mob Caps

In Paper’s paper-world-defaults.yml, lower the spawn limits:

CategoryDefaultOptimized
monsters7040-50
animals106-8
water-animals52-3
water-ambient205-10
ambient153-5

Enable Per-Player Mob Spawns

Set per-player-mob-spawns: true in Paper configuration. This distributes the mob cap across individual players rather than globally. Without this, a single player sitting in a mob farm consumes the entire server’s mob budget.

Tune Entity Activation Range

Paper’s entity activation range controls how far from a player entities receive full AI processing. Entities outside this range use simplified logic or skip ticks entirely.

Default ranges are reasonable but can be tightened on high-population servers. Monsters beyond 32 blocks, animals beyond 16 blocks, and miscellaneous entities beyond 8 blocks receive reduced processing.

Step 5: Optimize Redstone

Vanilla Minecraft’s redstone engine is notoriously inefficient. It recalculates far more than necessary on every update.

In Paper, set redstone-implementation: ALTERNATE_CURRENT in paper-world-defaults.yml. This replaces the vanilla redstone engine with a much faster alternative that produces identical results for the vast majority of redstone builds. A few highly specific redstone designs that rely on update order quirks may behave differently, but this is extremely rare.

Step 6: Tune JVM Garbage Collection

Java’s garbage collector periodically pauses the server to reclaim unused memory. Poorly tuned GC settings cause noticeable lag spikes.

Key Principles

Match Xms and Xmx. Set the minimum and maximum heap size to the same value. This prevents the JVM from constantly resizing memory, which triggers additional GC pauses.

Do not over-allocate. Giving a server 16 GB when it uses 4 GB means the garbage collector must scan four times more memory. Allocate based on actual usage, observable through Spark’s memory reports.

Use G1GC with tuned parameters. The G1 garbage collector with Aikar’s flags is the standard for Minecraft servers in 2025. These flags optimize G1GC specifically for Minecraft’s memory allocation patterns.

-Xms4G -Xmx4G -XX:+UseG1GC -XX:+ParallelRefProcEnabled
-XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions
-XX:+DisableExplicitGC -XX:G1NewSizePercent=30
-XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=8M
-XX:G1ReservePercent=20 -XX:InitiatingHeapOccupancyPercent=15
-XX:G1MixedGCLiveThresholdPercent=90 -XX:SurvivorRatio=32
-XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1

Adjust the -Xms and -Xmx values based on your server’s actual memory needs.

Step 7: Monitor Continuously

Optimization is not a one-time task. Player counts change, new plugins are added, and Minecraft updates alter performance characteristics.

Install Spark Permanently

Spark is the standard profiler for Minecraft servers. It works on Paper, Fabric, Forge, and NeoForge. Keep it installed at all times.

  • /spark tps — Check current ticks per second. Healthy is a steady 20.
  • /spark profiler — Generate a detailed CPU usage report showing exactly what consumes processing time.
  • /spark health — View memory usage, GC activity, and system resource utilization.

When TPS drops, a Spark profile tells you whether the cause is entity processing, chunk loading, plugin overhead, or something else entirely. This eliminates guesswork and lets you target the actual bottleneck.

Watch for Warning Signs

  • TPS consistently below 19: Something is consuming too many resources
  • Periodic TPS drops at regular intervals: Likely autosave or GC pauses
  • TPS drops when specific players log in: Check their base for mob farms or redstone
  • Gradual TPS decline over days: Entity accumulation or memory leak in a plugin

Quick Reference

  1. Use Paper (plugins) or Fabric with Lithium + C2ME (mods)
  2. Pre-generate chunks with Chunky
  3. Set simulation-distance to 4-6
  4. Set view-distance to 8-10
  5. Enable ALTERNATE_CURRENT redstone
  6. Enable per-player mob spawns
  7. Lower mob spawn caps
  8. Match Xms and Xmx, use G1GC
  9. Do not over-allocate RAM
  10. Install and use Spark continuously

Optimized Hosting from the Start

Reactor’s Minecraft hosting runs on high-performance hardware with SSD storage and dedicated CPU resources. Servers come pre-configured with optimized settings, and you have full access to every configuration file through SFTP for further tuning. Automatic backups, a web console, and one-click restarts let you focus on optimization rather than infrastructure management.

For the best server settings breakdown, see our companion guide on Minecraft server settings for performance.

Tags: minecraftoptimizationperformancetpslagpaperfabricserver-hosting2025

Ready to host your game server?

Reactor offers instant setup, European hardware, full mod support, and 24/7 uptime. Starting at just €4.40/month.

Browse Game Servers →

Related Posts