Last updated: March 2026
RetroArch NetPlay lets you play retro games online with anyone, on any platform, with rollback netcode that makes it feel like you’re on the same couch. NES, SNES, Genesis, GBA, arcade — all playable over the internet with near-zero input lag.
It’s also one of RetroArch’s least understood features. The setup isn’t hard, but there are enough moving parts — port forwarding, relay servers, core compatibility, ROM checksums — that most people give up before they get it working.
This guide walks you through the entire process. By the end, you’ll have online multiplayer running on PC, Android, Steam Deck, or a retro handheld.
How NetPlay Actually Works
NetPlay doesn’t stream video or audio. It syncs controller inputs between multiple RetroArch instances running the same game. Both players run the emulator locally — NetPlay just makes sure everyone’s button presses arrive at the right time.
It uses rollback-based netcode (the same concept as GGPO in fighting games):
- Your inputs are sent to the other player with frame numbers attached
- If a remote input arrives late, RetroArch invisibly rewinds to a savestate, replays with the correct input, and catches up to the current frame
- This happens in milliseconds — you don’t see it unless the connection is terrible
The result: multiplayer that feels responsive even with 50-100ms of network latency. It’s dramatically better than the old “wait for the other player’s input” approach that made online emulation miserable.
Key specs:
- Up to 16 players and unlimited spectators
- P2P (direct connection) or relay server (no port forwarding needed)
- Cross-platform — PC, Android, Steam Deck, retro handhelds can all play together
- Rollback — near-lagless gameplay on supported cores
Which Systems Work with NetPlay
Not every core supports netplay. Here’s the real list:
Works Great (Recommended)
| System | Best Core | Why It Works |
|---|---|---|
| NES | FCEUmm or Nestopia | Lightweight, fast rollback |
| SNES | Snes9x | Use current version, NOT Snes9x 2005/2010 |
| Genesis / Mega Drive | Genesis Plus GX | Covers Genesis, Master System, Game Gear |
| GBA | gpSP | RetroArch 1.17 added wireless adapter emulation — Pokémon trading works |
| Arcade | FinalBurn Neo | Best for fighting games, beat ’em ups |
| Game Boy | Gambatte | Link cable games work |
Works but Demanding
| System | Core | Notes |
|---|---|---|
| PS1 | Beetle PSX | Technically works but rollback is CPU-heavy. Needs powerful hardware on both ends. |
| N64 | Mupen64Plus-Next | Hit or miss. Some games work, many desync. |
| DOS | DOSBox Pure | LAN games work via netplay (added in RetroArch 1.17) |
| DS | MelonDS DS | Local wireless emulation added in 1.17, experimental |
Doesn’t Work
PS2, GameCube/Wii, Dreamcast, Saturn, 3DS, PSP — these are too demanding for the rollback rewind-replay to run in real time. Use alternatives for these (covered at the end of this guide).
Setting Up NetPlay — Step by Step
What You Both Need
Before anything else, make sure both players have:
- The exact same RetroArch version — Even a minor version difference can cause desyncs
- The exact same core version — Update cores on both machines before starting
- The exact same ROM file — Byte-for-byte identical. Different regions, different patches, or different dumps will fail. The checksum must match.
This is the #1 source of problems. If netplay isn’t working, check these three things first.
Hosting a Game
- Load your game using a supported core
- Navigate to Netplay > Host
- Choose your connection type:
- P2P (direct): Lowest latency. Requires port 55435 TCP to be open (via UPnP or manual port forwarding)
- Relay server: No port forwarding needed. RetroArch has built-in relay servers in NYC, Madrid, Montreal, and Sao Paulo
- Click Start NetPlay Host
- Your room appears in the public lobby. Share your username or have the other player search for your game
Joining a Game
- Open RetroArch (no need to load a game first)
- Navigate to Netplay > Refresh
- Browse the lobby list — rooms show game name, core, region, and player count
- Click the room to join
- RetroArch automatically downloads the correct core if you don’t have it, but you must already have the matching ROM
The Lobby Browser
RetroArch has a built-in lobby at lobby.libretro.com (also accessible in the app). It shows all active public rooms.
For a better experience, check out the Netplay Hub — a community-run alternative with auto-updating room lists, one-click launching, custom relay servers, and Discord integration.
Network Configuration
Option 1: Relay Servers (Easiest)
Don’t want to mess with your router? Use a relay server. RetroArch has four built-in options:
| Server | Location | Best For |
|---|---|---|
| NYC | New York, USA | North America East |
| Madrid | Madrid, Spain | Europe |
| Montreal | Montreal, Canada | North America |
| Sao Paulo | Sao Paulo, Brazil | South America |
In RetroArch: Settings > Network > Relay Server. Pick the one closest to both players.
Relay servers add 20-50ms of latency compared to P2P, but they work through any firewall and any NAT type. For casual play, you won’t notice the difference.
Option 2: UPnP (Automatic Port Forwarding)
Most modern routers support UPnP, which lets RetroArch automatically open port 55435 when hosting.
Enable in RetroArch: Settings > Network > Use UPnP
The catch: UPnP is unreliable. RetroArch enables it but doesn’t verify it actually worked. If connections fail, switch to manual port forwarding.
Option 3: Manual Port Forwarding (Most Reliable)
For the host only:
- Log into your router (usually 192.168.1.1 or 192.168.0.1)
- Find the port forwarding section (varies by router)
- Create a rule: TCP port 55435 → your computer’s local IP
- Save and restart the router
The client doesn’t need to port forward — only the host.
Double NAT warning: If you’re on a college network, apartment complex internet, or behind two routers (ISP modem + your router), port forwarding may not work. Use a relay server instead.
Optimizing Latency
NetPlay works out of the box, but these settings make it feel better:
Input Delay
Settings > Latency > Netplay Input Latency Frames
This adds intentional input delay to give the network time to deliver the other player’s inputs before they’re needed. More delay = fewer rollbacks but mushier controls.
| Connection Quality | Recommended Delay |
|---|---|
| LAN / Same City | 0-1 frames |
| Same Country | 1-2 frames |
| Cross-Country | 2-3 frames |
| International | 3-4 frames |
Automatic Frame Delay
Settings > Latency > Automatic Frame Delay
Turn this on. RetroArch will auto-tune the input delay based on your connection quality in real time. It’s smart and it works.
Rollback Frames
The default is fine for most connections. If you’re seeing frequent rollback artifacts (brief visual glitches), try increasing rollback frames to 6-8. This gives the system more room to correct late inputs without visible disruption.
The Golden Rule
Wired Ethernet beats Wi-Fi every time. A 5ms wired connection with 1 frame of delay feels better than a 30ms Wi-Fi connection with 3 frames of delay. If you’re serious about netplay, plug in.
Platform-Specific Setup
PC (Windows / Linux / Mac)
The best platform for netplay. Most processing headroom, easiest network config, wired Ethernet available.
- Download RetroArch from retroarch.com
- Everything in this guide applies directly
- Wired Ethernet recommended for the host
Android
NetPlay works on Android with some caveats:
- Download RetroArch from retroarch.com (64-bit APK), not the Play Store version
- Performance is fine for NES/SNES/Genesis/GBA
- Known bug: Some Android devices get an “invalid header” error when connecting via relay servers. P2P works around this.
- Wi-Fi only (most phones don’t have Ethernet) — expect slightly higher latency than PC
- Cross-platform with PC works: Android ↔ PC ↔ Steam Deck
For the full Android emulation setup, see our Android Emulation Guide.
Steam Deck
Same setup as PC — RetroArch runs natively.
- Install via EmuDeck (which configures RetroArch automatically) or from the Steam Store
- Wi-Fi only unless you use a USB-C Ethernet adapter
- Desktop mode recommended for initial netplay configuration, then switch to Gaming Mode for play
- Works cross-platform with PC and Android
Retro Handhelds
This is where netplay gets interesting. Devices running RetroArch — Anbernic RG35XX, Miyoo Mini Plus, PowKiddy RGB30, Retroid Pocket series — can all do netplay for 8-bit and 16-bit systems.
Recommended for handheld netplay: NES, SNES, Genesis, Game Boy, GBA. Anything heavier will struggle with the rollback processing overhead on ARM chips.
Miyoo Mini Plus special feature: Onion OS has a one-button Easy Netplay feature. Connect to Wi-Fi, press a button, and you’re in a netplay session. It’s the most frictionless handheld netplay setup that exists.
For device recommendations, see our Best Retro Handhelds and Best Handheld Emulators guides.
Troubleshooting
“Connection Failed” / Can’t Connect
- Check versions: Both players need the exact same RetroArch version AND core version. Update both.
- Check ROM: The ROM must be byte-for-byte identical. Re-download from the same source if unsure.
- Switch to relay: If P2P fails, try a relay server. It eliminates all network configuration issues.
- Check firewall: Windows Defender and antivirus software can block port 55435. Create an exception for RetroArch.
- Double NAT: If you’re behind two routers, port forwarding won’t work. Use a relay.
Desync (Players See Different Things)
The three causes, every time:
- ROM mismatch — Even a header difference (some NES ROMs have iNES vs NES 2.0 headers). Use the exact same file.
- Save state loaded during netplay — Never load save states during a netplay session. Disable auto-save states before starting.
- Core version mismatch — Update cores on both machines.
Lag / Input Feels Mushy
- Use wired Ethernet — Wi-Fi adds 10-30ms of jitter on top of base latency
- Use P2P instead of relay — Saves 20-50ms
- Lower input delay frames — Try 1 instead of 2 (accept more rollback artifacts for snappier controls)
- Enable Automatic Frame Delay — Let RetroArch tune it dynamically
- Pick a closer relay server — If using relay, choose the geographically nearest server
Android “Invalid Header” Bug
Some Android devices fail to connect via relay servers with an “invalid header” error. This is a known unresolved bug. Workarounds:
- Use P2P instead (host on PC with port forwarding, join from Android)
- Try a different relay server
- Use the RetroArch APK from the website instead of the Play Store version
What’s New in 2026
RetroArch 1.17 brought major netplay improvements:
- GBA wireless adapter emulation via the gpSP core — you can trade Pokémon over netplay. Finally.
- DOS LAN game support via DOSBox Pure — play classic DOS multiplayer games online
- DS local wireless via MelonDS DS — experimental but functional for some games
- Connection stability fixes — fewer freezes, crashes, and black screens when players connect/disconnect
- Relay server improvements — fixed memory leaks, spectator mode crashes, and the disconnect-on-leave bug
Alternatives for Systems NetPlay Doesn’t Cover
NetPlay only works well for 8-bit through 32-bit systems. For everything else:
| System | Best Online Option | How It Works |
|---|---|---|
| Arcade fighters | Fightcade | GGPO rollback, best for Street Fighter, KOF, Marvel vs Capcom |
| GameCube / Wii | Dolphin built-in netplay | Has its own P2P system separate from RetroArch |
| Dreamcast | Flycast Dojo | Dreamcast-specific rollback netplay |
| PS1 | DuckStation GGPO fork | Purpose-built PS1 rollback — better than RetroArch’s PS1 netplay |
| Smash Bros Melee | Slippi | Rollback netplay specifically for Melee |
| Any system | Parsec | Streams the host’s screen — works with any emulator, any system |
| Any system (Steam) | Steam Remote Play Together | Same concept as Parsec, through Steam |
Parsec deserves special mention. If you want to play PS2, 3DS, or any other system that doesn’t support RetroArch netplay, Parsec lets the host stream their screen while the guest sends controller inputs. It’s not as clean as native netplay, but it works with literally anything.
Quick-Start Checklist
Ready to go? Here’s the fastest path from zero to playing:
- ✅ Both players install the same version of RetroArch from retroarch.com
- ✅ Both update cores (Online Updater > Update Installed Cores)
- ✅ Both have the exact same ROM file
- ✅ Host loads the game, goes to Netplay > Host > Start
- ✅ Host selects relay server (easiest) or ensures port 55435 is open (best performance)
- ✅ Client opens Netplay > Refresh, finds the room, joins
- ✅ Play
The first time takes 10 minutes. Every time after that takes 30 seconds.
Best Games for NetPlay
If you’re testing your setup, these are guaranteed fun:
| Game | System | Core | Players |
|---|---|---|---|
| Street Fighter II Turbo | SNES | Snes9x | 2 |
| Teenage Mutant Ninja Turtles IV | SNES | Snes9x | 2 |
| Streets of Rage 2 | Genesis | Genesis Plus GX | 2 |
| Contra III | SNES | Snes9x | 2 |
| Gunstar Heroes | Genesis | Genesis Plus GX | 2 |
| NBA Jam | SNES / Genesis | Snes9x / Genesis Plus GX | 4 |
| Bomberman ‘94 | TurboGrafx-16 | Beetle PCE | 5 |
| Pokémon FireRed/LeafGreen | GBA | gpSP | 2 (trade/battle) |
| Metal Slug | Arcade | FinalBurn Neo | 2 |
| Super Smash TV | SNES | Snes9x | 2 |
Start with Streets of Rage 2 or Street Fighter II — they’re lightweight, fun with two players, and will immediately tell you if your setup is working correctly.