Key takeaways
- Geyser translates between Bedrock and Java protocols so Bedrock clients can join a Java server, and it runs as a plugin, a mod, a proxy or standalone.
- Floodgate is the optional companion that lets Bedrock players join without owning a Java account, and it changes how allowlisting works.
- The things that break are the things Java does uniquely – custom resource pack models, most mod content, and anything relying on Java-only block behaviour.
Running one server for both editions is the most requested thing a small Minecraft community ever asks for, and for years the answer was that you could not. Java and Bedrock use different network protocols, different world formats and different feature sets. Two editions meant two servers and two worlds.
Geyser changed that by sitting between the two and translating. It is not a Bedrock server and it does not convert your world – it speaks Bedrock to the Bedrock client and Java to your Java server, in both directions, live. This is a practical guide to what that actually means for a server you run: how it installs, what it costs, and the specific things that stop working.
What Geyser and Floodgate each do
Geyser is the protocol translator. A Bedrock player connects to your server address on the Bedrock port, Geyser accepts that connection, and from the Java server’s point of view a normal Java client has joined. Everything the Bedrock player does is translated into Java protocol packets and everything the server sends back is translated into Bedrock packets.
Floodgate is optional and solves the account problem. Without it, a Bedrock player needs to own a Java account to authenticate, which defeats most of the point. With Floodgate installed and Geyser’s auth-type set to floodgate, Bedrock players join using their Bedrock account. It also handles Bedrock skins and Bedrock allowlisting.
You almost always want both. Geyser alone is useful for a server where everyone happens to own both editions, which is rare.

Where it can run
Geyser supports several deployment shapes, and picking the right one matters more than any config setting:
- As a plugin on Spigot, Paper or a fork. The simplest option for a single server, and the one with the most community documentation.
- As a mod on Fabric or NeoForge. The right choice for a modded server, with the caveat that mod content is where translation breaks down.
- On a proxy – BungeeCord or Velocity. Correct if you run a network of servers, because Geyser then handles the Bedrock entry point for the whole network rather than per backend.
- Standalone, as its own process pointed at your Java server. Useful when you cannot add plugins or mods to the server itself.
- Via ViaProxy, which adds version translation on top of edition translation.
Our server software comparison covers which of those bases you should be on in the first place, and our plugins versus mods explainer covers why the plugin and mod paths are not interchangeable.
The install, in order
The sequence that works:
- Get the Geyser and Floodgate files that match your server platform and Minecraft version.
- Put them in the plugins folder, or the mods folder on Fabric or NeoForge.
- Restart the server once so the config files generate.
- Stop the server fully before editing those configs – editing while running means your changes get overwritten on shutdown.
- In Geyser’s config, change auth-type from online to floodgate.
- Open UDP port 19132, which is the default Bedrock port. This is a separate port from your Java port and it is UDP rather than TCP.
- Restart and test from an actual Bedrock client.
That UDP port is the most common failure point. Bedrock uses UDP and a lot of hosting panels only expose TCP ports by default, so the plugin loads cleanly, the logs look fine, and nobody can connect. If you are on managed hosting, check whether the provider supports Bedrock ports before you start. Our hosting guide covers what to ask.

What changes about administration
Three operational differences that catch server owners out.
Allowlisting is separate. Bedrock players are added with Floodgate’s own allowlist command rather than the standard one, and the username is entered without the Floodgate prefix. If a Bedrock player cannot join a whitelisted server, this is almost always why. Our whitelist and vetting guide covers the process you should have around that.
UUIDs are different. Floodgate derives a UUID for Bedrock players from their Bedrock account identifier, which means it is not a normal Java UUID. Anything that stores player data by UUID – permissions, land claims, economy plugins – will work, but a player who later switches from Bedrock to Java arrives as a different person. Our permissions and ranks guide covers where that bites.
Version checking is awkward. Neither download includes its version number in the filename, so you check with the in-game version commands rather than by looking at the jar. Keep a note of what you installed, because mismatched Geyser and Floodgate builds produce confusing authentication errors.
What does not translate
This is the section to read before promising your community crossplay.
- Custom resource pack models. Java resource packs that use custom model data for items will not render on Bedrock. If your server identifies ranks or custom items with bespoke textures, Bedrock players see the base item.
- Most mod content. Geyser translates the vanilla protocol. A modded block or entity that has no Bedrock equivalent has to be approximated or dropped, and complex modded GUIs are the worst case. A heavily modded server with Bedrock players is a support burden rather than a feature.
- Some block and redstone edge cases. Bedrock and Java differ in a number of block behaviours and redstone timings. Our redstone basics guide covers the Java rules, and a player building on Bedrock against Java server logic will occasionally get results they did not expect.
- Inventory-heavy interfaces. Chest-GUI menus mostly work. Anvil-text input, sign editing and anything that relies on precise cursor behaviour is where you find friction.
- Specific visual options. Some Geyser settings around Nether rendering and fog can display incorrectly, and the config has a dedicated option for the main one.

Should you run it
Yes, if you run a vanilla or lightly-plugged survival server for friends. This is the case Geyser is best at, and the cost is one plugin, one config line and one open port. Bringing in the people who only own Bedrock is usually the difference between a server with six players and one with twelve. Our SMP guide covers the rest of the setup.
Probably, if you run a plugin-based network. Deploy on the proxy rather than per server, keep custom-model-dependent features to a minimum, and accept that Bedrock players will have a slightly different experience.
Reluctantly, if you run a heavy modpack. It works, but the translation gaps scale with how much of your content is non-vanilla. Our server performance mod stack guide covers what else is already competing for your tick budget – adding a protocol translator on top of a heavy pack is not free, even though Geyser itself is light.
One last operational note: add this to a test server first, not your live one. Geyser touches the login path, and a misconfigured auth-type is the kind of change that locks everyone out rather than failing quietly. Our backup routine guide covers having a way back.
Images: Sildur’s Vibrant Shaders project gallery.