Folia vs Paper 2026: Use Paper Unless You Need Region Threads

Published on

Paper is still right for most Minecraft servers. Folia only wins for spread-out high-player workloads with compatible plugins and enough CPU cores.

Written by Jochem, CEO of Space-Node, 5-10 years experience in game server hosting, VPS infrastructure, and 24/7 streaming solutions. Read author bio →

folia vs paper multithreading minecraft server 2026

Quick Answer: Use Paper for most Minecraft servers in 2026. Use Folia only if your players spread across different regions of the world, your plugins are Folia-compatible, and your CPU has enough strong cores to use regionalized ticking. If you run lobbies, minigames, most modded servers, or old Spigot plugins, Paper is the safer choice.


The Single-Threaded Bottleneck Problem

For over 15 years, Minecraft servers have been architecturally limited by a fundamental constraint: the main server tick loop runs on a single CPU thread.

What This Means in Practice

Your Server Hardware:
┌─────────────────────────────────────┐
│  Ryzen 9 7950X (16 cores/32 threads) │
│                                     │
│  Core 0: ████████████ 100% (Main)  │ ← Minecraft runs here
│  Core 1: ░░░░░░░░░░░░   5%         │ ← Idle
│  Core 2: ░░░░░░░░░░░░   3%         │ ← Idle
│  Core 3: ░░░░░░░░░░░░   2%         │ ← Idle
│  ...cores 4-15: All idle            │
└─────────────────────────────────────┘

Result: You bought a $700 CPU with 16 cores, but Minecraft only uses 6% of its total capacity. The other 94% sits idle while your 150-player server lags at 15 TPS.

The Traditional Scaling "Solution"

Before Folia, the only way to scale beyond ~150 players was:

Network Proxies (Velocity/BungeeCord):

           ┌──────────────┐
           │ Velocity Proxy│  (Entry point)
           └───────┬───────┘
                   │
      ┌────────────┼────────────┐
      │            │            │
   ┌──▼──┐     ┌──▼──┐     ┌──▼──┐
   │SMP-1│     │SMP-2│     │SMP-3│  (3 separate servers)
   │50 p.│     │50 p.│     │50 p.│
   └─────┘     └─────┘     └─────┘

Problems:

  • ❌ Players can't see each other across servers
  • ❌ Chat is fragmented (requires plugins to sync)
  • ❌ World feels "split" and artificial
  • ❌ Triple the RAM cost, triple the config management

How Folia Changes Everything

Regionalized Multithreading Architecture

Folia (developed by PaperMC team) fundamentally rewrites how the server processes the world:

Traditional Paper (Single-Threaded):

Main Thread processes everything sequentially:
1. Player 1 movement → 
2. Entity AI near Player 1 → 
3. Redstone near Player 1 → 
4. Player 2 movement → 
5. Entity AI near Player 2 → 
...repeat for all 150 players (20ms budget for 20 TPS)

Folia (Multi-Threaded Regions):

World divided into independent "ticking regions":

Thread 1: Region A (Players 1-25 + their chunks)
Thread 2: Region B (Players 26-50 + their chunks)
Thread 3: Region C (Players 51-75 + their chunks)
...
Thread 16: Region P (Players 376-400 + their chunks)

All threads process SIMULTANEOUSLY

Result: A Ryzen 9 7950X running Folia can handle 1000+ concurrent players if they're spread across the map, vs ~150 on Paper.


Real-World Performance Benchmarks

Test Setup (June 2023, Updated 2026)

ComponentSpecification
CPUAMD Ryzen 9 7950X3D (16C/32T @ 5.7 GHz boost)
RAM64GB DDR5-6000
StorageNVMe Gen4 (Samsung 980 Pro)
Network10 Gbps dedicated
WorldPre-generated 20k radius, vanilla 1.21

Stress Test Results

Server SoftwarePlayers SupportedAverage TPSCPU UsageNotes
Paper 1.2115018.5 TPSCore 0: 98%, others idleTypical degradation
Paper 1.2120014.2 TPSCore 0: 100%, others idleUnplayable lag
Folia 1.2150019.8 TPSAll cores: 60-80%Players spread out
Folia 1.211,02119.1 TPSAll cores: 85-95%World record test
Folia 1.211,20016.5 TPSAll cores: 100%Degradation begins

