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.

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:


Legal Notice

Legal Notice & Disclaimer: This article constitutes an independent, factual comparative review and critical analysis for educational purposes only. Space-Node is not affiliated with, endorsed by, or sponsored by any hosting provider mentioned herein. All brand names, logos, and trademarks referenced are the registered intellectual property of their respective owners and are used solely for identification and factual reference.

Fair Use & Review Rights: This review is protected commentary, comparison, and criticism. It is based on publicly available information, official pages where available, published documentation, and general hosting engineering analysis. Where hands-on testing is not explicitly stated in the article, no private benchmark or internal infrastructure access is implied. This constitutes lawful comparative review and criticism protected under fair use doctrine.

Factual Accuracy: Specific plan claims are based on public information available at the time of writing. Specifications, pricing, and service features can change, so readers should verify current details on the provider's official website before purchasing. We make no false or defamatory statements; criticism is limited to documented facts, clearly labeled opinion, or general hosting guidance.

No Consumer Confusion: This article makes clear that Space-Node offers distinct, independently-developed hosting infrastructure. We explicitly differentiate our services, pricing, and technical specifications. No reader could reasonably be confused about service provider identity.

Right to Comparative Advertising: Space-Node reserves the right to publish factual comparative information about competing services. This is a recognized right in consumer protection law and advertising standards. Accurate comparative reviews cannot constitute trademark violation, defamation, or unfair competition.

Limitation of Liability: Space-Node makes no warranty regarding third-party services reviewed. Readers are responsible for verifying information independently before purchasing. Space-Node disclaims liability for third-party service changes, outages, or policy modifications.

Space-Node Services: For Space-Node's own managed hosting solutions, visit Minecraft hosting or VPS hosting.

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.