Let Bedrock players join your Java server with Geyser
Java and Bedrock Minecraft are different games that cannot normally talk to each other. That splits friend groups: one person plays on a PC with Java, another on a phone, tablet or console with Bedrock. GeyserMC is the usual fix. It is a translator that lets Bedrock players join a Java server, and with a companion called Floodgate they do not even need a Java account.
What Geyser does and does not do
Geyser sits between the two versions and converts the traffic in both directions. Bedrock players connect to it, and it presents them to your server as ordinary Java players.
It works very well for building, exploring and survival. It cannot make the games identical, so expect small gaps:
- Some Java-only features, such as certain redstone behaviours and combat mechanics, differ on Bedrock.
- Some interfaces are approximated, so menus from plugins may look different.
- Resource packs and mods are not shared between the two.
Test with a Bedrock player before you announce it to your community.
What you need
- A Java server running Paper or another plugin-capable type. See Paper, Purpur, Fabric, Forge or Vanilla.
- The Geyser plugin that matches your server software, from the official GeyserMC site.
- Optionally Floodgate, from the same project, so Bedrock players can join with only their own account.
- A UDP port. This is the part that most often goes wrong. Java uses TCP, usually port 25565, but Bedrock uses UDP, and its default port is 19132. Geyser listens on that port, so your server needs a UDP port open and forwarded to it.
Install it
- Stop the server and take a backup.
- Upload
Geyserto thepluginsfolder, andFloodgatetoo if you want it. The file manager or SFTP both work. - Start the server once so Geyser creates its configuration, then stop it.
- Open Geyser's
config.ymland check the key settings:- the Bedrock port, which must match the UDP port you have available;
- the remote address and port, which point back to your Java server and are normally filled in automatically when running as a plugin;
- the authentication type, set to
floodgateif you installed Floodgate, so Bedrock players do not need Java accounts.
- Start the server again and read the console. Geyser prints the port it is listening on.
If your host cannot provide the extra UDP port, Geyser cannot work as a plugin, so ask before you go further. A ticket is the quickest way to find out. See How to open a support ticket on Discord.
How Bedrock players connect
On a phone, tablet or Windows Bedrock, players add a server with your address and the Bedrock port. Consoles are different, because they do not let you type a custom server address. Console players normally use a workaround such as a helper server that adds an entry to their friends list. It works, but it is a separate setup, so tell console players to look it up.
With Floodgate, Bedrock players appear with a prefix on their name, so they never clash with Java players who happen to share a username. Plugins that save data by name or ID keep working, but some need extra permissions for these players.
Permissions and whitelists
If your server uses a whitelist, Bedrock players need to be added in the format Floodgate expects, which includes its prefix. Check Floodgate's documentation for the exact form your version uses. A plugin like LuckPerms can then give them the same ranks as everyone else. See How to set up LuckPerms permissions.
When it does not work
- Players time out. Almost always a UDP port problem. Remember that "Connection timed out" and "Connection refused" mean different things, explained in Connection timed out vs connection refused.
- Version errors. Geyser supports specific Bedrock versions. If Bedrock updates before Geyser does, players on the newest version may be refused until Geyser catches up.
- Strange behaviour with one plugin. Some plugins assume a Java player. Check the plugin's notes for Geyser compatibility.
Keep both Geyser and Floodgate updated, and read the console on every start. Most problems appear there first.
Still stuck? Open a ticket on Discord - run /ticket in any channel, pick a department, and include your Server ID or Invoice ID so we can jump straight in.