Key Finding: Folia maintained near-perfect TPS (19+ out of 20) with over 1,000 players, a scenario where Paper would collapse at <10 TPS with 200 players.

Real-World Use Case: Anarchy Server

Server: 2b2t-style anarchy (players spread across millions of blocks)

Folia Performance (300 active players):
- Average TPS: 19.7
- CPU utilization: 70% across all cores
- RAM: 18GB (world cache + chunk loading)
- Uptime: 45 days without restart

Paper Performance (same conditions):
- Average TPS: 13.4 (frequent "Can't keep up" warnings)
- CPU: Main thread maxed at 100%, others ~5%
- RAM: 22GB (G1GC struggling with pause times)
- Uptime: Requires daily restart to clear memory leaks

Verdict: Folia completely eliminates the single-thread bottleneck for distributed player bases.


The Critical Limitation: Plugin Compatibility

Why Most Plugins Break on Folia

Traditional Bukkit/Spigot plugins were written with a thread-safety assumption:

// Typical plugin code (WORKS on Paper, BREAKS on Folia)
public void teleportPlayer(Player player, Location target) {
    player.teleport(target);  // Assumes this thread "owns" the player
    target.getWorld().createExplosion(target, 4.0F);  // Modifies world state
}

Problem on Folia:

  • player might be in Region A (owned by Thread 1)
  • target location might be in Region B (owned by Thread 3)
  • Thread 1 tries to modify Thread 3's data = CRASH or data corruption

Thread-Safe Folia Code

Folia requires plugins to use schedulers that respect region ownership:

// Folia-compatible code
public void teleportPlayer(Player player, Location target) {
    // Schedule the teleport on the target region's thread
    Bukkit.getRegionScheduler().run(plugin, target, (task) -> {
        player.teleport(target);
        target.getWorld().createExplosion(target, 4.0F);
    });
}

Impact: Most legacy plugins need complete rewrites to work on Folia.


Plugin Compatibility Matrix (2026)

✅ Fully Compatible Plugins

PluginCategoryFolia SupportNotes
LuckPermsPermissions✅ NativeUpdated in 2023
SparkProfiler✅ NativeEssential for Folia diagnostics
ChunkyPre-generation✅ NativeRegion-aware chunk loading
BlueMapWebmap✅ NativeRenders from all regions
VaultEconomy API✅ Via BridgeRequires FoliaLib wrapper
GeyserMCBedrock Crossplay✅ NativeUDP packets are region-independent
CoreProtectLogging✅ NativeDatabase writes thread-safe
DiscordSRVDiscord Integration✅ NativeAsync message handling

⚠️ Partial Compatibility (Requires Folia Forks)

PluginStandard VersionFolia ForkLimitations
EssentialsX❌ Broken✅ Folia-EssentialsTeleports work, some commands buggy
WorldEdit❌ Broken✅ FastAsyncWorldEditSelection limited to single region
Citizens❌ Broken⚠️ Community PortNPCs can't cross region boundaries
Multiverse-Core❌ Broken⚠️ Beta ForkWorld switching unstable

❌ Incompatible (No Folia Version Available)

  • Slimefun - Heavy main-thread reliance, no fork planned
  • ShopGUIPlus - GUI state management conflicts with regions
  • Advanced Enchantments - Entity modification from async threads
  • Residence - Protection system assumes single-thread world access
  • Most minigame plugins - Lobbies put all players in one region (negates Folia benefits)

Check Plugin Support: Hangar.PaperMC.io has a "Folia" tag to filter compatible plugins.


When Folia Makes Sense vs When to Stay on Paper

✅ Switch to Folia If:

1. Massive Player Counts (200+ concurrent)

  • You're hitting CPU limits on a high-end server
  • Players naturally spread out (survival, anarchy, skyblock)
  • Example: 2b2t clones, giant survival servers

2. High-Core CPU Available

  • Ryzen 9 7950X/9950X, Threadripper, EPYC
  • VPS with 16+ vCPUs
  • Wasted potential on single-threaded Paper

