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

Published on | Updated

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 parts of the world, every plugin you need is marked as Folia compatible, and your machine has plenty of real cores. PaperMC's own advice is ideally at least 16 cores, not threads. If you run lobbies, minigames, modded servers or older Spigot plugins, Paper is the safer choice.


How Paper ticks the world

A Minecraft server runs the game in ticks, 20 per second. To keep 20 TPS, each tick has 50 milliseconds to finish (spark docs).

On vanilla, Paper and Purpur, one main thread runs the whole world tick: player movement, entity AI, redstone, block updates and plugin tasks, one after another. Paper moves chunk loading and generation onto worker threads, and the garbage collector and network have their own threads, but the tick itself stays on one. That is why single-core speed matters so much for a normal server, and why extra cores do little for the tick. Our clock speed post covers the hardware side.

The classic way past that limit is a proxy network. Velocity sits in front and players are spread over several backend servers:

           ┌────────────────┐
           │ Velocity proxy │  (entry point)
           └───────┬────────┘
                   │
      ┌────────────┼────────────┐
      │            │            │
   ┌──▼──┐     ┌──▼──┐     ┌──▼──┐
   │SMP-1│     │SMP-2│     │SMP-3│  (separate servers)
   └─────┘     └─────┘     └─────┘

It works, but each backend is its own world. Players on SMP-1 can't see players on SMP-2, chat has to be synced with plugins, and you manage three configs instead of one.


How Folia ticks the world

PaperMC describes Folia as "a fork of Paper which adds regionized multithreading to the dedicated server" (Folia docs). Instead of one loop for everything, "Folia splits the chunks within all loaded worlds into independently ticking regions so that the regions are ticked independently and in parallel" (Folia overview).

The Folia README puts it plainly: each region has its own tick loop at the normal 20 TPS, the loops run in parallel on a thread pool, and "there is no main thread anymore" (Folia on GitHub).

Paper:  one main thread
        tick: players, entities, redstone, plugins ... for the whole world

Folia:  a pool of tick threads
        region A (players near spawn)     ticks on one thread
        region B (a base far to the east) ticks on another
        region C (a mob farm up north)    ticks on another
        global region: weather, game rules, world border, console commands

A few details decide how this behaves in practice:

  • Regions merge when they grow into each other. Players standing close together end up in one region, ticked by one thread.
  • Each region keeps its own schedule. If one region runs slow, the others keep their 20 TPS, as long as the thread pool is not fully busy (Folia overview).
  • A separate global region handles things that belong to no single area, such as game rules, weather, the world border and console commands.

So Folia scales with how spread out your players are, not with player count alone.


Who Folia is for

PaperMC's FAQ answers this directly: "Server types that naturally spread players out, like skyblock or SMP, will benefit the most from Folia. The server should have a sizeable player count, too." For hardware, it says "Ideally, at least 16 cores (not threads)" (Folia FAQ).

Folia fits when:

  • your players really are spread out: survival, anarchy, towns and nations, skyblock islands
  • one Paper server is at its limit and splitting the world over a proxy would hurt the gameplay
  • you can live with only Folia-compatible plugins, or you write your own
  • you have a machine with enough real cores to give the region threads room

Stay on Paper when:

  • players gather in one place. A lobby, hub or minigame arena is effectively one region, so Folia gains you nothing there.
  • you depend on plugins that don't support Folia
  • your server is small enough that one thread keeps up comfortably
  • you run Forge, Fabric or NeoForge mods. Folia is a Paper fork and runs plugins, not mods.

Plugin compatibility

This is where most migrations stop. The README is blunt: "I expect every single plugin that exists to require some level of modification to function in Folia... So, have your expectations for compatibility at 0."

Folia only loads plugins whose authors have added folia-supported: true to their plugin.yml. Anything without that line simply won't start. Parts of the API are also known to be broken or gone, according to the README: all scoreboard API, world loading and unloading, most API that deals with portals and respawning players, some player login API, and Entity#teleport, which "will NEVER UNDER ANY CIRCUMSTANCE come back". Plugins have to use teleportAsync instead.

To find compatible plugins, filter by the "Supports Folia" tag on Hangar, and check each plugin's own page for its Folia status. Don't trust a compatibility list from a blog, including this one: support changes with every plugin release.

What changes for plugin code

On Paper a plugin can touch any part of the world from the main thread. On Folia, code must run on the thread that owns the region it touches. Folia provides a RegionScheduler, EntityScheduler, GlobalRegionScheduler and AsyncScheduler to replace the Bukkit scheduler:

// Paper-style code: breaks on Folia
public void teleportAndExplode(Player player, Location target) {
    player.teleport(target);                           // Entity#teleport is not supported on Folia
    target.getWorld().createExplosion(target, 4.0F);   // touches a region this thread may not own
}

