GoNES
GoNES is a free, open-source NES emulator written in Go, available for Windows, macOS, Linux, and web browsers.
What GoNES is
GoNES is a free, open-source NES emulator written in Go, available for Windows, macOS, Linux, and web browsers. In a browser, it runs through WebAssembly, and the project links to a hosted version. On desktop, it opens a file picker at startup for selecting a .nes ROM; it can also be started from a terminal with a ROM file argument. The project lists support for mappers 0, 1, 2, 3, 4, 7, 69, and 71, which it says cover 84.34% of official NES games. Keyboard bindings can be configured for two players, and controls include saving and loading states as well as undoing those actions. GoNES creates a configuration file on first run, with its location documented for Windows, macOS, and Linux. Release downloads are available, and macOS installation through Homebrew is documented. Building from source requires OpenGL development libraries because its rendering uses Ebitengine. The project is licensed under Apache-2.0.
Good
- Runs on Windows, macOS, Linux, and in browsers
- Opens .nes files or accepts a ROM argument
- Supports configurable keyboard bindings for two players
- Includes save, load, and undo state bindings
Watch out
- Listed mapper support covers 84.34% of official NES games
- Building from source requires OpenGL development libraries
Who it suits
GoNES suits players looking for a free NES emulator on desktop or in a browser. It may also fit users who want configurable two-player keyboard controls and save states.
Verdict
GoNES offers several ways to run NES games, including a browser option and desktop downloads. Check its listed mapper support if compatibility with a particular game matters.
Plans and prices
From GoNES's own pricing page, checked 8 Oct 2026.
| Plan | Price | What it gives you |
|---|---|---|
| GoNES | Free | NES emulator; source and release downloads available |
The facts
Each one read from GoNES's own pages, with the date it was checked.
Where it runs
- Browser play
- GoNES supports emulation in a web browser by compiling to WASM, and the README links to a hosted instance.checked 4 Oct 2026
- Browser version
- The emulator can run in a web browser by compiling to WebAssembly, and the README links to a hosted instance.checked 8 Oct 2026
- macOS installation
- The README documents installation through Homebrew with `brew install gabe565/tap/gones --no-quarantine`.checked 4 Oct 2026
- Mapper support
- The README lists mappers 0, 1, 2, 3, 4, 7, 69, and 71, covering 84.34% of official NES games according to the project.checked 4 Oct 2026
What it does
- Build requirement
- Building from source requires Go and OpenGL development libraries for the Ebiten rendering library.checked 8 Oct 2026
- Command-line options
- The command documentation lists options for audio, configuration, step debugging, fullscreen, palette files, pause on unfocused windows, resume, UI scale, and trace logging.checked 8 Oct 2026
- Configuration
- GoNES generates a configuration file on first run, with documented locations for Windows, macOS, and Linux.checked 8 Oct 2026
- Controller input
- The README documents default key bindings for two players, and says keys are configurable.checked 8 Oct 2026
- Controls
- The README lists configurable keyboard controls, including Player 1 and Player 2 bindings.checked 4 Oct 2026
- Development status
- The README says the GUI renders but menu options still need to be added.checked 8 Oct 2026
- Downloads
- The README says automated builds are uploaded during releases and links to release download files.checked 4 Oct 2026
- Emulation coverage
- The README lists mappers 0, 1, 2, 3, 4, 7, 69, and 71 as supported, covering 84.34% of official NES games.checked 8 Oct 2026
- Installation
- The README documents installation through Homebrew on macOS, release binaries, the browser version, and Go source installation.checked 8 Oct 2026
- License
- The repository identifies its license as Apache-2.0.checked 8 Oct 2026
- Purpose
- GoNES is an NES emulator written in Go.checked 8 Oct 2026
- Release features
- The v0.2.0 release notes list per-game configuration overrides and NES utility commands for ROM and graphics data tasks and Game Genie codes.checked 8 Oct 2026
- ROM loading
- The app opens a file picker for a .nes file and can also be launched from a terminal with a ROM file argument.checked 8 Oct 2026
- Save states
- The README lists keyboard shortcuts for saving, loading, and undoing save states.checked 8 Oct 2026
- Security
- The repository page shows a Security and quality section with 0 items.checked 8 Oct 2026
- Source installation
- The README documents source installation with Go using `go install gabe565.com/gones@latest`.checked 4 Oct 2026
- Terminal use
- GoNES can be launched from a terminal with a ROM file argument.checked 4 Oct 2026
The company
- Maker
- The GitHub profile identifies Gabe Cook as the project maker and lists Oklahoma City, Oklahoma, USA as his location.checked 4 Oct 2026
The full review of GoNES
Overview
GoNES is a free NES emulator for desktop systems and web browsers. It suits players who value flexible ways to launch games and configurable two-player keyboard controls, but its supported mapper set leaves some of the NES library out of reach.
Its appeal is practical rather than broad: you can open a ROM from a file picker, launch one from a terminal, or use the browser build. The unfinished menu options and partial mapper coverage make it a less suitable pick for players who want comprehensive compatibility or a polished menu-driven interface.
Key features
At startup, GoNES opens a file picker for a .nes file; terminal users can instead pass a ROM as an argument. A hosted WebAssembly build provides another way to run it, without installing a desktop version. Together, these routes give players a choice between a direct graphical launch, command-line use, and browser play.
Keyboard bindings are configurable for two players. Save-state, load-state, and undo save/load bindings give players ways to preserve or recover progress outside a game's own save system. GoNES creates a configuration file on first run, with its location documented for Windows, macOS, and Linux.
The project lists support for mappers 0, 1, 2, 3, 4, 7, 69, and 71, which it says cover 84.34% of official NES games. That's a meaningful range, but not full-library compatibility; check the mapper for a particular game before relying on GoNES as your main emulator. The GUI renders, though menu options still need to be added, which limits its appeal to players expecting a finished menu-driven experience.
Command-line options include audio, configuration, step debugging, fullscreen, palette files, pausing when a window loses focus, resuming, UI scaling, and trace logging. Release notes also describe per-game configuration overrides and utility commands for working with ROM and graphics data and Game Genie codes. These options add flexibility, particularly for users comfortable with command-line tools, but the project is less compelling for players seeking a complete graphical interface.
Pricing
GoNES is free: its plan costs nothing, and the project is open source under the Apache-2.0 license. There is no paid tier or free-trial decision to weigh. Release downloads and Go source installation give desktop users two installation routes; compiling from source requires Go and OpenGL development libraries.
Platforms
GoNES supports Windows, macOS, Linux, and web browsers. macOS users can install through Homebrew, while release downloads and Go source installation provide other desktop options. Browser play is available through a hosted WebAssembly build. The project also documents installation through Go, making it a natural route for users who prefer building or installing software from source.
Who it's for
GoNES is a good fit for players who want a free emulator with browser access, configurable two-player keyboard controls, save states, or command-line options. It also suits technically minded users who value source installation and per-game configuration. Players with a specific ROM in mind should verify mapper support first; those who want a finished menu interface may prefer another emulator.
Pros and cons
- Pros: Browser, desktop, and terminal launch options let users choose how to start a game.
- Pros: Configurable two-player bindings and save-state controls offer useful play and recovery options.
- Pros: Free, open-source distribution includes release downloads and source installation.
- Cons: The listed mapper support covers 84.34% of official NES games, so some titles may not be supported.
- Cons: Menu options still need to be added, leaving the GUI short of a finished menu-driven experience.
- Cons: Building from source requires Go and OpenGL development libraries, a hurdle for users who want to compile it themselves.
Alternatives
Compare NES emulators if you want to weigh GoNES against other options. NESER is another free option for Linux, macOS, web, and Windows. Nestalgia is free and runs on Linux, macOS, and Windows. HalfNES is free, but has no save states and requires Java 8 or newer. JSNES is a free open-source JavaScript NES emulator library for Linux and web. binjnes is free, with web and build-from-source versions, for Linux, macOS, and web. FCEUX is a free option for NES, Famicom, Famicom Disk System, and Dendy emulation, with Win32 and Qt/SDL ports. Nestopia Undead Edition is free and open source under GPL-2.0 for Linux, macOS, and Windows. NET-NES is free software under the MIT License for Linux, macOS, and Windows.
Verdict
Choose GoNES if you want a free NES emulator with browser access, flexible launching, configurable two-player controls, and save states. Its mapper coverage and unfinished menu options are the clearest reasons to look elsewhere, especially if compatibility with a particular game or a complete graphical interface matters most.
Getting started
- Open the hosted browser instance linked from the project website to play in a browser.
- Download a release build from the release files linked by the project.
- On macOS, install through Homebrew with `brew install gabe565/tap/gones --no-quarantine`.
- Install from source with Go using `go install gabe565.com/gones@latest`.
- Choose a .nes file in the startup file picker, or launch GoNES from a terminal with a ROM file argument.
Questions
Is GoNES free?
Yes. The listed plan is free, and the project identifies it as open source under Apache-2.0.
Which platforms does GoNES support?
The listed platforms are Windows, macOS, Linux, and web browsers.
Can I play GoNES in a browser?
Yes. It runs in a browser through WebAssembly, and the project links to a hosted instance.
How do I load a ROM?
The app opens a file picker at startup for a .nes file. You can also launch it from a terminal with a ROM file argument.
What does GoNES support for controls and save states?
Keyboard controls for Player 1 and Player 2 are configurable. Key bindings include saving and loading states and undoing those actions.
Who makes GoNES?
The project maker is Gabe Cook.

