// Minecraft

Folia: Multithreaded Minecraft, and Why It Is Not for You Yet

Folia: Multithreaded Minecraft, and Why It Is Not for You Yet

Folia is an experimental fork of Paper that carves the loaded world into regions and ticks each region on its own thread. Vanilla Minecraft and Paper process the entire world tick on a single thread, twenty times a second, which is why the clock speed of one core matters more than the number of cores. Folia breaks most existing plugins and only pays off when players are spread far apart: for practically every server below a few hundred concurrent players, Paper is the better choice.

Why does Minecraft tick on a single thread?

A Minecraft server runs a loop that updates the whole world twenty times a second: mobs move, redstone switches, water flows, hoppers shift items and chunks get loaded and written back. That leaves roughly fifty milliseconds per tick. If the work does not fit, TPS (the server's tick rate) drops and everything feels like treacle: clocks fall behind, farms yield less, hoppers crawl.

The single-thread design follows from how the game world hangs together: everything is connected and order matters. A minecart feeds a hopper, that hopper fills a chest a comparator reads, and that comparator switches more redstone. Do that on two threads at once and you get races: two threads grabbing the same item, or a chunk half-saved while it is still changing. That is exactly what wrecked servers in the old days.

So Paper did not parallelise the tick itself, but the work around it: chunk generation, chunk I/O and network traffic run largely beside the main thread. Combined with hundreds of performance patches on top of Spigot, that gives a steadier TPS without costing you a single plugin.

Why does clock speed matter more than core count?

Because the heaviest job, the world tick, lands on one core regardless and has to finish within fifty milliseconds. A processor with more cores does not shave a millisecond off that tick; a processor that is faster per core does. Extra cores are not useless, since chunk I/O, networking and the garbage collector use them, but they will not rescue your TPS.

That is why our budget line on the AMD EPYC 7443P sits next to a premium line on the AMD Ryzen 9 9950X. Lots of cores are ideal for running several servers side by side; higher clock speed wins the moment a single world starts to struggle. More RAM does not solve this either: RAM decides how much fits in memory, not how quickly a tick completes. What does help is covered in our article on optimising your Minecraft server and reducing lag.

What does Folia do differently?

Folia splits the loaded world into regions: groups of chunks close enough together that they can influence one another. Each region gets its own tick loop and runs on its own thread from a thread pool. Two players building thousands of blocks apart sit in two separate regions, and those really do tick simultaneously on two cores.

Regions are not fixed: when two players walk towards each other, their regions merge into one region on one thread, and when they part ways it splits again. Think of Folia as a handful of mini-servers inside a single process. As long as they stay apart it scales with your core count; the moment they merge you are back to a single thread.

Why does Folia break most plugins?

The entire Bukkit, Spigot and Paper API assumes exactly one main thread exists. Plugins schedule their work with Bukkit.getScheduler().runTask(...) and may then safely touch any block, player or entity. In Folia that single main thread is gone: there are schedulers per region, per entity and one global scheduler, and a plugin may only touch what belongs to its own region.

That is not a config line you flip, it is rewriting work inside the plugin itself. Where it has not happened, the pleasant outcome is an error at startup. The nasty one is a plugin that appears to work while quietly scrambling data: claims that vanish, duplicated items, logs that no longer add up. Assume a plugin does not work until you see a build that explicitly supports Folia. Household names such as EssentialsX, LuckPerms and CoreProtect were all written against the classic Paper model.

If you run a modpack rather than plugins, Folia is not in the picture at all: All the Mods 10 runs on NeoForge, a different track entirely from a Paper fork.

Why does Folia only help with scattered players?

Running in parallel only works when there is something to divide. If all your players are at spawn, in a lobby or at the same boss fight, that is one region, so one thread. Folia then does what Paper does, with the cost of region management piled on top, and you can end up slower than you started. Roughly speaking:

  • Good fit: large survival or anarchy servers with an enormous map, where players build in their own corner and rarely bump into each other.
  • Poor fit: minigames, KitPvP, lobbies, spawn-centred SMPs, event servers and anything that deliberately pulls players together.
  • Poor fit: a single heavy source of lag, such as a giant mob farm. It sits in one region and therefore on one thread, exactly as it would on Paper.

Paper, Purpur, Pufferfish or Folia: which do you pick?

SoftwareBased onPluginsBest for
PaperFork of SpigotFully Bukkit and Spigot compatibleThe default choice for practically every server
PurpurFork of PaperFully Paper compatibleExtra configuration options and optional features, such as rideable mobs and tunable mob AI
PufferfishFork of PaperFully Paper compatibleSits between Paper and Purpur in terms of purpose
FoliaFork of Paper, region-based multithreadingBreaks most existing pluginsExperimental, for very high player counts that stay spread out

The top three are interchangeable: you swap Paper for Purpur and back again tomorrow without touching your plugins folder. Folia stands apart.

What should you try first instead?

In the vast majority of cases the cause of the lag lies somewhere else entirely. Work through this list before you reach for experimental software.

  1. Measure with spark. Run a profile during peak hours and see where the tick goes. It is usually a plugin, a pile-up of entities or a chunk problem, not a shortage of threads.
  2. Set view-distance and simulation-distance realistically. How far the server renders and simulates around each player is the cheapest win available, especially with a lot of people online at once.
  3. Clear out entities and items. ClearLagg or the limits in the Paper configuration often gain you more than a hardware upgrade.
  4. Prune your plugins. Every plugin that does something on every tick eats tick budget, even when nobody is using it.
  5. Split up behind a proxy. Lobby, survival and minigames as separate processes, each with its own main thread on its own core, with BungeeCord or Velocity in front.

That last step delivers in practice what Folia promises, with plugins that simply work. At MC-Node a 512 MB BungeeCord proxy starts at EUR 0.50 per month and you pay for the servers behind it per GB of RAM: EUR 1.10 per GB on the budget line, slightly less on the larger packages, as you can see on our Minecraft hosting plans.

When does Folia actually make sense?

There is a clear profile Folia was built for. It gets interesting once every one of these points holds true.

  • You are heading towards hundreds of concurrent players on a single world and splitting up does not suit the concept.
  • Those players are naturally scattered across a big map, not bunched around spawn or an arena.
  • Your plugin list is short or self-written, so you can adapt the code to Folia's schedulers.
  • Someone on your team can write Java, because you will hit problems nobody has solved before you.
  • You accept breaking changes, thin documentation and the occasional wait for a new Minecraft version.

If you do take the plunge, do it alongside your existing server rather than on top of it: copy your world to a test server and keep your backups within reach. If TPS with the same players is no better than on Paper, they were sitting too close together and all you bought was complexity. For most servers the answer stays Paper, with a fast core and a tidy configuration.

Frequently asked questions

Do EssentialsX, WorldGuard and CoreProtect work on Folia? Only if a build exists that explicitly supports Folia. The Bukkit API assumes a single main thread, so such a plugin has to be rewritten, not recompiled. Assume it does not work: a plugin that quietly carries on can corrupt data.

Will Folia speed up my server with thirty players? No. Thirty players puts you far below the scale Folia was designed for, and the lag is almost always in a plugin, in entities or in your view-distance. Measure with spark and stay on Paper or Purpur.

How many cores do you need for Folia? Extra cores do count with Folia, but only up to the number of regions active at the same time. If all your players are together there is one region and Folia effectively uses one core, just like Paper. Plenty of cores, as on the AMD EPYC 7443P, only help once activity is spread out.

What is the difference between Purpur and Folia? Purpur is a fork of Paper with extra configuration options and optional features, such as rideable mobs and tunable mob AI, and it stays fully plugin compatible. Folia is experimental, ticks the world in regions across multiple threads and breaks most plugins in the process.

Does Folia help with lag from a big mob farm or redstone machine? No, because a build like that sits in one place and therefore inside one region, which ticks on a single thread. You are better served by a higher clock speed, as on the AMD Ryzen 9 9950X, and by reworking the farm itself.

Further reading

// TRY IT YOURSELF
Your server online in 60 seconds
MC-Node →