Let Bedrock players join a Java server
Turn on Bedrock crossplay so players on phones, tablets and Windows can join your Minecraft Java server.
In the dashboard
Minecraft Bedrock Edition, the edition on phones, tablets and Windows, cannot join a Java server by itself. Bedrock crossplay adds Geyser, which translates between the two editions, and Floodgate, which lets Bedrock players join without a Java account. On a plugin server such as Paper they are plugins, and on Fabric and NeoForge they are mods. You turn it on with one switch on the server's Software tab. We install both, give Geyser a port of its own and keep both up to date.
Before you begin
Section titled Before you begin- The server must run plugin software for Minecraft Java, such as Paper, Purpur or Spigot, a server that loads both plugins and mods, such as Arclight, Mohist or Magma, or Fabric or NeoForge. Quilt, Forge, Vanilla and proxies cannot run Geyser here, so the switch does not appear on them. GeyserMC makes no Geyser or Floodgate for Quilt or Forge.
- On a plugin server, Geyser speaks Minecraft Java
26.1.1,26.1.2and26.2directly. On any other version the server also needs ViaVersion and ViaBackwards, which we add to plugin servers unless you turned them off (Let players on other Minecraft versions join). Arclight, Mohist and Magma cannot use ViaVersion, so on those the server must run one of the three versions. The card shows a warning when the version is not covered. - On Fabric and NeoForge, GeyserMC makes each build of Geyser and Floodgate for one Minecraft version, and a server does not start with a build made for another. We install the builds made for the server's version. Bedrock players reach Geyser through our network over a connection method that only recent Geyser builds have. GeyserMC stopped building Geyser for most Minecraft versions before 26.2 before it added that, so on Oct 15, 2026, crossplay on Fabric and NeoForge needs Minecraft 26.2 or newer. On an older version, turning crossplay on tells you so. A plugin server has no such limit, because it always gets the newest Geyser and ViaVersion covers older versions.
- On Fabric, the server needs Fabric API in its
modsfolder, because Geyser and Floodgate need it, and Fabric does not start without it. Install it from the Marketplace first. NeoForge needs nothing extra. - Each build also needs a loader at or above the version it was made against. On Minecraft 26.3, Geyser and Floodgate need Fabric Loader
0.19.5or newer on Fabric, and Geyser needs NeoForge26.3.0.0-betaor newer and Floodgate26.3.0.3-betaor newer on NeoForge. A server on the newest loader meets this, and you can choose a newer Loader build under Server software. - The server must run Java 21 or newer, which is the Java for Minecraft 1.20.5 and newer. Change Java settings shows the Java your server runs.
- If you added Geyser or Floodgate to the server yourself, remove them first, so the server does not load two copies. On Fabric and NeoForge a server with two copies starts and loads the newest, which may be yours, so the copy we update may not be the one that runs.
- On a server someone shared with you, you need the Install software permission.
Turn on Bedrock crossplay
Section titled Turn on Bedrock crossplay- In the dashboard, go to App Deployment and open the server, then the Software tab.
- On the Current software card at the top, turn on Bedrock crossplay.
- Wait while the switch is greyed out. We download both into the server's
pluginsfolder straight away, or into itsmodsfolder on Fabric. - Restart the server from the console, so it loads them.
Geyser also gets a port of its own, which the Ports tab lists as a Managed port. It does not count against your plan's ports. On a running server, the port opens when the server restarts, so the restart in step 4 opens it too.
Find the Bedrock address
Section titled Find the Bedrock addressBedrock players add the server in the game with an address and a port. The line under the switch shows both, as address:port, with a button that copies them:
- Bedrock players join at is the address most players use. When players join the server by a hostname, such as its join address, it is that hostname with port
19132, the standard Bedrock port. Players on IPv6 use the same hostname and port. Otherwise, it is the server's IP address with Geyser's own port. - Bedrock players join by IP at is the server's IP address with Geyser's own port, for players who join by IP. A free server has no row for it. Geyser's port is the one the Ports tab lists as Managed with the purpose
Bedrock (NetherNet). Players enter the IP address before the colon as the address, and the number after it as the port. This address is IPv4, so players reach the server over IPv6 only through a hostname. - The API returns both in
bedrock_bridge.join, as With the API shows.
The Java port does not work for Bedrock players.
Change the Geyser settings
Section titled Change the Geyser settingsGeyser keeps its settings in plugins/Geyser-Spigot/config.yml, and Floodgate keeps its settings in plugins/floodgate/config.yml. On Fabric, they are config/Geyser-Fabric/config.yml and config/floodgate/config.yml. Edit them in the Files tab, then restart the server.
Bedrock players reach Geyser through the port we gave it, so we set these Geyser settings again every time the server starts. A change to them does not last:
| Setting | What we set |
|---|---|
bedrock.address and bedrock.port |
The address and number of Geyser's port |
bedrock.clone-remote-port |
false |
bedrock.transport |
nethernet |
bedrock.webrtc-port |
0, so Geyser uses the same port for everything |
bedrock.signaling.mode |
builtin |
java.auth-type |
floodgate. Files from older Geyser versions keep remote.address as auto and remote.auth-type as floodgate instead, and Geyser converts them |
bedrock.signaling.builtin.advertise-addresses |
On some servers, the address and port Geyser tells Bedrock players to use |
advanced.bedrock.haproxy-protocol-whitelisted-ips |
The IPv4 and IPv6 addresses of our proxies, which pass on each player's own address |
Everything else in both files is yours to change. We keep your comments and your indentation. If config.yml is not valid YAML, we leave it as it is and the card shows Geyser's config.yml cannot be read as YAML, with the reason. Fix the file, or delete it so Geyser writes a new one, then restart.
Keep Geyser and Floodgate up to date
Section titled Keep Geyser and Floodgate up to dateEach time the server starts, we check that both files are in the plugins folder (mods on Fabric and NeoForge) and ask for new builds of Geyser and Floodgate. A file that is missing, or that is not the build we recorded, downloads before the server boots, and a start waits up to two minutes for it. A newer build of a file that is already there does not hold up the start: we download it in the background, and the server loads it from the next start. We check each download against the checksum its source publishes. If the source does not answer within 20 seconds, the server starts with the builds it already has, and we ask again after five minutes. You do not need to update them yourself.
On a plugin server, both come from GeyserMC, and Geyser comes from its releases unless you choose development builds.
On Fabric and NeoForge, both come from Modrinth, where GeyserMC publishes them: the newest build of each made for the server's Minecraft version. A server does not start with a build made for another version, so a file made for another version is deleted and its replacement downloads before the server boots. Before the server starts, on Fabric we also check that the mods folder has Fabric API. If it does not, or there is no usable Geyser build for the server's Minecraft version, we take our two files out of mods, the card shows Failed with the reason, and the server starts without crossplay. Fix the cause and restart: the start puts both back.
The two files appear on the Installed addons panel with the Uploaded by hand badge, because the Marketplace did not install them. Leave them there: to remove them, turn off the switch.
Use Geyser development builds
Section titled Use Geyser development buildsWhen a new Minecraft version comes out, GeyserMC adds support for it to development builds of Geyser before it publishes a release. If your server runs a Minecraft version that no Geyser release supports yet, switch Geyser to development builds until a release does.
Development builds are for plugin servers. On Fabric and NeoForge, Geyser builds does not appear, because we install the build made for the server's Minecraft version.
- Turn on Bedrock crossplay, as Turn on Bedrock crossplay describes.
- On the server's Software tab, find Geyser builds on the Current software card, under the Bedrock crossplay switch. It shows only while crossplay is on.
- Choose Development builds, then select Use development builds to confirm.
- Restart the server from the console, so it loads the new build.
We install the build straight away. After that, each time the server starts, we install the newest development build instead of the newest release. It comes from GeyserMC's build workflow on GitHub: the newest build of the branch where GeyserMC is adding a new Minecraft version, such as feature/26.3, while its pull request is open, and otherwise the newest build of master. Floodgate stays on its release. Geyser builds says which build the server has, such as build 2261 of feature/26.3.
Warning
Development builds have had less testing than releases, so Bedrock players may meet bugs. Once a Geyser release supports your Minecraft version, choose Releases again.
Turning Bedrock crossplay off also sets Geyser back to releases.
Turn off Bedrock crossplay
Section titled Turn off Bedrock crossplay- On the server's Software tab, turn off Bedrock crossplay on the Current software card.
- Restart the server, so it stops running Geyser.
We delete plugins/Geyser-Spigot.jar and plugins/floodgate-spigot.jar, or mods/Geyser-Fabric.jar and mods/floodgate-fabric.jar on Fabric, or mods/Geyser-NeoForge.jar and mods/floodgate-neoforge.jar on NeoForge. The folders plugins/Geyser-Spigot and plugins/floodgate (config/Geyser-Fabric or config/Geyser-NeoForge, and config/floodgate, on Fabric and NeoForge) stay, with your settings, Floodgate's key and Geyser's server identity in them. Geyser's port goes back to the pool. If a file cannot be deleted, the switch stays on, the card shows Bedrock crossplay could not be turned off, and the port stays with the server. Turn it off again.
If you turn crossplay on again later, it picks up the settings and the key you left, and Bedrock players keep their player data, because Floodgate identifies them by their Xbox account. To start over, delete the two folders in the Files tab while crossplay is off.
When you change the server software to software that cannot run Geyser, such as Forge, Vanilla or a Bedrock server, we turn Bedrock crossplay off in the same way.
When you change between a plugin server, Fabric and NeoForge, crossplay stays on. We delete the two files the old software used, and the next start installs the ones the new software needs. On Fabric and NeoForge, every software change, a new Minecraft version included, deletes the two mods, and the next start installs the builds for the version the server runs then. A server that moves to Fabric or NeoForge goes back to Geyser releases.
Result
Section titled ResultThe switch turns on only after both files are in the server's plugins folder, or its mods folder on Fabric and NeoForge, and a message says Bedrock crossplay is on. Restart the server to load it. Geyser and Floodgate load when the server restarts. Bedrock players can then join at the address you found, while Java players join as before.
Troubleshooting
Section titled Troubleshooting- The Bedrock crossplay switch is not on the card
- The server cannot run Geyser. It runs Quilt, Forge, Vanilla, a proxy or a Bedrock server, or it runs a Java older than 21. Change to a plugin server, Fabric or NeoForge under Server software, or move to Minecraft 1.20.5 or newer on Java 21. The API gives the exact reason in
unsupported_reason. - Could not change Bedrock crossplay with
Geyser needs Fabric API, and the server's mods folder does not have it. - Install Fabric API from the Marketplace, then turn on crossplay. A Fabric server that loses Fabric API later shows Failed with the same reason and starts without crossplay until you install it again and restart.
- Could not change Bedrock crossplay with
Geyser has no Fabric build for MinecraftorGeyser has no NeoForge build for Minecraft, and a version - GeyserMC has no build of Geyser, or of Floodgate, for the server's Minecraft version on that software. Change the server to a newer Minecraft version under Server software, or switch it to Paper.
- Could not change Bedrock crossplay with
Geyser's Fabric build for MinecraftorGeyser's NeoForge build for Minecraft, a version andis too old to connect Bedrock players through our network - GeyserMC's newest Geyser for that Minecraft version is from before the connection method our network uses. Change the server to Minecraft 26.2 or newer on Fabric or NeoForge, or switch it to Paper, which works on older versions. A Fabric or NeoForge server already running crossplay on such a version shows Failed with the same reason after its next start, and starts without crossplay.
- A Fabric or NeoForge server does not start, and its console says
Replace mod 'Fabric Loader' (fabricloader)and a version, orMod geyser_neoforge requires neoforgeand a version range, or the same forfloodgate - The loader on the server is older than the one that Geyser or Floodgate needs. Choose a newer Loader build under Server software, then restart. We cannot see the loader version beforehand, so crossplay turns on and the server fails at its next start.
- Could not change Bedrock crossplay with
GeyserMC downloads are unavailable right now. Try again shortly. - GeyserMC's download service did not answer, so the switch stays off. Turn it on again later.
- Bedrock players cannot connect
- Restart the server after you turn the switch on, because Geyser and Floodgate load only when the server starts. Then check that players use the address from Find the Bedrock address, not the Java port.
- Some Bedrock players can join and others cannot
- Ask the players who cannot join to update Minecraft to the latest version. Older versions cannot join.
- The card warns that Geyser speaks other Minecraft versions
- The server runs a version Geyser does not speak directly, and ViaVersion and ViaBackwards are not both on. Turn them on under Let players on other Minecraft versions join, or move the server to a version the warning names. The warning also shows
No Bedrock edge is registered yet, so joins may be limited. Restart the server after one is.when we have no proxy to trust yet. - Bedrock players cannot join after a Minecraft update
- The server, or the players' Minecraft, may run a version that no Geyser release supports yet. Use Geyser development builds until a release does.
- Failed with
Geyser's config.yml cannot be read as YAML - We did not change your file. Fix
plugins/Geyser-Spigot/config.yml(config/Geyser-Fabric/config.ymlon Fabric), or delete it, and restart the server. The card returns toreadyonce we can merge our settings into it. - Could not change the Geyser builds with
GeyserMC's development builds are unavailable right now. Try again shortly, or switch Geyser back to releases. - We could not download the newest development build from GitHub, so nothing changed and Geyser stays on releases. Try again later. A server that already uses development builds keeps the build it has until a start can download a newer one.
- You installed Geyser yourself and Bedrock players cannot connect
- Restart the server. When the server starts and finds a Geyser file in its
pluginsfolder (modson Fabric and NeoForge), we set it up for crossplay: it gets a Bedrock port of its own and the settings Bedrock players need, as if you had turned on the switch. This happens only on a server where crossplay was never turned off. If you turned the switch off earlier, turn it on again instead. To run your own copy with crossplay off, add a port on the Ports tab, setbedrock.addressto0.0.0.0andbedrock.portto that port's number, not the server's IP address or the Java port, and restart the server. Only the ports on the Ports tab are reachable. - Bedrock players cannot join through a proxy
- A proxy such as Velocity, with Geyser on it, reaches each backend server at the address on the backend's Ports tab, not
127.0.0.1orlocalhost, even on the same machine. See Connect a proxy to its servers. - A change to Geyser's config does not last
- The setting is one we set at every start. See Change the Geyser settings.
Related
Section titled Related- Change the server software
- Let players on other Minecraft versions join
- Manage server ports
- Manage installed addons
With the API
Section titled With the APITurn Bedrock crossplay on:
curl -X POST https://api.coritan.com/api/v1/client/servers/$SERVER/software/bedrock \
-H "Authorization: Bearer $CORITAN_TOKEN" \
-H "Content-Type: application/json" \
-d '{"enabled": true}'
The request returns once both plugins are installed. The response has enabled (true), state (ready), geyser_version, geyser_build, floodgate_version, floodgate_build and bedrock_port, Geyser's port.
Send {"enabled": false} to turn it off. The response is the new state, with enabled set to false, state set to disabled, geyser_channel set to release and the versions set to null. A body without enabled also turns crossplay off.
Choose where Geyser comes from:
curl -X PUT https://api.coritan.com/api/v1/client/servers/$SERVER/software/bedrock/channel \
-H "Authorization: Bearer $CORITAN_TOKEN" \
-H "Content-Type: application/json" \
-d '{"channel": "development"}'
channel is release, the default, or development. With crossplay on, the request returns once the newest build of that channel is installed, and the response is the crossplay state with geyser_channel. With crossplay off, the choice applies when you turn crossplay on. Any other word answers 422, which names the two words. On Fabric and NeoForge, development answers 400 with Development builds of Geyser are for plugin servers. On Fabric, we install the Geyser release made for the server's Minecraft version., naming NeoForge on a NeoForge server
GET /api/v1/client/servers/{uuid}/software/context shows the state under bedrock_bridge:
supported- Whether the server can run Geyser. When it is
false,unsupported_reasonsays why. enabledandstatetrueandreadywhile crossplay is on,falseanddisabledwhile it is off.geyser_channel- Where Geyser comes from:
releaseordevelopment. geyser_channels- The channels the server's software can use:
["release", "development"]on a plugin server, and["release"]on Fabric and NeoForge. geyser_version,geyser_build,floodgate_versionandfloodgate_build- The builds on the server. On development builds,
geyser_versionis the GeyserMC branch the build came from, such asfeature/26.3, andgeyser_buildis its build number on GitHub. last_checked_at- When we last checked GeyserMC for new builds.
last_error- The reason crossplay is in the
failedstate, otherwisenull. warning- A sentence when the server's Minecraft version is one Geyser does not speak and ViaVersion and ViaBackwards are not on, or when no Bedrock edge is registered yet. Otherwise
null. joinnullwhile crossplay is off. Otherwise,addressandportare where Bedrock players join: the server's hostname and port19132when it has a hostname, and otherwise its IP address and Geyser's port.directis the server's IP address and Geyser's port, ashost:port, andnullon a free server. A free server with no hostname hasnullforaddress,portanddirect.bedrock_portis Geyser's port.
A server that cannot run Geyser answers 400 with the reason:
Vanilla Minecraft cannot load plugins. Switch to Paper to add Bedrock support.Bedrock crossplay works on Fabric, NeoForge and plugin servers such as Paper and Spigot, and this server runs another mod loader. Switch to Fabric, NeoForge or Paper to use it.This is a proxy. Geyser runs on the servers behind it, so turn Bedrock crossplay on there, or install Geyser's own proxy build yourself.Geyser cannot reach this server's Minecraft version (1.21.11). Arclight, Mohist and Magma cannot use ViaVersion. Switch to Paper, or to one of: 26.1.1, 26.1.2, 26.2., with the server's own versionThis server type does not support plugins.Geyser needs Java 21 or newer and this server runs Java 17. Update the Minecraft version first., with the server's own Java version
These also answer 400:
GeyserMC downloads are unavailable right now. Try again shortly.GeyserMC's development builds are unavailable right now. Try again shortly, or switch Geyser back to releases.Geyser could not be installed on the server. Try again shortly., or the same for FloodgateNo free port is available on this node. Try again shortly.Bedrock crossplay could not be turned off: the plugin files could not be removed. Try again shortly.Geyser's settings file could not be read. Try again shortly.
On Fabric and NeoForge, these also answer 400:
Geyser needs Fabric API, and the server's mods folder does not have it. Install Fabric API, then turn on crossplay., on Fabric onlyGeyser has no Fabric build for Minecraft 1.20.1. Change the server to a Minecraft version that Geyser supports on Fabric, or switch to Paper., with the server's own version and software, or the same for FloodgateGeyser's Fabric build for Minecraft 1.21.1 is too old to connect Bedrock players through our network. Change the server to a newer Minecraft version that Geyser supports on Fabric, or switch to Paper., with the server's own version and softwareWe cannot tell which Minecraft version this server runs, so we cannot choose the Geyser build for it. Choose a Minecraft version on the Software tab, then turn on crossplay.Geyser's Fabric builds are unavailable right now. Try again shortly., or the same for NeoForgeWe could not read the server's mods folder. Try again shortly.
On a server shared with you, turning crossplay on or off and choosing where Geyser comes from need software.install. Each of these requests counts toward the software change limit, and each is recorded on the server's activity log.
API operations on this page
| Method | Path | What it does |
|---|---|---|
POST | /api/v1/client/servers/{uuid}/software/bedrock | Turn Bedrock crossplay on or off for a Java server |
PUT | /api/v1/client/servers/{uuid}/software/bedrock/channel | Choose where Bedrock crossplay takes Geyser from: release or development |