Skip to main content

Minecraft Server Optimization Guide

Quick and practical optimizations for your Minecraft server. Choose your server type below and follow the relevant steps.

Before You Start
  • Always backup your server files before making changes
  • REQUIRED: Pre-generate your world locally on your PC, then upload via SFTP
  • IMPORTANT: World pre-generation is NOT allowed on our servers. Any server continuously using 30%+ CPU will be automatically stopped, regardless of CPU priority or node tier.
  • Changes take effect after server restart

Choose Your Server Type

🟦 Vanilla / Paper / Purpur Servers

Step 1: Optimize server.properties

Edit your server.properties file with these optimized values:

# View & Simulation Distance
view-distance=6
simulation-distance=6

# Network Optimization
network-compression-threshold=256

# Spawn Settings
spawn-animals=true
spawn-monsters=true
spawn-npcs=true
max-world-size=29999984
View Distance
  • 6-8: Recommended for most servers
  • 4-6: If experiencing lag
  • 10+: Only if you have powerful hardware

Step 2: Paper/Purpur Config Files

If using Paper or Purpur, optimize these configuration files:

bukkit.yml:

spawn-limits:
monsters: 50
animals: 8
water-animals: 3
ambient: 1
chunk-gc:
period-in-ticks: 400
ticks-per:
animal-spawns: 400
monster-spawns: 4

paper-global.yml (Paper 1.19+) or paper.yml:

# Entity Optimization
entities:
spawning:
per-player-mob-spawns: true
behavior:
disable-chest-cat-detection: true

# Chunk Optimization
chunks:
max-auto-save-chunks-per-tick: 6
prevent-moving-into-unloaded-chunks: true

# Performance
misc:
update-pathfinding-on-block-update: false

# Redstone
use-faster-eigencraft-redstone: true

spigot.yml:

world-settings:
default:
mob-spawn-range: 6
entity-activation-range:
animals: 16
monsters: 24
raiders: 48
misc: 8
merge-radius:
exp: 4.0
item: 6.0
nerf-spawner-mobs: true
settings:
save-user-cache-on-stop-only: true

Step 3: Install Performance Plugins

Essential plugins for Paper/Spigot servers:

PluginPurposeLink
ChunkyPre-generate worldSpigotMC
ClearLaggAuto-remove entities/itemsSpigotMC
SparkPerformance profilerSpigotMC

Optional Plugins:

Step 4: Pre-Generate Your World

This is the most important optimization step!

Pre-Generation Policy

World pre-generation is NOT allowed on our servers. Any server continuously using 30%+ CPU will be automatically stopped, regardless of CPU priority or premium node tier.

You must pre-generate your world locally on your PC and upload it via SFTP.

How to Pre-Generate Locally

Steps:

  1. Create a local server on your PC with the same version and settings
  2. Install Chunky and pre-generate your world locally (recommended radius: 2000-3000)
  3. Upload the world folder to your server using SFTP
  4. Learn how to setup SFTP →

Benefits:

  • No CPU limits on your local PC
  • Generate large radius worlds without issues
  • No risk of server being stopped
  • Complete in hours instead of days
🟧 Modded Servers (Forge/NeoForge/Fabric) - Large Modpacks

For Large Modpacks (100+ mods, ATM10, etc.)

Step 1: Optimize server.properties

# Optimized for Large Modpacks (ATM10, etc.)
# View & Simulation Distance
view-distance=6
simulation-distance=4

# Entity Optimization
entity-broadcast-range-percentage=50
mob-spawn-range=4

# Network Optimization
network-compression-threshold=512

# Performance Tweaks
max-tick-time=-1
sync-chunk-writes=false
spawn-protection=0
Modded Servers

Modded servers cannot use Paper config files (bukkit.yml, paper.yml, spigot.yml). Focus on performance mods instead!

Step 2: Install Performance Mods

For Fabric Servers:

All available on Modrinth:

ModPurpose
LithiumGeneral-purpose optimization
StarlightLighting engine rewrite
FerriteCoreMemory usage reduction
KryptonNetwork optimization
C2MEChunk loading optimization
ServerCoreServer-specific optimizations
LazyDFUFaster startup times

