On this page
Minecraft Bedrock Edition, the version on phones, tablets, Windows and consoles, cannot join a Java server on its own. Geyser fixes that: it is a plugin that translates between the two editions, so Bedrock players can play in the same world as Java players. Floodgate is its companion plugin and lets Bedrock players join without owning a Java Edition account.
This guide sets both up as plugins on Paper. The same steps work on Purpur and Spigot. Fabric and NeoForge have their own Geyser versions, which this guide does not cover.
Two requirements before you start. The Geyser plugin needs a server on Minecraft 1.20.5 or newer. And Geyser always speaks the newest Java version, so if your server runs an older one, install the ViaVersion plugin as well.
Bedrock's new connection method: NetherNet
Bedrock is changing how it connects to servers, and it affects how you set up Geyser. The old method, RakNet, sends everything over UDP. The new one, NetherNet, works in two steps: the game first asks a signaling server over TCP how to connect, then plays over UDP. According to the Geyser team, Bedrock Edition 26.60 stops connecting over RakNet, so from then on a Geyser server has to use NetherNet.
Many older guides tell you to run Geyser on your Java port over UDP and stop there. That was a RakNet setup. Geyser still uses RakNet by default, so you have to switch it to NetherNet yourself, as shown below.
Which port Geyser uses
Your server's address is shown at the top of every server page in the panel, and the Network page lists the same IP and port, marked Primary. Java Edition uses that port over TCP. Geyser can use the same port number over UDP for Bedrock gameplay, because the two protocols do not get in each other's way.
The catch is signaling. It needs TCP, and the Java server already uses TCP on that port. So Geyser hands signaling to an external service instead, Warden by default, which is free. This has three effects:
- Bedrock players do not connect with your Java address. When Geyser starts, it prints in the console the address and port they should use.
- Warden serves signaling over HTTPS, so players do not get the "trust on first use" prompt they would see with Geyser's own signaling over plain HTTP.
- The MOTD and player count in the Bedrock server list update every so often instead of live.
For most servers these are small trade-offs for a setup that needs nothing beyond your server's own port.
Install Geyser and Floodgate
- Download Geyser-Spigot and Floodgate-Spigot from the official page at geysermc.org/download. Both builds run on Paper and Purpur too.
- In the panel, open Files, go into the
pluginsfolder and use Upload to add both jar files. Large uploads also work over SFTP. - Press Restart and wait for "Done" in the console.
On this first start, Geyser creates plugins/Geyser-Spigot/config.yml and Floodgate creates a plugins/floodgate folder with its own config.yml and a key.pem file. Geyser and Floodgate on the same server find each other on their own, so you do not need to copy the key anywhere.
Configure Geyser
Open plugins/Geyser-Spigot/config.yml in Files. The Configs page does not list plugin files, so use the file editor here. The file already contains every setting with comments explaining it. Find these keys and change their values instead of adding new lines:
bedrock:
clone-remote-port: true
transport: nethernet
signaling:
mode: nxs
java:
auth-type: floodgateWhat each one does:
clone-remote-port: truemakes Geyser use the same port number as the Java server, read again at every start. If your server's port ever changes, Geyser follows it without you editing anything.transport: nethernetswitches Bedrock connections to NetherNet. The other values areraknet, the old method, andboth, which also accepts RakNet but needs a second UDP port.mode: nxsundersignalinguses the external signaling service. Geyser would fall back to it by itself when it shares the Java port, but setting it avoids a warning in the console.auth-type: floodgatelets Floodgate vouch for Bedrock players, explained in the next section.
Indent with spaces, never tabs, and keep each key under its section. Press Save Content, then Restart. When Geyser has started, look in the console for the address and port it prints for Bedrock players and write them down.
Floodgate: players without a Java account
Without Floodgate, every Bedrock player has to sign in with a Microsoft account that owns Java Edition before Geyser lets them in. With Floodgate and auth-type: floodgate, they join with the Microsoft account they already use on Bedrock, and Floodgate tells the server they are genuine. online-mode in server.properties stays true, which matters for the reasons in the server.properties guide.
Bedrock players get a prefix in front of their name, a dot by default, so they cannot clash with a Java player of the same name. You can change it with username-prefix in plugins/floodgate/config.yml. To add a Bedrock player to the whitelist, use Floodgate's own command, without the prefix:
fwhitelist add BedrockSteveOther commands need the full name including the prefix, for example op .BedrockSteve.
Connect from Bedrock
In Bedrock Edition, go to Play, then Servers, and choose Add Server. Give it any name, then enter the address in Server Address and the port in Port, exactly as Geyser printed them in the console.
Geyser stores its registration with the signaling service in a folder named nethernet. Leave it alone: if it is deleted, the server registers again as a new one and the address players use can change. Xbox, PlayStation and Switch cannot add custom servers directly; Geyser's documentation describes workarounds for consoles.
Common problems
"Unable to connect to world"
Check that the server is running and that Geyser loaded without errors in the console. Make sure players use the address and port Geyser printed, not your Java address, and that transport is set to nethernet. Then update Bedrock and update Geyser: Bedrock updates itself, and an older Geyser stops understanding it.
Bedrock players are asked to sign in to a Java account
Floodgate is missing, or auth-type is still online. Install Floodgate, set auth-type: floodgate and restart.
"Outdated client!" or "Outdated server!" on Bedrock
"Outdated client" means Geyser is older than the player's Bedrock version, so download the latest Geyser. "Outdated server" means the Java server is older than the version Geyser expects; install ViaVersion.
The server shows up, but nobody can get in
Geyser may be advertising the wrong address. Tell it the public address yourself under signaling in the bedrock section, using the IP and port from the panel:
bedrock:
signaling:
nxs:
advertise-addresses:
- 203.0.113.10:25567Save, restart and try again. If your server's address changes after a long break, update this line too. If it still fails, run geyser dump in the console; the Geyser team asks for that report when you look for help on their Discord.
Stuck on a step?
Ask on the forum. Your question links back to this guide, so whoever answers knows where you are.
About the author
Torchlite team
The people who run Torchlite
We build and run the Torchlite panel and the nodes. Every guide is checked on our own servers before it goes up, and updated when the panel changes.



