In short: Leaf is server software by Winds-Studio, built on Paper, with async pathfinding, mob spawning and entity tracking, plus patches from Gale, Pufferfish and Purpur. The same plugins run as on Paper. To switch, back up, download Leaf for the same Minecraft version from leafmc.one/download, swap the jar and start the server. DGuard officially supports Leaf alongside Paper.
What Leaf is
Leaf is a fork of Paper. Its docs describe it as balancing performance, vanilla behavior and stability, built for large networks under heavy load. The base is Paper with its API and optimizations; on top come patches from Gale, Pufferfish, Purpur and other forks in its credits (Leaves, SparklyPaper, Moonrise and more), plus Leaf's own.
Every Purpur patch is in Leaf, though some of Purpur's options moved into the Gale and Leaf configs. According to the project's FAQ, Leaf usually pulls in upstream Paper changes every 1–3 weeks.
- Async modules: mob pathfinding, mob spawning, entity tracking, chunk sending, player data saving.
- Parallel world ticking — each world on its own thread (experimental).
- Client mod protocols: Jade, AppleSkin, Xaero's maps, Syncmatica and others — each switched on in the config.
- Linear region format — saves disk space; experimental, and the docs themselves don't recommend it.
- Sentry integration from Pufferfish — detailed reports of server errors.
- Fixes for some vanilla bugs and extra mechanics settings.
Leaf vs Paper
| Paper | Leaf | |
|---|---|---|
| Based on | independent project since 1.21.4 | fork of Paper |
| Plugins | Bukkit, Spigot, Paper | the same — per Leaf's FAQ, compatibility matches Paper |
| Configs | config/paper-*.yml, bukkit.yml, spigot.yml | all of those plus config/leaf-global.yml, config/gale-global.yml, config/gale-world-defaults.yml |
| On top of Paper | — | async modules, Gale, Pufferfish and Purpur patches, client mod protocols |
| Builds | per-version builds on papermc.io | stable and experimental; new Minecraft versions start as experimental |
Put simply, Leaf is Paper plus a set of performance levers. If your server isn't bottlenecked on the main thread, you may not see a difference. If it is, Leaf gives you things to tune — but the tuning is on you. For the bigger picture, see which server software to choose.
Versions and downloads
The official sources are the Leaf downloads page and GitHub Releases on the Winds-Studio/Leaf repository. The downloads page lists versions from 1.21.4 to 26.3, and every build is marked as stable or experimental. Leaf explicitly says experimental builds aren't recommended for production.
As of October 2026, 1.21.11 has stable builds, while 26.2 and 26.3 only have experimental ones so far. Java should match what Paper requires for that version: 21 for 1.21.x and 25 for 26.x — the Leaf 26.3 download page says Java 25+.
curl -O https://api.leafmc.one/v2/projects/leaf/versions/26.3/builds/4/downloads/leaf-26.3-4.jarSwitching from Paper to Leaf
- 1
Check the exact server version
Run
/versionand download Leaf for the same Minecraft version. Don't update the game at the same time as you switch software — otherwise you won't know what broke. - 2
Stop the server and back up
Leaf's README explicitly asks you to take a backup before switching. Copy the worlds, configs and plugins — details in server backups.
- 3
Swap the jar
Put the Leaf jar in the server folder and update the name in your start script (or rename the file to match it). Keep the old Paper jar — you'll want it if you roll back.
- 4
Start and read the log
config/will gainleaf-global.yml,gale-global.ymlandgale-world-defaults.yml. Paper's configs,bukkit.ymlandspigot.ymlstay and keep working. - 5
Check your plugins
Run
/pluginsand make sure everything is green. If a plugin misbehaves, Leaf's FAQ suggests testing it on Purpur; if it fails there too, report it on Leaf's GitHub.
Your world carries over as is: by default Leaf stores regions in the usual MCA format (misc.region-format.format-name: MCA), just like Paper. Going back to Paper is the same jar swap, as long as you haven't enabled Linear or secure seed. The safest way back is the backup you took before switching.
Leaf settings to handle with care
The main file is config/leaf-global.yml. You can reload it with /leaf reload, but async modules don't hot-reload — changing them needs a restart. The options below are from Leaf's docs for 1.21.11; names may differ on other versions, so check the docs for yours.
| Option | Default | What it does and the risk |
|---|---|---|
async.async-mob-spawning.enabled | true | moves part of the mob spawning math off the main thread; needs Paper's per-player-mob-spawns: true |
async.async-pathfinding.enabled | false | mob pathfinding on separate threads |
async.async-entity-tracker.enabled | false | async entity tracking — helps with crowds of entities; marked experimental |
async.async-chunk-send.enabled | false | packs and sends chunks off the main thread — helps when many players load chunks at once |
async.parallel-world-ticking.enabled | false | each world ticks on its own thread; experimental, may cause plugin issues — Leaf says enable it only if you understand the risks |
misc.secure-seed.enabled | false | a 1024-bit seed against seed cracking; changes where ores and structures generate — new worlds only, can't be turned back off |
misc.region-format.format-name | MCA | the Linear format saves space but is experimental with a risk of losing chunks; the docs advise staying on MCA |
gameplay-mechanisms.player.max-use-item-distance | 1.0000001 | large values or -1 let hack clients' packet modules work — the docs suggest it only for anarchy servers |
Secure seed matters most for public survival and anarchy servers: Paper's docs name seed cracking as one way to get around anti-xray. More on hiding ores in X-Ray protection.
DGuard on Leaf
DGuard officially supports Leaf — alongside Paper, it's one of the two platforms DGuard is built for. Supported versions are Leaf 1.21–26.3; the main one is 1.21.11: DGuard is tested on it and runs on it on production servers, while the others are supported but haven't been run on production servers yet.
Setup is the same as on Paper: the latest PacketEvents release and DGuard.jar in plugins/, the key from the panel in plugins/DGuard/config.yml → license.key, then a restart. If you picked Leaf for performance, the anticheat won't eat it: DGuard's checks run in network threads rather than the main thread, and on a live server they take 0.03% of one core on the main thread — 0.38 ms of a 10.9 ms tick with 121 players. More in anticheat performance.
FAQ
Can I replace Paper with Leaf without losing my world?
Yes. Leaf is a Paper fork and stores the world in the same MCA format by default. Back up before swapping the jar and use Leaf for the same Minecraft version as your Paper.
Do Paper plugins work on Leaf?
Per Leaf's FAQ, its plugin compatibility is the same as Paper's. If a plugin doesn't work, test it on Purpur, and if the problem stays, report it on Leaf's GitHub.
Which Leaf jar should I download, mojmap or reobf?
If a build has two files, take the one with mojmap in the name — that's what Leaf's FAQ recommends.
Leaf or Purpur?
Leaf includes all of Purpur's patches (some of their options moved into the Gale and Leaf configs) and adds its own optimizations. People pick Purpur for gameplay options and Leaf when performance matters too; DGuard officially supports Leaf, not Purpur.
Should I enable all of Leaf's async options?
No. Turn them on one at a time, each for a specific problem the profiler showed you. Experimental options such as parallel world ticking only if you understand the risks.
Does DGuard support Leaf?
Yes, officially — alongside Paper, versions 1.21–26.3. The main version is 1.21.11.
Sources
- Leaf: README
- Leaf: Getting started
- Leaf: FAQ
- Leaf: leaf-global.yml configuration
- Leaf: gale-global.yml configuration
- Leaf: downloads
- Paper: Anti-Xray (seed-based bypasses)
- Paper: Getting started and Java versions
- DGuard, the best anticheat for a modern Minecraft server: checks compared with GrimAC, Vulcan, Polar, Intave and Matrix
- DGuard: installation, requirements and troubleshooting
- DGuard: supported Paper and Leaf versions