For Forge/NeoForge Servers:

ModVersionLink
AI Improvements1.12-1.19CurseForge
Performant1.16+CurseForge
Clumps1.16+CurseForge
Canary (NeoForge)1.20+Modrinth

Step 3: Pre-Generate Your World

Pre-Generation Policy

World pre-generation is NOT allowed on our servers. Modded servers are extremely CPU-intensive during chunk generation and will trigger automatic shutdown.

You must pre-generate your world locally and upload via SFTP.

How to Pre-Generate Locally for Modpacks

Steps:

  1. Install the modpack locally on your PC (same mods and configs as server)
  2. Create a single-player world or local server
  3. Install Chunky mod and pre-generate (radius 1500-2500 recommended for large packs)
  4. Upload the world folder to your server via SFTP
  5. Learn how to setup SFTP →

Why this is required:

  • Large modpacks like ATM10 would take 12-24+ hours on our servers
  • Continuous high CPU usage triggers automatic shutdown
  • Local pre-generation completes much faster with no restrictions

Step 4: Modpack-Specific Tips

For ATM10 and Heavy Modpacks:

  • Use 10-12GB RAM minimum
  • Reduce view-distance to 4-6
  • Pre-generate 1500-2000 block radius (takes 12-24 hours due to CPU limits)
  • Remove unused mods from pack
  • Disable chunk loaders or limit them

Performance vs Features:

  • Heavy modpacks will always use more resources
  • Some lag is expected with 200+ mods
  • Focus on preventing chunk generation lag with pre-gen
🟩 Lightly Modded Servers (Fabric/Quilt)

For Vanilla+ or Light Mod Packs

Step 1: Optimize server.properties

view-distance=8
simulation-distance=6
network-compression-threshold=256

Step 2: Install Fabric Performance Mods

Install all of these for best performance:

  • Lithium - Game logic optimization
  • Starlight - Lighting engine
  • FerriteCore - Memory reduction
  • Krypton - Network optimization
  • ServerCore - Server optimizations

All available on Modrinth.

Step 3: Pre-Generate World

Pre-Generation Policy

World pre-generation is NOT allowed on our servers. You must pre-generate locally and upload via SFTP.

Steps:

  1. Install the modpack locally (same mods as server)
  2. Use Chunky to pre-generate radius 2000-3000
  3. Upload world folder via SFTP
  4. Setup SFTP guide →

Universal Optimizations (All Server Types)

World Pre-Generation Priority

This is the #1 most important optimization!

Chunk generation during gameplay causes massive lag spikes. Pre-generate your world before players join.

Pre-Generation Policy

World pre-generation is NOT allowed on our servers. Any server continuously using 30%+ CPU will be automatically stopped, regardless of CPU priority, premium node tier, or any other upgrade.

You must pre-generate locally on your PC and upload via SFTP.

How to Pre-Generate Locally + Upload via SFTP

Required method for all server types:

  1. Install locally: Set up a local server/world on your PC with the same version and mods
  2. Pre-generate locally: Use Chunky to generate radius 2000-3000 (no limits on your PC!)
  3. Upload via SFTP: Upload the world folder(s) to your server
  4. Start playing: Your server is ready with pre-generated chunks!

Benefits:

  • ✅ No CPU limits on your local PC
  • ✅ Generate any radius size you need
  • ✅ No risk of server being stopped
  • ✅ Complete in hours instead of risking shutdown
  • ✅ Works for all server types (Paper, Forge, Fabric, etc.)

Learn how to setup SFTP →

Server TypeView DistanceSimulation Distance
Vanilla/Paper8-106-8
Paper (Busy)6-84-6
Fabric (Light Mods)6-86
Forge (Heavy Mods)4-64
ATM10 / Large Packs4-63-4

Monitoring Performance

Install Spark (available as plugin or mod) to monitor performance:

/spark tps              # Check current TPS
/spark profiler start # Start profiler
/spark profiler stop # Stop and generate report

