ViaVersion vs ProtocolLib
Comparison of ViaVersion and ProtocolLib for Minecraft servers, explaining their different purposes, how they handle packets, and when you need one, both, or neither.
ViaVersion and ProtocolLib both work at the packet level, but they solve completely different problems. The viaversion vs protocollib confusion arises because both plugins intercept and modify network packets. Understanding what each one does will prevent you from installing the wrong one or missing a dependency.
What ViaVersion does
ViaVersion translates packets between Minecraft protocol versions. If your server runs 1.20.4 but a player connects with a 1.21 client, ViaVersion rewrites the packets so both sides understand each other. It lets you accept players on newer (or older, with ViaBackwards) client versions without upgrading the server. Our ViaVersion guide covers the full configuration.
What ProtocolLib does
ProtocolLib is a developer library that lets other plugins read, modify, and send raw packets. It does not translate between versions. Plugins like Citizens, Holographic Displays, and LibsDisguises use ProtocolLib to send custom packets (fake entities, holograms, disguised mobs) to clients without modifying the server's core networking code.
Comparison table
| Aspect | ViaVersion | ProtocolLib |
|---|---|---|
| Purpose | Cross-version client support | Packet manipulation API for plugins |
| Installed by | Server operators | Required by other plugins |
| Modifies packets | Yes (version translation) | Yes (plugin-driven) |
| Standalone use | Yes | No (library only) |
| Common dependents | ViaBackwards, ViaRewind | Citizens, HolographicDisplays, LibsDisguises |
Do you need both?
Frequently, yes. A typical server runs ViaVersion for multi-version client support and ProtocolLib because one or more installed plugins depend on it. They do not conflict. ViaVersion hooks into the Netty pipeline at a different stage than ProtocolLib, so both can coexist without issues. The viaversion vs protocollib framing is misleading because they are not alternatives, they are complementary tools.
When you do not need them
If your server only accepts a single Minecraft version and no installed plugin requires ProtocolLib, you can skip both. Check your plugin dependency lists. If nothing mentions ProtocolLib, do not install it preemptively, it adds overhead only justified when a plugin actively uses it. Similarly, if all your players run the same client version, ViaVersion adds no value.
Our recommendation
Install ViaVersion if you want to accept multiple client versions. Install ProtocolLib if any of your plugins list it as a dependency. The viaversion vs protocollib question is not about choosing between them, it is about understanding that they serve entirely different purposes and frequently belong on the same server.
See plugins in action: Astroworld MC, IP play.astroworldmc.com, Java + Bedrock.