Skip to main content
← All Guides
Server Admin · 8 min read

How to Run Multiple Minecraft Versions with ViaVersion

Complete guide to ViaVersion, ViaBackwards and ViaRewind for letting players on different Minecraft versions join your server without downgrading.

What ViaVersion Actually Does

ViaVersion is a protocol translation plugin. It sits between the client and your server, translating network packets from one Minecraft version's format to another. This means a player running Minecraft 1.19 can connect to your 1.21 server, ViaVersion intercepts their packets, translates them to 1.21 format, sends them to the server, then translates the server's 1.21 responses back to 1.19 format for the client.

The server itself still runs on one version. The world data, block IDs, entity behavior, everything server-side stays native to whatever version your jar is built for. ViaVersion does not change the server's behavior; it just makes the communication layer flexible enough to handle clients that speak older (or newer) protocol versions.

This is different from running the server on an older version. Your server gets all the performance improvements, bug fixes and features of the latest version. Players on older clients simply get a translated view of that world.

ViaVersion vs ViaBackwards vs ViaRewind

There are three separate plugins in the Via family, and each handles a different direction of version translation.

PluginWhat It DoesExample
ViaVersionLets newer clients connect to an older server1.21 client → 1.20 server
ViaBackwardsLets older clients connect to a newer server1.19 client → 1.21 server
ViaRewindExtends ViaBackwards further back to legacy versions1.8 client → 1.21 server

In most cases, you want ViaVersion + ViaBackwards together. This combination lets you run the latest server version while accepting players on a range of older clients. ViaRewind is only needed if you want to support very old clients (1.8 or 1.7), which is increasingly rare but still relevant for some PvP-focused servers that have a 1.8 combat community.

Installation

Installation is straightforward, drop the jar files into your plugins/ folder and restart. No other plugins need to be modified.

  1. Download ViaVersion from Hangar, SpigotMC, or Modrinth.
  2. Download ViaBackwards from the same source.
  3. Optionally download ViaRewind if you need 1.8.x support.
  4. Place all jar files in your plugins/ folder.
  5. Restart the server (not reload, restart).

That is genuinely it for basic setup. ViaVersion auto-detects your server version and starts translating packets immediately. There is no required configuration for standard use.

Proxy Installation

If you run a BungeeCord or Velocity network, you have two options for where to install Via plugins:

  • On the proxy: Handles version translation at the network edge. All backend servers receive native-version packets. This is the recommended approach, it centralizes the translation and reduces load on backend servers.
  • On each backend server: Each server handles its own translation. More flexible if backend servers run different versions, but adds CPU overhead to every server.

For most networks where all backend servers run the same version, install ViaVersion and ViaBackwards on the proxy only.

How Players Experience Version Differences

ViaVersion does impressive work, but it cannot magically make old clients understand new content. Here is what players on older versions will see:

New Blocks

Blocks that do not exist in the player's client version are replaced with visually similar blocks. A 1.21 copper bulb might appear as a redstone lamp to a 1.19 client. The exact substitution depends on the block, ViaBackwards maintains a mapping table that picks the closest visual match. Players cannot interact with these blocks in version-specific ways (for example, they cannot wax copper if their client does not have that interaction).

New Items

Items without a client-side equivalent show up as generic items (often a stone block or a barrier) with the correct name displayed in the tooltip. They function normally for server-side interactions but look odd in the player's inventory.

New Mobs

New entity types are shown as visually similar existing mobs. A breeze might render as a blaze or a generic mob model. The mob's server-side behavior (AI, drops, damage) works correctly, only the visual representation on the client differs.

New Mechanics

Gameplay mechanics tied to the client's version (like the 1.21 mace smash attack or wind charges) may not work correctly for players on older clients because the client does not know about those interactions. Players on old versions can still play normally with the mechanics their client version supports.

Configuration and Tuning

While ViaVersion works out of the box, there are some useful config options in plugins/ViaVersion/config.yml:

# Suppress warnings about 1.x protocol mappings loading
suppress-metadata-errors: false

# Prevent specific versions from joining
block-protocols: []
# Example: block-protocols: [47]  # Blocks 1.8 clients

# Show server brand to players
send-supported-versions: true

ViaBackwards has its own config in plugins/ViaBackwards/config.yml where you can customize block and item mappings if the defaults do not suit your needs. Most servers leave everything at defaults.

Version Range and Support

ViaVersion supports translating between a wide range of Minecraft versions. The exact range depends on your combination of Via plugins:

  • ViaVersion alone: Supports clients from your server version up to the latest release.
  • ViaVersion + ViaBackwards: Supports clients from approximately 1.9 up to the latest release (connecting to any server version in that range).
  • ViaVersion + ViaBackwards + ViaRewind: Extends support back to 1.7.x/1.8.x clients.

The Via team actively updates for each new Minecraft release, usually within hours or days of a new version dropping. They maintain compatibility with the latest snapshots as well, though snapshot support is less stable.

Performance Impact

ViaVersion's performance impact is minimal for most servers. Packet translation is computationally cheap, it is essentially mapping values from one table to another for each packet. The overhead is roughly:

  • A few microseconds per packet per player on a different version.
  • Slightly more memory for storing translation maps (a few MB).
  • Negligible TPS impact, you will not see it on a Spark report unless you have hundreds of players on old versions.

The one scenario where performance matters is if you have a very large number of players all on different versions, each generating unique block change packets that need individual translation. Even then, the impact is small compared to typical server-side bottlenecks like entity AI and chunk generation.

When NOT to Use ViaVersion

ViaVersion is excellent for vanilla and plugin-based servers, but there are situations where it is the wrong tool:

  • Modded servers (Forge/Fabric/NeoForge): Mods add custom packets, blocks and items that ViaVersion does not know about. Translation will break modded content. If you run mods, all players need the exact same version and mod list.
  • Competitive PvP servers: Different client versions have different combat mechanics. 1.8 clients have the old spam-click combat, while 1.9+ clients have attack cooldowns. ViaVersion translates packets, not combat systems, a 1.8 player and a 1.21 player fighting each other will have inconsistent experiences. Serious PvP servers should pick one version and require it.
  • Servers heavily relying on new mechanics: If your server's core gameplay depends on 1.21-specific features (trial chambers, wind charges, the mace), players on older clients will have a degraded experience. You would be better off requiring the latest version.
  • Client-side rendering consistency: If your server has custom resource packs that use version-specific features (like new font rendering or display entities), old clients may not render them correctly even with ViaVersion translating the packets.

Best Practices

  • Always run your server on the latest stable version and use ViaBackwards to support older clients. Do not run an old server version and use ViaVersion to accept newer clients, you miss out on performance improvements and security fixes.
  • Set a reasonable minimum version. Supporting 1.8 through 1.21 means supporting a 10-year range of clients with wildly different capabilities. Most servers set their floor at 1.16 or 1.17 to limit the translation gap.
  • Test the player experience on the oldest version you support. Log in with a 1.16 client and walk around. Can you still navigate? Do signs display correctly? Can you use the server selector? If the experience is too broken, raise your minimum version.
  • Keep Via plugins updated. The Via team pushes frequent updates to fix translation bugs and improve compatibility. Running an outdated ViaVersion on a new Minecraft version can cause crashes or dupe exploits.

If you are still deciding whether to upgrade your server version at all, check our 1.21 update guide for the full process, or our downgrade guide if you already updated and are having second thoughts.

Need hosting for your network? Astroworld Hosting offers NVMe SSD, Pterodactyl panel, and DDoS protection. See features , plans from €6.39/mo.

Related Tools & Resources

🔧

Minecraft Tools

Calculators, generators & server tools

🧱

Item Database

Browse all Minecraft items, stats & recipes

⚒️

Crafting Recipes

Visual crafting guides for every recipe