Target Metrics:

  • TPS: Should stay at 20
  • MSPT: Should stay below 50ms
  • Memory: Keep below 80% usage

Troubleshooting Common Issues

Server is Still Lagging

  1. Check TPS with /tps or /spark tps
  2. Run Spark profiler to identify the cause
  3. Reduce view distance by 2 blocks
  4. Check for lag-causing farms or contraptions
  5. Restart server (fixes memory leaks)

Players Report Connection Issues

  • Increase network-compression-threshold to 512
  • Check player ping with /ping
  • Ensure server location is close to players

Chunk Loading is Slow

  • Pre-generate your world locally (most common cause!)
  • Reduce view-distance in server.properties
  • Ensure you uploaded the pre-generated world correctly via SFTP

Server Stops Unexpectedly

If your server stops unexpectedly:

  1. Check Service Logs in the control panel for HighResources=True
  2. This means the 30% CPU limit was exceeded for 15 minutes continuously
  3. Common causes: Attempting to pre-generate worlds on the server, too many entities, inefficient plugins/mods, or redstone lag
  4. Solution: Pre-generate worlds locally, reduce entity counts, optimize server settings, or remove resource-heavy plugins/mods

High Memory Usage

  • Restart server every 24-48 hours
  • Reduce entity counts with ClearLagg
  • Check for memory leaks with Spark
  • Ensure you have enough RAM allocated

Quick Reference Checklists

✅ Paper/Purpur Setup

  • Pre-generate world locally (2000-3000 radius) and upload via SFTP
  • Set view-distance to 6-8 in server.properties
  • Configure bukkit.yml spawn limits
  • Configure paper.yml optimizations
  • Configure spigot.yml entity ranges
  • Install ClearLagg and Spark plugins
  • Test with /tps and /spark tps

✅ Large Modpack Setup (ATM10, etc.)

  • Pre-generate world locally (1500-2500 radius) and upload via SFTP
  • Set view-distance to 4-6 in server.properties
  • Install performance mods (Lithium, etc. for Fabric OR Performant for Forge)
  • Allocate 10-12GB RAM minimum
  • Remove unused mods from pack
  • Install Spark mod for monitoring
  • Limit or disable chunk loaders

✅ Light Modded Setup

  • Pre-generate world locally (2000-3000 radius) and upload via SFTP
  • Set view-distance to 6-8 in server.properties
  • Install all Fabric performance mods (Lithium, Starlight, FerriteCore, Krypton)
  • Allocate 4-6GB RAM
  • Install Spark mod for monitoring

Best Practices

Pre-generate worlds locally on your PC and upload via SFTP (REQUIRED - not allowed on servers)
Backup regularly before making config changes
Monitor with Spark to identify actual lag sources
Restart every 24-48 hours to clear memory
Update server software to latest stable versions
Keep plugins/mods minimal - only install what you need
Educate players about efficient farm building

Platform Comparison

FeatureVanillaPaper/PurpurFabricForge/NeoForge
Config Options⭐ Minimal⭐⭐⭐⭐⭐ Extensive⭐⭐ Some⭐⭐ Some
Performance⭐⭐ OK⭐⭐⭐⭐⭐ Excellent⭐⭐⭐⭐ Great⭐⭐⭐ Good
Mod Support❌ None❌ Plugins Only✅ Fabric Mods✅ Forge Mods
RAM Usage3-4GB4-6GB4-8GB8-12GB+
Optimization DifficultyEasyEasyEasyModerate
Recommendation
  • For vanilla gameplay: Use Paper or Purpur (not vanilla!)
  • For light mods: Use Fabric with performance mods
  • For large modpacks: Use Forge/NeoForge with 10GB+ RAM

Need Help?

If you continue experiencing performance issues after following this guide:

  1. Run /spark profiler for 5 minutes during lag
  2. Share the Spark report with support
  3. Include your server type and number of players

Contact our support team for personalized assistance!


Last Updated: October 2025
Applies to Minecraft Java Edition 1.16+