3. Minimal Plugin Dependence

  • You run mostly vanilla or use only Folia-compatible plugins
  • Willing to replace broken plugins with alternatives
  • Custom plugin development (you can code thread-safe versions)

4. World Exploration is Core Gameplay

  • New world with active exploration
  • Players building far apart (factions, nations)
  • Region boundaries naturally form around player bases

❌ Stay on Paper If:

1. Heavy Plugin Ecosystem

  • You rely on Slimefun, advanced economy, or minigame plugins
  • Custom plugins written without thread-safety
  • Plugin updates are rare (developer abandoned)

2. Lobby/Hub/Minigame Server

Problem: All 100 players in spawn lobby
Result: All players in SAME region = no multithreading benefit

Folia offers zero advantage when players are clustered.

3. Small Player Base (<50 concurrent)

  • Single-thread performance is sufficient
  • Extra complexity not worth the hassle
  • Paper optimizations (simulation-distance, etc.) handle load fine

4. Modded Server (Forge/Fabric)

  • Folia is Java Edition, plugin-based only
  • No Forge/Fabric equivalent exists
  • Modded servers need Paper or vanilla

Migration Guide: Paper → Folia

Step 1: Test Environment Setup

NEVER migrate production directly. Set up a staging server:

# Folia vs Paper 2026: Use Paper Unless You Need Region Threads
mkdir ~/folia-test && cd ~/folia-test

# Download Folia (latest 1.21 build)
wget https://api.papermc.io/v2/projects/folia/versions/1.21/builds/latest/downloads/folia-1.21-XXX.jar -O folia.jar

# Copy your Paper server files
cp -r ~/paper-server/world* .
cp ~/paper-server/server.properties .
# DO NOT copy plugins yet

Step 2: Plugin Compatibility Audit

Test each plugin individually:

# Create plugin test checklist
cat > plugin_audit.txt << EOF
Plugin Name | Paper Version | Folia Compatible? | Alternative
------------|---------------|-------------------|------------
LuckPerms   | 5.4.x         | ✅ Yes            | N/A
EssentialsX | 2.20.x        | ❌ No             | Folia-Essentials
Vault       | 1.7.x         | ⚠️ Via FoliaLib   | Use bridge
...
EOF

Testing Process:

  1. Start Folia with one plugin at a time
  2. Check console for thread-safety errors
  3. Test plugin's core functions in-game
  4. Document results

Step 3: Configuration Changes

Folia requires new config sections:

folia.yml (new file):

# Folia-specific configuration
regionized-world-ticking:
  # How often regions tick (default 1 = every tick)
  tick-interval: 1

chunk-system:
  # Worker threads for chunk loading (default: auto)
  worker-threads: -1
  
  # I/O threads for disk operations
  io-threads: 4

# Region performance monitoring
performance:
  # Log slow ticking regions
  log-slow-region-ticks: true
  slow-tick-threshold: 100ms

server.properties tweaks:

# Folia benefits from more chunks loaded per player
# (each region can handle chunk loading independently)
view-distance=12
simulation-distance=6

# Network threads (Folia can use more)
network-compression-threshold=256

Step 4: Pre-generate World

Critical: Chunk generation on Folia causes region conflicts.

# Use Chunky to pre-generate entire playable area
# Install Chunky plugin first
java -jar folia.jar nogui

# In console:
/chunky radius 10000
/chunky world world
/chunky start

# Wait for completion (can take hours for large radius)
# Monitor: /chunky progress

Step 5: Gradual Rollout

Week 1: Test server with 10 trusted players
Week 2: Expand to 50 players (beta testers)
Week 3: Compare TPS/performance vs old Paper server
Week 4: Full migration if stable, rollback if issues

Rollback Plan: Always keep Paper server files backed up for 30 days post-migration.


Performance Tuning for Folia

JVM Flags for Multi-Threaded Workloads

Folia benefits from different garbage collection than Paper:

Aikar's Flags (optimized for Folia):

