Nothing kills a server faster than lag. Players leave, word spreads, and your 50-player community is down to 3 regulars before you know it. But here's the thing: most lag is fixable. These 10 optimizations cover 90% of performance issues we see as a host.

Step 1: Diagnose the Problem First

Before you change anything, figure out what kind of lag you're dealing with:

Step 1

Install Spark and profile your server

spark profiler — let it run for 5 minutes while players are online. Spark will show you exactly which entities, tick phases, or plugins are consuming TPS. This single tool eliminates guesswork.

Step 2

Use Aikar's JVM flags

Default JVM args are tuned for desktop apps, not Minecraft servers. Replace them with Aikar's optimized flags — these reduce garbage collection stutter by up to 70%.

Key changes: Use G1GC, set Xms equal to Xmx, enable AlwaysPreTouch. Our panel has a built-in Java flags tuner with these presets ready to go.

Step 3

Switch to Paper or Purpur

Vanilla Minecraft server.jar is not optimized for performance. Paper (and its fork Purpur) include thousands of optimizations: chunk loading batching, redstone tick limits, entity activation ranges, and more. Most public servers use Paper. Your modpack almost certainly supports it.

Step 4

Tune paper.yml — these 5 settings matter most

Open paper.yml in your server directory and adjust:

  • delay-chunk-unloads-by: 10s — keeps recently used chunks in memory
  • entity-activation-range: monsters 32, animals 24, misc 16 — less CPU spent on far-away entities
  • per-player-mob-spawns: true — spreads mob load across players instead of globally
  • max-entity-collisions: 2 — prevents carpet-lag in large farms
  • redstone-implementation: ALTERNATIVE_CURRENT — reduces redstone tick cost
Step 5

Lower view-distance and simulation-distance

Every chunk in view-distance costs CPU and RAM. Setting view-distance: 8 instead of 12 cuts chunk load overhead by roughly 40%. For simulation-distance, 6 is plenty for most servers — it controls how far from players mobs actually tick.

Step 6

Use a proxy (Velocity) for server networks

If you run multiple game servers (lobby, survival, creative), put Velocity in front. A proxy handles player connections and routing, so your backend servers only deal with gameplay. It also protects your backend IP addresses from attacks.

Step 7

Audit your plugins — one bad plugin can tank TPS

Plugins with inefficient SQL queries, repeating scheduler tasks, or heavy per-tick calculations can single-handedly destroy performance. Use /spark health to see CPU usage by plugin. Remove or replace the worst offenders.

Step 8

Check your hardware — is your host the bottleneck?

If you've optimized everything software-side and still see TPS drops during peak hours, the hardware is the problem. Signs your host is overselling:

  • TPS drops at the same time every day
  • High CPU steal time (visible in /neofetch or panel metrics)
  • Disk I/O latency spikes (NVMe vs SATA makes a visible difference)

Revitalize publishes real-time node load so you can see exactly how much headroom your node has before you buy.

Step 9

Enable sleep-with-empty-map for SMP servers

Setting players-sleeping-percentage: 0 or using a sleep-vote plugin lets a single player skip the night. This prevents massive mob spawns from building up overnight, which causes morning lag spikes.

Step 10

Monitor, measure, repeat

Performance tuning isn't a one-time task. Set up Spark profiling weekly and compare your TPS, MSPT, and memory graphs. Our Pulse monitoring gives you historical performance data so you can spot trends before they become outages.

If after all 10 steps your server still lags, the issue is almost certainly node overselling or CPU throttling at the host level. Revitalize doesn't oversell — every node is monitored for actual available headroom before a new server is deployed.

Need a host that doesn't fight your optimizations?

All-NVMe, Ryzen CPUs, no overselling, and Pulse monitoring so you can see exactly how your server is performing.

Try Revitalize Hosting →
50% off first month with code REVITALIZE • 24-hour refund

Frequently Asked Questions

How do I check my Minecraft server's TPS?

Run /tps in-game or install Spark (/spark tps). 20.0 is perfect, 18+ is fine, below 15 is unplayable.

Will more RAM fix my lag?

Only if you're hitting garbage collection limits. Check your memory usage graph first. If you're using 80%+ of allocated RAM, add more. If you're under 60%, RAM isn't your bottleneck — CPU or disk is.

Can plugins cause lag?

Absolutely. A single poorly-coded plugin with an inefficient loop in a onTick event can drop TPS by 50%. Always profile before blaming hardware.

Is Paper better than Fabric for performance?

Paper is optimized out of the box and works with Bukkit plugins. Fabric requires separate performance mods (Lithium, Sodium server-side) but can achieve similar results. For most servers, Paper is the easier choice.