Introduction to Java Edition Server Optimization
Basic information you need to know to make the optimization explanations on other pages easier to understand.
Some words on this page are written using their original terminology so that searching for information on the internet is easier once the reader understands this guide.
There are also some English loanwords.
If there's a word you're unfamiliar with, please open the "Glosarium" guide page to see abbreviations and other terminology.
Optimization Targets
The main optimization target for a Minecraft server is to strive for the server to always run below 50 MSPT and at 20 TPS during peak hours, as well as to strive for the server to run with a maximum of 16 GB RAM
Next is ensuring all vanilla Minecraft mechanics run as they should. Examples:
- Mob Farms copy-pasted from YouTube
- Redstone designs copy-pasted from YouTube
- How items or blocks like hoppers work, as well as redstone systems like redstone sorting systems.
The three points above are what players most often do. Most players don't yet understand Minecraft mechanics and will copy exactly everything from YouTube. If you misconfigure things, there's a big chance that what your players copied from YouTube won't work as it should.
Tick
Tick is the unit of time used in Minecraft, something similar to seconds (but the word tick isn't taken from detik [Indonesian for second], okay).
Everything in Minecraft always follows the game tick. Some examples:
- Effect duration
- Duration of the day and night cycle
- Minecart movement speed
- Mob pathfinding* and mob movement
- Water and lava flow
- Redstone tick
- The time needed to break a block
- The time needed for a spawner to activate
The normal tick is 20 ticks per second. This is the standard, and it shouldn't be raised or lowered except for special purposes.
20 ticks is equivalent to 1 second of real-world time.
1 tick is equivalent to 0.05 seconds (50 milliseconds) of real-world time.
The Difference Between TPS and MSPT
TPS stands for Tick Per Second. The ideal number is 20.
MSPT stands for Miliseconds Per Tick. The ideal number is below 50.
TPS is the result of MSPT. MSPT is more accurate because it measures down to the millisecond compared to TPS which only measures seconds.
Most people only care about "TPS isn't 20, the server is lagging", but nobody cares about MSPT approaching 50.
After MSPT passes 50, TPS will decrease from 20 gradually, starting from 19.99, 19.98 etc. down to 0.01 TPS at 100000 MSPT.
T = Tick, s = second, ms = milisecond
In the image above, you can see the fastest tick takes 20ms, while the slowest tick takes 100ms.
In a normal situation, the server every 1s should have gotten 20 ticks, but because one of the ticks takes 100ms (above the reasonable limit of 50ms per one tick), the result is that in that one second the server only runs 16 ticks, 4 ticks short of the normal standard of 20 ticks.
This is what's called a lag spike, because only one tick runs slower than the other ticks.
If all ticks run more than 50ms per tick, this is more commonly called lag. Not spiking, but constant lag.
Once again, a healthy server has 20 TPS and below 50 MSPT.
Server Implementation / Server Software / Game Server
More commonly called server.jar, .jar server, and similar terms.
This is the main 'program' or 'application' used to run a Minecraft server.
There are many Minecraft server implementations, starting from Spigot, Paper (and its derivatives), to ones based on Java, C++, Rust, and other programming languages.
The server implementation most used by all Minecraft server administrators is Paper. Data: bStats.
As a server admin, use Paper or Purpur. Don't use other server implementations! Many patches from other servers are less stable, often causing bugs that make server analysis harder.
Additional information on the history of Minecraft Java Servers:
Minecraft Java multiplayer used to require a Vanilla server.jar, then hMod appeared which created administrator features and plugins for the server.
After the hMod project was discontinued, Bukkit (CraftBukkit) appeared, expanding on the features of hMod and the Vanilla server to get better performance.
After the Bukkit project was discontinued, Spigot appeared, built on top of Bukkit. Spigot was also made to expand features and get better performance, as well as various customizations.
In 2014, PaperSpigot (Paper) appeared, built on top of Spigot, so Minecraft servers became like this:
Vanilla server -> Bukkit (CraftBukkit) -> Spigot -> PaperSpigot (Paper)
For every Minecraft version update, the whole flow above needs to be updated first. This causes a bottleneck because all Minecraft servers depend heavily on Spigot needing to be updated first.
Spigot only has one maintainer. Often the Spigot update process takes up to a week since a new Minecraft version has been released.
Then in December 2024, Paper decided to hard fork away from Spigot, so the server update process could happen faster without needing to wait for upstream.
In 2023, the Paper developer team developed Folia. A server implementation that groups various chunks as dynamic regions, which are then ticked per region individually.
This approach allows servers that have many cores and threads to maximize their computing power, because traditional server implementations still lean toward single thread even though many multi-threading efforts have been made.
References:
Lucko. finding the cause of lag spikes.
Last Edited: 13 December 2025.
Author: Jan Wafa Karsiena. License: CC BY-SA 4.0.