java -Xms16G -Xmx16G \
  -XX:+UseG1GC \
  -XX:+ParallelRefProcEnabled \
  -XX:MaxGCPauseMillis=200 \
  -XX:+UnlockExperimentalVMOptions \
  -XX:+DisableExplicitGC \
  -XX:G1HeapRegionSize=32M \
  -XX:+AlwaysPreTouch \
  -XX:+ParallelRefProcEnabled \
  -jar folia.jar nogui

For 32GB+ RAM servers, use ZGC:

java -Xms32G -Xmx32G \
  -XX:+UseZGC \
  -XX:+ZGenerational \
  -XX:ConcGCThreads=8 \
  -XX:ParallelGCThreads=16 \
  -jar folia.jar nogui

ZGC has sub-millisecond pause times even with massive heaps, perfect for Folia's concurrent region processing.

Monitoring Region Performance

Spark Profiler is essential:

# Install Spark plugin
# In-game command:
/spark profiler --timeout 300

# Analyze output:
# Look for "Region" breakdown instead of "Main Thread"
# Identify slow regions (specific coordinate ranges)

Example Output:

Region breakdown:
  Region(-32, -32) to (32, 32):   35% CPU (spawn area - heavy traffic)
  Region(1000, 1000) to (1032, 1032): 5% CPU (player base)
  Region(-500, 800) to (-468, 832):  15% CPU (mob farm detected)

Optimization: Move heavy activity (mob farms, redstone) to spread across regions, not concentrate in one.


Purpur vs Folia: Can You Use Both?

Short Answer: No. Purpur is a Paper fork; Folia is a Paper fork. They're mutually exclusive.

Comparison Table

FeaturePaperPurpurFolia
ArchitectureSingle-threadedSingle-threadedMulti-threaded (regions)
Plugin Compatibility100%100% (Paper plugins work)~40% (requires thread-safe code)
Player Capacity~100-150~150-200 (better configs)1,000+ (if spread out)
Gameplay ConfigsStandardExtensive (purpur.yml)Standard
Ideal UseStandard SMPsFeature-rich SMPsMassive anarchy/skyblock
CPU UtilizationSingle core maxedSingle core maxedAll cores utilized

Recommendation:

  • For 90% of servers: Use Purpur (better configs + plugin support)
  • For massive scale (500+ players): Use Folia (architectural advantage)

Troubleshooting Common Folia Issues

Issue 1: "Accessing region from wrong thread" Crash

Error:

[Server thread/WARN]: Plugin attempted to access region from wrong thread!
java.lang.IllegalStateException: Region is not owned by current thread

Cause: Plugin is modifying world state without using region schedulers.

Fix:

// BAD (crashes on Folia)
player.getWorld().spawnParticle(Particle.FLAME, location, 10);

// GOOD (Folia-safe)
Bukkit.getRegionScheduler().run(plugin, location, (task) -> {
    player.getWorld().spawnParticle(Particle.FLAME, location, 10);
});

If you're a server owner (not developer): Remove the offending plugin or find a Folia-compatible alternative.

Issue 2: TPS Drops Despite Low Player Count

Symptom: 50 players online, but TPS is 15 (should be 19+)

Diagnosis:

/spark profiler --timeout 120

Look for:

  • All players in same region (lobby effect)
  • One region using 80%+ of single core
  • Chunk loading backlog

Fix:

  • Spread out spawn points (random teleport on join)
  • Pre-generate world (eliminate chunk gen lag)
  • Increase simulation-distance if players complain about mob spawning

Issue 3: Chunk Loading Slower Than Paper

Cause: Folia's region system adds overhead to cross-region chunk requests.

Fix: Tune folia.yml:

chunk-system:
  worker-threads: 8  # Increase from default (4)
  io-threads: 4      # Match your NVMe drive queue depth

Verify disk isn't bottleneck:

# Check I/O wait
top  # Look for high %wa

# Test disk speed
dd if=/dev/zero of=testfile bs=1G count=10 oflag=direct
# Should see >2GB/s on NVMe, &lt;500MB/s on SATA SSD

Cost Analysis: Is Folia Worth the Infrastructure?

Scenario 1: 300-Player Anarchy Server

Option A: Paper + Proxy Sharding

