RetroArch is the Swiss Army knife of emulation. One app, dozens of emulators, every retro system you care about — all with a single controller setup, universal save states, and consistent hotkeys. It runs on Windows, Mac, Linux, Android, iOS, Steam Deck, Raspberry Pi, and most retro handhelds.
It’s also the most intimidating emulator to set up for the first time.
This guide walks you through the entire process from download to playing your first game. If you’ve tried RetroArch before and bounced off the UI, give it one more shot. Once it clicks, you won’t go back.
What RetroArch Actually Is
RetroArch isn’t an emulator — it’s a frontend. Think of it as a universal player that loads different emulator engines (called cores) as plugins.
- RetroArch = the player (handles UI, controllers, save states, shaders)
- Cores = the emulators (each one handles a specific system)
- Content = your ROMs/game files
You download RetroArch once, then install cores for whatever systems you want to play. The mGBA core plays GBA games. The Beetle PSX core plays PS1 games. The Gambatte core plays Game Boy games. One app, one controller config, one set of hotkeys.
Step 1: Download and Install
Go to retroarch.com and download the version for your platform.
Windows: Grab the installer (.exe) or the portable version (.7z). I recommend portable — it keeps everything in one folder you can move or back up easily.
Mac: Download the .dmg, drag to Applications.
Linux: Available through Flatpak, AppImage, PPA, or compile from source. Flatpak is the easiest.
Steam Deck: Install through Steam (free) or through EmuDeck (which sets up RetroArch and other emulators automatically).
Android: Download from the Google Play Store or F-Droid.
iOS: Available on the App Store.
Step 2: First Launch — Update Everything
On first launch, head to Main Menu > Online Updater and run these updates:
- Update Core Info Files — metadata about available cores
- Update Assets — icons, fonts, UI elements
- Update Controller Profiles — autoconfig files for controllers
- Update Databases — game databases for playlist scanning
This takes a minute or two. It populates RetroArch with all the metadata it needs to function properly.
Step 3: Download Cores
Now install the emulator cores for the systems you want to play.
Main Menu > Load Core > Download a Core
You’ll see a long alphabetical list. Here are the recommended cores for the most popular systems:
| System | Recommended Core | Notes |
|---|---|---|
| NES | Mesen | High accuracy, modern |
| SNES | bsnes (accuracy) or Snes9x (speed) | bsnes is cycle-accurate; Snes9x is lighter |
| Game Boy / GBC | Gambatte | Extremely accurate, lightweight |
| Game Boy Advance | mGBA | Best GBA core, active development |
| Nintendo 64 | Mupen64Plus-Next | Use with ParaLLEl RDP for best results |
| Nintendo DS | melonDS | Best accuracy and features |
| PlayStation 1 | Beetle PSX HW | “HW” version enables resolution upscaling |
| PSP | PPSSPP | Excellent compatibility |
| Sega Genesis | Genesis Plus GX | Also handles Master System, Game Gear |
| Sega Dreamcast | Flycast | Good compatibility |
| Arcade | FBNeo | Best for classic arcade games |
Don’t overthink it. Download the ones you need. You can always add more later.
Step 4: Set Up Your Controller
RetroArch uses a virtual controller called RetroPad — a standardized layout that maps to whatever physical controller you plug in.
Most modern controllers (Xbox, PlayStation, Switch Pro) are auto-detected. Plug it in and it should work immediately.
If it doesn’t, or if you need to customize:
- Settings > Input > Port 1 Controls
- Map each button manually
Critical tip: Set a Hotkey Enable button. Go to Settings > Input > Hotkeys > Hotkey Enable and assign it (I use Select/Share). This prevents accidental triggering of RetroArch functions during gameplay. All hotkey combos will require holding this button first.
Essential Hotkeys
| Action | Default (keyboard) | With controller |
|---|---|---|
| Open Quick Menu | F1 | Hotkey + Start |
| Save State | F2 | Hotkey + R1 |
| Load State | F4 | Hotkey + L1 |
| Fast Forward | Space | Hotkey + R2 |
| Screenshot | F8 | — |
| Quit | Esc | Hotkey + Start (hold) |
Step 5: Add BIOS Files (If Needed)
Some systems require BIOS files — firmware dumps from the original console hardware. RetroArch doesn’t include these. You need to dump them from hardware you own.
Where to put them: Settings > Directory > System/BIOS — set this to a folder, then place BIOS files there.
Which systems need BIOS?
| System | Needed? | File(s) |
|---|---|---|
| PS1 | Yes | scph5501.bin (US) or region-appropriate BIOS |
| Sega Saturn | Yes | saturn_bios.bin |
| Sega CD | Yes | bios_CD_U.bin, bios_CD_E.bin, bios_CD_J.bin |
| PC Engine CD | Yes | syscard3.pce |
| Neo Geo | Yes | neogeo.zip |
| Nintendo DS | Depends | melonDS can use built-in firmware |
| GBA | No | mGBA includes HLE BIOS |
| NES, SNES, GB, N64, Genesis | No | Not required |
If a core loads but shows a black screen, missing BIOS is the first thing to check.
Step 6: Load a Game
Two ways to do this:
Option A: Direct load (quickest)
Main Menu > Load Content — browse to your ROM file and select it. RetroArch will either auto-select a core or ask you to pick one.
Option B: Scan and build playlists (better for large libraries)
Import Content > Scan Directory — point it at your ROM folder. RetroArch matches files against its database and organizes them into system-specific playlists with box art.
For scanning to work well, your ROM files should use standard naming conventions (No-Intro or Redump naming). Weirdly-named files might not be recognized.
Once your games are in playlists, you get a nice library view with thumbnails. Download thumbnails through Online Updater > Playlist Thumbnails Updater.
Step 7: Play and Customize
You’re in. Hit F1 (or your hotkey combo) during gameplay to access the Quick Menu:
- Save/Load State — snapshot your exact position
- Shaders — apply visual filters (CRT scanlines, LCD grids, upscaling)
- Core Options — per-core settings (resolution scaling, accuracy options)
- Controls — remap buttons for specific games
- RetroAchievements — earn community achievements (free account at retroachievements.org)
Recommended shaders
If you want that retro CRT look:
- CRT-Royale — the gold standard for CRT simulation, resource-heavy
- CRT-Geom — lighter CRT simulation, great for most setups
- CRT-Lottes — good middle ground
If you want clean upscaling:
- ScaleFX — smooths pixel art without blurring
- xBR — edge-smoothing upscaler
Apply shaders through Quick Menu > Shaders > Load Shader Preset.
Common Issues and Fixes
“Controller isn’t working”
- Update controller autoconfig: Online Updater > Update Controller Profiles
- On Windows, make sure your controller is using XInput (not DirectInput)
- Manually remap in Settings > Input > Port 1 Controls
“Audio is crackling”
- Settings > Audio > Output — increase Audio Latency to 64ms or 128ms
- Try a different audio driver (on Windows: switch between wasapi and xaudio)
- Make sure Audio Sync is enabled
“Black screen when loading a game”
- Missing BIOS file — check what the core requires
- Wrong ROM format — some cores need specific file types (.bin/.cue vs .iso vs .chd)
- Try a different core for that system
“Everything is running too slow”
- Switch to a lighter core (e.g., Snes9x instead of bsnes)
- Disable shaders
- Disable Run-Ahead and Rewind features
- Try a different video driver (Settings > Drivers > Video — Vulkan is often fastest)
“The menu is overwhelming”
- Switch to Ozone menu: Settings > Drivers > Menu > ozone (more familiar desktop-style layout)
- Start simple — you only need cores, a controller, and games. Everything else is optional.
RetroArch vs. Standalone Emulators
RetroArch isn’t always the best choice. Here’s when to use each:
Use RetroArch for: NES, SNES, Game Boy, GBA, Genesis, PS1, N64, arcade — the cores for these systems are mature and match or beat standalone emulators.
Use standalone emulators for:
- PS2 — PCSX2 standalone is significantly better
- GameCube/Wii — Dolphin standalone has better features and updates
- PS3 — RPCS3, standalone only
- PS1 — DuckStation if you prefer its UI (though Beetle PSX is also excellent)
- Switch — standalone forks only
General rule: For anything 8-bit or 16-bit, RetroArch is the way to go. For newer systems (6th gen and beyond), check whether the standalone emulator is materially better before committing to the RetroArch core.
Where to Go From Here
Once you’re comfortable with the basics:
- RetroAchievements — Free account at retroachievements.org. Earn achievements in retro games.
- Netplay — Online multiplayer with rollback netcode. Works surprisingly well.
- Run-Ahead — Reduces input latency by running frames ahead. Makes platformers feel tighter.
- Rewind — Hold a button to rewind gameplay in real-time. Great for difficult games.
- Custom playlists — Organize favorites, curate collections by genre or era.
RetroArch has a learning curve, but once you get past the initial setup, it’s the most powerful emulation tool available. One app, every system, every feature, every platform. It’s worth the 30 minutes it takes to get comfortable.
Official site | Libretro docs | Core list
Last verified: March 2026