---
title: "Paper Minecraft server: diagnose and stabilise TPS"
description: "Hosting for a Paper server focused on what drags the tick down: reading mspt, profiling with spark, the paper-world-defaults.yml keys and the guilty plugin."
url: "https://streethosting.com.br/en/minecraft-paper"
type: "page"
language: "en-US"
---

Paper, plugins and reading mspt

# A Paper server with TPS you can explain

Paper is the plugin fork most public servers run. Here the subject is what it actually optimises, which config keys are worth touching, and how to find the plugin eating the tick.

[See plans for running Paper](https://streethosting.com.br/en/minecraft-pro#plans) [Understand TPS and mspt first](https://streethosting.com.br/en/guides/minecraft/what-is-tps-minecraft)

* São Paulo, Brazil
* Anti-DDoS up to 400 Tbps
* NVMe

 Quick answer

Paper is a Spigot fork that keeps the Bukkit API and rewrites expensive parts of the server, such as chunk loading and entity ticking. In practice, the TPS of a Paper server depends far more on per-core frequency and on two or three heavy plugins than on how much RAM you bought.

## Paper is a plugin fork, and that defines the ecosystem

The lineage is CraftBukkit, Spigot and Paper. Because Paper preserves the Bukkit and Spigot API, a plugin jar compiled for Spigot loads with no recompiling. That is why the installed base of EssentialsX, LuckPerms, Vault and WorldGuard keeps working after the switch.

What Paper adds is implementation, not a new incompatible API: rewritten chunks, light engine, entity tracking, hoppers. None of that makes the tick parallel, the gain comes from each tick costing less. Swapping the jar buys a real but bounded improvement, and the rest depends on configuration and on which plugins you agree to load.

## mspt is the metric, TPS is only the symptom

TPS is capped at 20. A server spending 45 milliseconds per tick reads 20.0 and looks healthy, when it has 5 milliseconds of headroom. One explosion or somebody exploring fresh terrain is enough to go past 50 and the number collapses. Whoever watches TPS alone finds out after the players do.

Look at the distribution, not the average. A low median with a high 95th percentile points to a periodic spike, and the usual suspect is autosave, a scheduled task or terrain generation. A high average with a narrow distribution points to constant load, almost always entities, hoppers or code running on every movement event.

It is also worth separating tick lag from network lag. If mspt is comfortable and the player still feels delay, no yml key will fix it.

## Where the configuration lives and what makes sense to touch

From Paper 1.19 onward the configuration was split into two files inside the config folder: paper-global.yml, with what applies to the whole server, and paper-world-defaults.yml, with the world defaults. Each world can still override whatever it wants in its own paper-world.yml. Old tutorials still tell you to edit a paper.yml at the root, which no longer exists in those versions.

In the global file almost everything stays at default, and what justifies an edit is proxy integration, the packet limiter and chunk loading. The gains people are after live in the world file: despawn ranges, mobs per player, collision, hoppers and the redstone implementation.

Per-world overriding is the most underused feature here. A mining world handles aggressive despawn and short simulation without anyone complaining, while the main survival stays conservative. Applying the same aggressive configuration to every world turns optimisation into a support ticket.

## The trap of the ready-made copied config

That optimised file going around the forums applies dozens of changes at once. It works on the server of whoever wrote it. On yours, two or three of those keys will break something, and you will have no way of knowing which because you pasted it all together.

The damage is predictable. A very short despawn plus a reduced spawn range produces the classic complaint that no mobs spawn to farm. An activation range set too low makes mobs stop walking and the farm stop with them. Stripping the AI from spawner mobs kills mechanics that depend on movement. A high merge radius changes how drops group on the ground. And switching the redstone implementation changes the update order of the wires, enough for a timing sensitive contraption to behave differently.

Accept as well that a good part of the gain is in no yml at all. The heavy plugin is almost never the one with the biggest jar, it is the one querying a database synchronously on every event, sweeping entities in a repeating task or forcing chunk loading outside the async path.

Infrastructure

## What Paper really optimises

* Chunk loading and generation off the main thread, taking one of the original server most expensive operations out of the tick.
* Entity, hopper and collision ticking with shortcuts Spigot does not have, plus a mobcap counted per player instead of globally.
* Its own API layer on top of Bukkit, which modern plugins use to schedule work without stalling the tick.
* The tick loop still runs on a single thread. Per-core frequency weighs more than core count, and the Ryzen 9 9950X with DDR5 opens mspt headroom.

Use cases

## Server profiles where this choice matters

* Survival with economy, land protection and block logging, where the bottleneck is disk writing inside the tick, not missing RAM.
* Event server with a spike of entities, dropped items and mobs packed into one small region.
* A custom spawn full of redstone and hoppers, where world configuration weighs more than the plan you bought.
* A network backend behind a proxy, where every instance needs predictable mspt so the proxy does not pile up a queue.

Optimization

## Config keys worth touching

* In server.properties, simulation-distance cuts real tick work. view-distance costs bandwidth and chunk sending, not processing.
* In paper-world-defaults.yml, the despawn ranges, per-player-mob-spawns and the per-entity collision limit solve most cases of too many entities.
* In spigot.yml, entity-activation-range and merge-radius take effect immediately, and they are also the ones that break farms fastest when you overdo it.
* The Aikar flags act on the JVM garbage collector pause, not on plugin cost inside the tick. Mixing the two burns diagnosis time.

 Tech sheet

## Numbers to size things up before you buy

Plan and operational data, with no guesswork.

Performance line

From R$ 54/month with 4GB DDR5

Ryzen 9 9950X, the pick once mspt is already dominated by plugins and entities.

Paying yearly

R$ 48.60/month on the 4GB

Annual billing takes 10% off and quarterly, 4%.

Allocated CPU

300% on the 4GB plan

Three cores. The tick uses one, the rest handle async chunks, garbage collection and disk.

Disk on the entry plan

30GB NVMe

Keeps autosave and region file reads off the critical path.

Public rating

4.7 out of 5 on Trustpilot, from 45 reviews

 Comparison

## Spigot, Paper and Purpur side by side

All three run Bukkit plugins. The difference is how much of the server was rewritten and how much original behaviour you accept losing in exchange.

| Item                                | Spigot                                | Paper                                        | Purpur                                     |
| ----------------------------------- | ------------------------------------- | -------------------------------------------- | ------------------------------------------ |
| Plugin API                          | Bukkit and Spigot                     | Bukkit and Spigot, plus its own layer        | Everything from Paper, plus extensions     |
| Chunks off the main thread          | Not available                         | Available                                    | Inherited from Paper                       |
| Performance keys                    | Few, in spigot.yml                    | Many, split between global and world         | Paper keys plus dozens of gameplay options |
| Risk of changing original behaviour | Low                                   | Medium, depending on what you enable         | High if you enable options without reading |
| When to choose it                   | A very old plugin with no replacement | The default for a public server with plugins | When customising mechanics is the point    |

Paper is the predictable middle ground. Purpur only pays off if you are going to use the extra options on purpose, and each of them is a gameplay decision before it is a performance one.

 Step by step

## A flow for investigating a TPS drop

The order matters: each step rules out one hypothesis before the next.

1. 01

### Confirm the problem is in the tick
Check mspt in the console or in the panel. Below 50 with players still complaining, the investigation moves to network, proxy or client.
2. 02

### Read the distribution instead of the average
Compare the median value with the 95th percentile. An isolated spike points to autosave, a scheduled task or terrain generation. A high, constant value points to entities, hoppers or code running on every event.
3. 03

### Profile during the real peak
Timings was retired in Paper and spark took its place, bundled in current versions and available as a plugin on older ones. Start the sample with the server full. A profile on an empty server does not show what you are hunting.
4. 04

### Separate plugin cost from world cost
Check whether the time sits in plugin code or in the server entity and chunk ticking. Before editing any file, count entities: dropped items and hoarded animals explain a good share of the drops.
5. 05

### Change one thing and measure again
Apply one adjustment, go back to the same load hour and compare the same percentile. Without the second measurement you do not know whether it improved or whether the spike simply moved.

 Checklist

## Before applying a configuration you found ready-made

Five checks that save the week you would lose finding out which key broke what.

* Write down your current median mspt and 95th percentile, with the server full, so you have a before.
* Back up the world and the config folder before editing any file.
* Check your Paper version: old material cites files and keys that no longer exist.
* Split the changes by subject, such as entities, chunks, redstone and network, and apply one group at a time.
* Test the farms and the spawn contraptions after touching activation range or redstone.

## Frequently asked questions

01 Does a plugin made for Spigot work on Paper?

It does. Paper preserves the Bukkit and Spigot API, so the jar loads with no recompiling. The reverse is not always true: a plugin using the Paper exclusive layer will not run on plain Spigot.

02 Where are the Paper configuration files?

From Paper 1.19 onward they live in the config folder, split into paper-global.yml, for the whole server, and paper-world-defaults.yml, for the worlds, with individual overriding in paper-world.yml. Old content still mentions a paper.yml at the root, which does not exist in those versions.

03 How do I find out which plugin is dragging TPS down?

By profiling with the server under real load. A report grouped by plugin sometimes accuses whoever merely triggered an expensive server operation, so check the call stack before uninstalling anything.

04 Does TPS reading 20 mean everything is fine?

Not necessarily. TPS is capped at 20, so a server spending 45 milliseconds per tick still reads 20. Watch mspt: below 50 there is headroom, and the size of that headroom decides whether the next heavy event takes the server down.

05 Is it worth copying a ready-made optimised config?

It works as a list of keys to study, not to paste. Aggressive despawn, activation range and item merge values change mob spawning and how farms work. Apply them in small groups and measure mspt before and after each group.

 Keep reading

## Guides for doing what is described here

* [How to reduce lag on a Paper server TPS and mspt in practice, with the keys in the order that pays off.](https://streethosting.com.br/en/guides/minecraft/reduce-lag-paper-server)
* [Analysing lag with the spark profiler How to take the sample and read the result without blaming the wrong plugin.](https://streethosting.com.br/en/guides/minecraft/spark-profiler-minecraft)
* [Paper against Spigot in production What changes day to day when you swap the server jar.](https://streethosting.com.br/en/guides/minecraft/paper-vs-spigot-minecraft)
* [Purpur against Paper When the extra options pay off and when they only create gameplay bugs.](https://streethosting.com.br/en/guides/minecraft/purpur-vs-paper-minecraft)

4.7/5 on Trustpilot

Money-back guarantee

Activation in 60s

Premium support

Trusted by 2,500+ customers

## What comes with the plan

* A panel with console, restart and usage history, where the spike shows up before it turns into a complaint.
* Support in Portuguese used to reading performance profiles and crash reports.
* A RAM upgrade with no manual migration once the economy and the block log grow.

[See plans for running Paper](https://streethosting.com.br/en/minecraft-pro#plans) [Contact support](https://streethosting.com.br/en/contact)

No ready-made configuration replaces a measurement of your own: measure, change one key, measure again.
