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):

  1. Your inputs are sent to the other player with frame numbers attached
  2. If a remote input arrives late, RetroArch invisibly rewinds to a savestate, replays with the correct input, and catches up to the current frame
  3. 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:

SystemBest CoreWhy It Works
NESFCEUmm or NestopiaLightweight, fast rollback
SNESSnes9xUse current version, NOT Snes9x 2005/2010
Genesis / Mega DriveGenesis Plus GXCovers Genesis, Master System, Game Gear
GBAgpSPRetroArch 1.17 added wireless adapter emulation — Pokémon trading works
ArcadeFinalBurn NeoBest for fighting games, beat ’em ups
Game BoyGambatteLink cable games work

Works but Demanding

SystemCoreNotes
PS1Beetle PSXTechnically works but rollback is CPU-heavy. Needs powerful hardware on both ends.
N64Mupen64Plus-NextHit or miss. Some games work, many desync.
DOSDOSBox PureLAN games work via netplay (added in RetroArch 1.17)
DSMelonDS DSLocal 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:

  1. The exact same RetroArch version — Even a minor version difference can cause desyncs
  2. The exact same core version — Update cores on both machines before starting
  3. 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

  1. Load your game using a supported core
  2. Navigate to Netplay > Host
  3. 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
  4. Click Start NetPlay Host
  5. Your room appears in the public lobby. Share your username or have the other player search for your game

Joining a Game

  1. Open RetroArch (no need to load a game first)
  2. Navigate to Netplay > Refresh
  3. Browse the lobby list — rooms show game name, core, region, and player count
  4. Click the room to join
  5. 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:

ServerLocationBest For
NYCNew York, USANorth America East
MadridMadrid, SpainEurope
MontrealMontreal, CanadaNorth America
Sao PauloSao Paulo, BrazilSouth 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:

  1. Log into your router (usually 192.168.1.1 or 192.168.0.1)
  2. Find the port forwarding section (varies by router)
  3. Create a rule: TCP port 55435 → your computer’s local IP
  4. 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 QualityRecommended Delay
LAN / Same City0-1 frames
Same Country1-2 frames
Cross-Country2-3 frames
International3-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

  1. Check versions: Both players need the exact same RetroArch version AND core version. Update both.
  2. Check ROM: The ROM must be byte-for-byte identical. Re-download from the same source if unsure.
  3. Switch to relay: If P2P fails, try a relay server. It eliminates all network configuration issues.
  4. Check firewall: Windows Defender and antivirus software can block port 55435. Create an exception for RetroArch.
  5. 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:

  1. ROM mismatch — Even a header difference (some NES ROMs have iNES vs NES 2.0 headers). Use the exact same file.
  2. Save state loaded during netplay — Never load save states during a netplay session. Disable auto-save states before starting.
  3. Core version mismatch — Update cores on both machines.

Lag / Input Feels Mushy

  1. Use wired Ethernet — Wi-Fi adds 10-30ms of jitter on top of base latency
  2. Use P2P instead of relay — Saves 20-50ms
  3. Lower input delay frames — Try 1 instead of 2 (accept more rollback artifacts for snappier controls)
  4. Enable Automatic Frame Delay — Let RetroArch tune it dynamically
  5. 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:

SystemBest Online OptionHow It Works
Arcade fightersFightcadeGGPO rollback, best for Street Fighter, KOF, Marvel vs Capcom
GameCube / WiiDolphin built-in netplayHas its own P2P system separate from RetroArch
DreamcastFlycast DojoDreamcast-specific rollback netplay
PS1DuckStation GGPO forkPurpose-built PS1 rollback — better than RetroArch’s PS1 netplay
Smash Bros MeleeSlippiRollback netplay specifically for Melee
Any systemParsecStreams the host’s screen — works with any emulator, any system
Any system (Steam)Steam Remote Play TogetherSame 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:

  1. ✅ Both players install the same version of RetroArch from retroarch.com
  2. ✅ Both update cores (Online Updater > Update Installed Cores)
  3. ✅ Both have the exact same ROM file
  4. ✅ Host loads the game, goes to Netplay > Host > Start
  5. ✅ Host selects relay server (easiest) or ensures port 55435 is open (best performance)
  6. ✅ Client opens Netplay > Refresh, finds the room, joins
  7. ✅ 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:

GameSystemCorePlayers
Street Fighter II TurboSNESSnes9x2
Teenage Mutant Ninja Turtles IVSNESSnes9x2
Streets of Rage 2GenesisGenesis Plus GX2
Contra IIISNESSnes9x2
Gunstar HeroesGenesisGenesis Plus GX2
NBA JamSNES / GenesisSnes9x / Genesis Plus GX4
Bomberman ‘94TurboGrafx-16Beetle PCE5
Pokémon FireRed/LeafGreenGBAgpSP2 (trade/battle)
Metal SlugArcadeFinalBurn Neo2
Super Smash TVSNESSnes9x2

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.