GAME BOY ADVANCE EMULATOR
switch-gba
switch-gba is a browser-based Game Boy Advance emulator packaged to run as a web service (Docker image) and intended for playback through the Nintendo Switch web browser. It adapts an existing crowdsourced GBA emulator for Switch-friendly controls and a minimal UI.

WHY IT MATTERS
Why this project exists
Author goal was to experiment with running a GBA emulator inside the Nintendo Switch web browser so unmodified Switch consoles can play GBA ROMs via the device's built-in browser. It is a hobby project and presented as an experiment rather than a commercial product.
BEST FOR
What it's best for
Running Game Boy Advance ROMs from a small self-hosted web service and using hardware buttons on a Switch via the browser Gamepad API. Also useful as a lightweight browser-fronted GBA emulator for testing or demonstration on any platform that can host the Docker image and serve the web UI.
The people behind switch-gba
History & status
The repository documents several releases (1.0.0 → 1.0.2) and 42 commits in master; README states the project is a modified, Switch-tailored fork of crowdsourced-gba and that the author treats it as a hobby experiment and does not guarantee maintenance or support. The README lists implemented features such as save states, Gamepad API support, turbo mode, and custom button layouts. The repository shows no packaged GitHub Releases objects in the releases page; the README references prebuilt Docker images published under a different DockerHub account (bfriedrichs). The project is active enough to have recent commits in the repository but the author explicitly disclaims continuing support.
What switch-gba supports
- Game Boy Advance (runs .gba ROM images)
- Web browser (designed for Nintendo Switch browser)
- Docker (image provided by upstream/related project for hosting the emulator service)
- Platform hosting Docker (Linux, macOS, Windows — for serving the web UI)
Download and availability
OFFICIAL DOWNLOADS
Get switch-gba
Source is available from the project's GitHub repository. The repository README references prebuilt Docker images (bfriedrichs/switch-gba tags) but the repository itself contains no GitHub Release assets. Clone the repo or build the provided Dockerfile; alternatively use the upstream Docker image names noted in the README.
Get switch-gba ↗DOCUMENTATION
Official documentation
Read the official configuration, compatibility, and troubleshooting material before changing advanced options.
Read official documentation ↗switch-gba setup guide
Setup note: Practical setup requires hosting the emulator web service (Docker recommended), preparing a roms folder with your own GBA ROM files (.gba), and accessing the web UI from a browser. The README intentionally does not document steps for enabling the Switch browser access method; if you plan to use a Switch, you must enable and access its browser by your own means and follow all applicable device policies.
- 1) Inspect the repository: Review the project's README and code on GitHub to confirm current state and any changes. The README lists configuration files, a Dockerfile, run scripts, and the layout configuration in src/backend/layout.json.
- 2) Prepare ROMs: Create a local folder named roms and place only GBA ROM files you legally own into it. The project does not provide games or BIOS; the README explicitly states no ROMs are distributed with the project.
- 3) Use a Docker image (recommended): The README shows usage examples running a Docker image. Example (as documented in README): – docker run -d -v $(pwd)/roms:/home/roms/ –name switch-gba -p 8888:8888 bfriedrichs/switch-gba:release-latest This mounts your roms folder into the container and exposes port 8888. The README attributes Docker images to bfriedrichs. The project repository includes a Dockerfile if you prefer to build locally.
- 4) Build and run from source (alternative): If you prefer to run from source or to build your own image, clone the repository and follow the included Dockerfile and run.sh scripts. The repository contains requirements.txt and scripts to help build/run locally; adapt them to your host OS and Docker environment.
- 5) Access the web UI: Open a web browser and visit the hosting machine's IP and port (http://HOST:8888 by default) to reach the emulator UI. On a Switch you would open the Switch browser and point it to the host address after making the Switch browser accessible; the README notes the author will not document the Switch browser activation steps.
- 6) Configure controls and options: During ROM selection click the settings (cogs) to open options and change button layouts. Custom button layouts are stored in src/backend/layout.json and a default backup is kept at src/backend/layout.backup.json.
- 7) Save states, turbo, and limitations: The emulator supports save states and a turbo mode (2–20x) per the README. The author notes audio may be unavailable in the Switch browser due to missing exposed audio APIs; performance adjustments and 'turbo' were implemented to keep the output framerate manageable on Switch.
Software reminder: This project requires you to provide your own GBA ROM files and any required firmware/BIOS. The repository README states no ROMs are distributed. The author also disclaims support and maintenance.
Sources and further reading
Detailed guides and tutorials
Explore step-by-step guides for switch-gba as they are published.
Retro Replay Retro Gaming History, Reviews & Emulation