- A crossplay server is a Java server running GeyserMC, which translates Bedrock connections into Java ones.
- Add Floodgate so Bedrock players can join without owning Java Edition.
- Open UDP 19132 as well as your Java port. Many problems are just a missing UDP port.
- Phones, tablets and Windows can add your server directly. Xbox, PlayStation and Switch can't type in an address in the normal game.
To make a crossplay Minecraft server, you run a regular Java Edition server (Paper is the usual choice), install the GeyserMC plugin so Bedrock players can connect to it on UDP port 19132, and install Floodgate so those Bedrock players can join without buying Java Edition. Java players join on your normal address; Bedrock players use the same host with the Bedrock port.
It works the one way only. There's no plugin that lets Java players join a Bedrock Dedicated Server, so if crossplay matters, you build on Java. The good news: once Geyser is set up, most of what you'd want from a Java server (plugins, permissions, proxies) keeps working.
How Geyser makes Java and Bedrock play together
Java and Bedrock speak completely different network protocols. Geyser sits between them as a live translator. A Bedrock player connects to Geyser, and Geyser connects to your Java server pretending to be a Java client, converting packets both ways in real time.
The translator. Listens for Bedrock players on UDP 19132 and turns them into Java connections. Required.
The authentication bridge. Lets Bedrock players join an online-mode server with their Microsoft (Xbox) account instead of a Java account. Optional, but almost everyone uses it.
Only needed when your server runs an older Java version than the one Geyser imitates.
Because Geyser imitates one specific Java version, check the supported versions page before you start. At the time of writing (September 2026) it lists Bedrock 26.30 to 26.51 and imitates Java 26.2. Geyser's setup docs say a server older than that needs ViaVersion, and on a network every backend must accept that Java version. When Mojang ships a new drop, update Geyser first; Bedrock players on a brand-new version can't connect until you do.
Before you start: the crossplay checklist
- A Java server you control: Paper, Purpur, Spigot, Fabric or NeoForge, or a Velocity, BungeeCord or Waterfall proxy in front of them.
- A way to open a UDP port: router access at home, or a host that allows UDP. More on hosts below.
- A recent Java runtime: Java 26.3 itself requires Java 25, so a server that runs the current version is already covered.
- A Bedrock device to test with: a phone or Windows PC is easiest, since they can add a server by address.
Setup A: one Paper server
This is the setup for a single survival server, an SMP or a small minigame server with no proxy.
- Download
Geyser-Spigot.jarandFloodgate-Spigot.jarfrom the official GeyserMC download page. The "Spigot" builds are the ones for Paper and Purpur too. - Put both in
plugins/and restart the server. Geyser writesplugins/Geyser-Spigot/config.yml; Floodgate writes its own folder with akey.pem. - Check the Bedrock section of Geyser's config.
address: 0.0.0.0andport: 19132are the defaults and are right for most people.clone-remote-portcopies your Java port into the Bedrock port when set totrue; leave itfalseunless your host only gives you one port. - Set
auth-typetofloodgatein Geyser's config, as Floodgate's setup guide instructs, then restart again. - Open UDP 19132 on your router or host panel, plus the Windows or Linux firewall. Your Java port stays TCP as before.
- Test from outside with
geyser connectiontest <your-ip> 19132in the console, then join from a phone on mobile data.
Setup B: a Velocity or BungeeCord network
On a network, Bedrock players should enter through the proxy like everyone else, so Geyser goes on the proxy only.
- Proxy: install the Velocity (or BungeeCord) builds of Geyser and Floodgate in the proxy's
pluginsfolder and restart. Setauth-typetofloodgatein Geyser's config. - Proxy: in Floodgate's config, set
send-floodgate-datatotrue. - Backends: install Floodgate (the Spigot build, or Fabric on Fabric servers) on every backend. Geyser does not go on the backends.
- Copy
key.pemfrom the proxy's Floodgate folder into each backend's Floodgate folder, replacing the generated one. Every server must share the same key. - Player forwarding: on Velocity, use modern forwarding (
player-info-forwarding-mode = "modern"invelocity.toml, andproxies.velocity.enabled: truewith the matching secret in each Paper backend'sconfig/paper-global.yml). On BungeeCord, setip_forward: trueon the proxy andbungeecord: truein each backend'sspigot.yml. - Restart everything, open UDP 19132 on the proxy's machine, and test.
Modded servers and "Geyser as a mod"
Geyser and Floodgate also come as mods for Fabric and NeoForge servers, for owners running Create or Cobblemon style packs. Be realistic: Bedrock players can join, but they can't install your Java mods, so modded blocks, items and screens won't display for them properly. Crossplay works best on plugin servers, where everything happens server-side.
Floodgate details that matter to players
Floodgate changes how Bedrock players appear on your server, and your staff should know what to expect.
| Setting or command | Default | What it means |
|---|---|---|
username-prefix | "." | Bedrock names get a dot in front, so a Bedrock ".Alex" can't collide with a Java "Alex" |
replace-spaces | true | Spaces in gamertags become underscores, because Java names can't contain spaces |
fwhitelist add Name | Whitelists a Bedrock player without typing the prefix | |
player-link | Enabled, global linking on | Players with both editions can link accounts with /linkaccount and keep one inventory and one set of permissions |
Plugins that store names (permissions, economy, land claims) will see the prefixed name. If you rely on a whitelist, use fwhitelist for Bedrock players, not the vanilla command.
Ports, hosts and "minecraft server hosting for Java and Bedrock"
Most Geyser problems are network problems. Java uses TCP; Bedrock uses UDP. A host or router that only opens TCP gives you a server Java players love and Bedrock players can't find.
- Hosts that block UDP by default. Geyser's port forwarding page names OVH, SoYouStart and Oracle Cloud as providers where you have to open UDP yourself in their firewall panel.
- CGNAT at home. If you can't open ports at all, Geyser's docs suggest a tunnel such as playit.gg, which handles UDP.
- SRV-only domains. Bedrock ignores SRV records. Geyser's troubleshooting list shows "Invalid IP address!" as the symptom. Give Bedrock players a plain hostname (an A record) or the IP, plus the port.
Shopping for a host? A "crossplay" or "Geyser" checkbox is nice, but what you actually need is simple: the host must let you open a UDP port (19132 ideally) on the same machine and let you upload your own plugins. Ask support before paying if the plan page doesn't say. Everything else in this guide works the same on any host. If you're hosting at home, our guide on making a server public covers routers, firewalls and tunnels in depth.
How Bedrock players join (the honest version)
| Device | Can they join your crossplay server? |
|---|---|
| Java Edition (PC, Mac, Linux) | Yes, as normal: Multiplayer, Add Server |
| Bedrock on Windows, iPhone, iPad, Android | Yes: Servers, Add Server, then your address and port 19132 |
| Xbox, PlayStation, Nintendo Switch | Not by typing an address. The normal game only lets consoles join the built-in featured servers and Realms. Community workarounds exist (BedrockConnect, which changes the console's DNS; the BedrockTogether phone app; Phantom on a PC). They're third-party tools, so players should read each tool's instructions and know how to undo a DNS change |
Put this table, or a link to our Xbox, PS5 and Switch guides, in your Discord. Console players will ask on day one. Don't promise them an "Add Server" button; it isn't there. Console online play also needs the platform's subscription (an Xbox Game Pass plan with online play, PlayStation Plus, or Nintendo Switch Online). Minecraft for Nintendo Switch 2 arrives on 2026-10-27; there's no sign yet that it changes the custom-server rule, and we'll update this after launch.
Common crossplay problems and fixes
| Error or symptom | Cause | Fix |
|---|---|---|
| Bedrock: "Unable to connect to world" | UDP 19132 not reachable | Open UDP on router, firewall and host panel; run geyser connectiontest |
| Bedrock: "Invalid IP address!" | The domain only has an SRV record | Use an A record or the IP, plus the port |
| Bedrock: "Outdated client!" | Geyser and the player's Bedrock version don't line up | Update Geyser first (the usual cause after a new drop); if the player's game is old, they update too |
| Bedrock: "Outdated server!" | Your Java server is older than the version Geyser imitates | Update the server, or install ViaVersion |
Console: BindException: Address already in use | Something else (often a second Geyser) already holds 19132 | Stop the other process or change one port |
| Kicked right after joining on a network | key.pem differs between proxy and backends, or forwarding is off | Copy the proxy's key to every backend; recheck forwarding settings |
| Stuck on "Locating server" | Often packet size (MTU) or an old Java runtime | Update Java; Geyser's docs suggest lowering the MTU setting in steps of 100 |
Some differences aren't bugs. Geyser's current limitations page lists things Bedrock players simply won't see the Java way, such as clickable links in chat, the glowing effect, tab completion in chat, and custom enchantments. If your server leans on clickable chat links for voting or rules, give Bedrock players a command or a sign instead.
Get listed as a crossplay server
When you add a Java server to 9MinecraftServer, a daily Bedrock probe checks port 19132 on the same host. If the Bedrock reply clearly belongs to the same server (it carries your server's name or shares a distinctive word with your Java MOTD), we show the Bedrock address on your page and include you on crossplay servers. Two misses in a row remove it, so if you move Geyser to another port or host, tell players in your listing. Keep Geyser's Bedrock MOTD mentioning your server's name; generic text like "A Geyser server" looks the same as every other server on a shared host.
Next steps: set up vote rewards, and read our player-side guide to crossplay servers to see what Bedrock players look for when they pick one.
Quick questions
Can Java players join a Bedrock server?
Not with Geyser. Geyser only brings Bedrock players onto Java servers. For crossplay, start with a Java server.
Do Bedrock players need to buy Java Edition?
No, not if you run Floodgate. They join with their Bedrock game and Microsoft account. Without Floodgate, they'd need a Java account to sign in.
Do Realms support crossplay between Java and Bedrock?
No. Java Realms and Bedrock Realms are separate products, and Realms can't run plugins like Geyser.
Is Geyser free?
Yes. GeyserMC and Floodgate are free, open-source projects. Download them only from geysermc.org or their GitHub pages.