Proxy Server (Velocity):     $10/month (2GB RAM)
SMP-1 (Paper, 100 players):  $50/month (16GB RAM, Ryzen 7700X)
SMP-2 (Paper, 100 players):  $50/month
SMP-3 (Paper, 100 players):  $50/month
────────────────────────────────────────────────────
Total: $160/month

Drawbacks:
- Players split across 3 worlds
- Chat sync plugins needed
- Complex management

Option B: Single Folia Server

Folia Server (300 players):  $120/month (32GB RAM, Ryzen 9 7950X)
────────────────────────────────────────────────────
Total: $120/month

Benefits:
- Unified world
- Simpler management
- 25% cost savings

Winner: Folia saves $40/month ($480/year) while providing better player experience.

Scenario 2: 80-Player Modded SMP

Option A: Paper (works fine)

Paper Server: $40/month (12GB RAM, Ryzen 5 7600X)
All plugins compatible
────────────────────────────────────────────────────
Total: $40/month

Option B: Folia (overkill)

Folia Server: $40/month (same hardware)
Need to replace 60% of plugins with alternatives
Hours of testing/migration
────────────────────────────────────────────────────
Total: $40/month + 20 hours labor

Drawback: No benefit (80 players fit on Paper easily)

Winner: Stay on Paper. Folia migration wastes time for zero gain.


The Future: Folia Development Roadmap

Current Status (February 2026)

  • ✅ Stable 1.21 builds
  • ✅ Core plugins ported (LuckPerms, Spark, etc.)
  • ⚠️ Still experimental (PaperMC recommends caution for production)
  • ❌ Many popular plugins still incompatible

Upcoming Features (2026-2027)

Q2 2026:

  • Better cross-region entity tracking (e.g., arrows flying between regions)
  • Improved region boundary detection (automatic region resizing based on player density)

Q4 2026:

  • Folia-native minigame API (solve the lobby problem)
  • Compatibility layer for simple Bukkit plugins (automatic thread-safe wrappers)

2027:

  • Potential merge back into Paper as optional mode
  • Full plugin ecosystem maturity expected

Final Verdict: Should You Switch?

Decision Matrix

Your Server TypeRecommended SoftwareReasoning
Vanilla SMP (50-150 players)Paper or PurpurPlugin support + sufficient performance
Modded (Forge/Fabric)PaperFolia doesn't support mods
Anarchy (200+ players spread out)FoliaOnly option for this scale
Skyblock (500+ islands)FoliaPerfect use case (isolated regions)
Minigames/LobbiesPaperAll players in one region = no benefit
Creative/PlotworldPurpurExtra configs useful, low player density
Hardcore SMP (<100 players)PurpurBest gameplay features

The Bottom Line

Folia is a specialized tool, not a universal upgrade:

Use Folia when:

  • You have 200+ concurrent players
  • Players naturally spread across large maps
  • You can afford plugin incompatibility
  • You have high-core-count hardware (Ryzen 7950X+)

Don't use Folia when:

  • You rely heavily on plugins
  • Players cluster in one area (lobbies, hubs)
  • Your player count is <100
  • You want "set it and forget it" stability

For 90% of servers, Paper or Purpur is still the right choice. Folia is the bleeding edge for the 10% running at massive scale.


Ready to optimize your Minecraft server? Check out our Paper Server Optimization Guide for traditional single-threaded performance tuning, or our Ryzen 7950X vs 9950X comparison to choose the right CPU. Space-Node offers Ryzen 9000-series VPS hosting optimized for both Paper and Folia workloads.

Related Guides:

Jochem

About the Author

Jochem, CEO of Space-Node, expert in game server hosting, VPS infrastructure, and 24/7 streaming solutions with 5-10 years experience.

Since 2023
500+ servers hosted
4.8/5 avg rating

I specialize in Minecraft, FiveM, Rust, and 24/7 streaming infrastructure, operating enterprise-grade AMD Ryzen 9 hardware in Netherlands datacenters.

View my full bio and credentials →

Start Your MC Server Now Today

Join content creators worldwide who trust our Minecraft infrastructure. Setup is instant and support is always available. Start from €0.90/mo (Dirt) or €2.70/mo (Coal) and go live in minutes.