// Folia-compatible version
public void teleportAndExplode(Player player, Location target) {
    player.teleportAsync(target);
    Bukkit.getRegionScheduler().run(plugin, target, task -> {
        target.getWorld().createExplosion(target, 4.0F);  // runs on the thread that owns target
    });
}

Folia has thread checks that stop some wrong accesses with an exception in the console, and the README says the number of checks "will only grow". Not every mistake is caught yet, though. The README also warns that sharing data between regions "will cause data corruption". If you run a server rather than write plugins, the answer to a plugin that throws these errors or acts strangely is to remove it or find a version that supports Folia.


Moving from Paper to Folia

1. Test on a copy

Never switch production directly. Download Folia from papermc.io/downloads/folia, put it next to a copy of your world and server.properties, and start without plugins.

2. Check every plugin

Add plugins one at a time. For each one, check that it has Folia support, watch the console on startup, and test its main features in game. Keep a list of what works, what needs a replacement and what you can drop.

3. Pre-generate the world

PaperMC recommends a pre-generated world, because it greatly reduces the chunk worker threads you need (Folia FAQ). Chunky supports Folia according to its Hangar listing:

/chunky world world
/chunky radius 10000
/chunky start
/chunky progress

A large radius can take hours. Let it finish before players join.

4. Plan your threads

The FAQ gives a rough starting point from PaperMC's own test server, which peaked around 330 players. Per 200 to 300 players, allow about 4 threads for netty IO, about 3 for chunk system IO and about 2 for chunk system workers if the world is pre-generated. Count the garbage collector's concurrent threads (-XX:ConcGCThreads) too. Then give the remaining cores to the region tick threads with threaded-regions.threads in the global config, keeping total allocation under 80% of the CPUs, because plugins and the server start threads of their own. PaperMC is clear that this is a rough guess you will need to tune.

For JVM flags, start from Aikar's flags in the PaperMC docs and set ConcGCThreads to match your thread plan.

5. Roll out slowly

Open the test server to a small group first, then a larger one, and compare MSPT with your old Paper server at similar player counts. Keep the Paper server files and world backup until you are sure.


Measuring performance

spark is the tool for both Paper and Folia. Paper has shipped with spark since 1.21 (PaperMC docs). spark's download page lists a community-supported build for Folia (spark downloads).

  • /spark tps shows TPS and MSPT. Look at MSPT: TPS stays at 20 until ticks already take longer than 50 ms, while MSPT shows how much of that budget you use, with the median and 95th percentile.
  • /spark profiler start --timeout 300, run while the lag is happening, gives a report of where time goes. On Folia, add --thread * to include every thread, since there is no single main thread to watch (spark commands).

Write the setup down with every result: Paper or Folia build and Minecraft version, the world and whether it was pre-generated, players online and how spread out they were, the plugin list, view and simulation distance, thread settings, RAM and JVM flags, and the CPU. Without that, a comparison between Paper and Folia on your server tells you nothing.

We don't publish Paper against Folia player counts or TPS figures of our own. When we publish numbers from our hardware, it will be with a setup anyone can repeat.


Purpur and Folia: can you use both?

No. Purpur and Folia are both forks of Paper, and they are separate projects. You pick one.

PaperPurpurFolia
World tickOne main threadOne main threadRegions ticked in parallel on a thread pool
PluginsBukkit, Spigot and Paper pluginsSame as PaperOnly plugins marked folia-supported: true
Extra optionsPaper configsPaper configs plus purpur.yml gameplay optionsPaper configs plus region thread settings
Good fitMost serversServers that want extra gameplay tweaksLarge servers with players spread out

Where Folia is heading

Folia is its own project. The README says it "will not be merged into Paper for the foreseeable future". Planned API work listed there includes proper asynchronous events and world loading and unloading. Check the Folia repository for the current state rather than any roadmap on a hosting blog.


The bottom line

Folia is a specialised tool, not a general upgrade. It pays off when a large player base is spread over a big world, the plugins you need support it, and the hardware has many real cores. For everything else, Paper or Purpur on a fast single core is simpler and works with the plugins you already have.

If you are planning a Folia server, talk to us in live chat or on Discord first, so we can check whether a plan has enough cores for it. For Paper and Purpur, see our Minecraft hosting plans, the Paper Server Optimization Guide for single-thread tuning, and the Ryzen 9950X vs 7950X comparison if you are choosing hardware.

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.

Minecraft on AMD Ryzen 9

Host Your Modded & Vanilla Minecraft Server

From €2.70/mo with NVMe storage, DDoS protection included, and a modpack installer in the panel for the CurseForge and Modrinth packs it lists, or upload your own server files over SFTP.