Notebookcheck Logo

CheckMag | RomM is the Plex of self-hosted retro gaming. A beautiful ROM manager that lets you play games through any browser

RomM allows you to host your own ROM collection in a Docker container, enabling you to play your retro collection from almost any browser (Image Source: RomM via Github)
RomM allows you to host your own ROM collection in a Docker container, enabling you to play your retro collection from almost any browser (Image Source: RomM via Github)
RomM is a self-hosted solution for managing and maintaining your ROM collection. With save state support, metadata scraping and RetroAchievements, it will let you play nearly everything up to PSX from a web browser. Here's how to get started.
Views, thoughts, and opinions expressed in the text belong solely to the author.

Being able to play self-hosted games through a browser isn't particularly new. EmulatorJS has been filling this niche for over 10 years, making use of RetroArch's libretto cores to emulate games.

RomM uses EmulatorJS and subsequently RetroArch as the back end for playing games in a browser. However, where it really differentiates itself is with the ease of setup, metadata scraping, ROM management and support for RetroAchievements. You can import thousands of ROMs during the setup process and as long as they are named correctly, screenshots and metadata will automatically be scraped from sources such as Screen Scraper and the IGDB. New games can be uploaded through the web interface, and everything gets organised into platforms, with cover art, screenshots and gameplay videos.

Because RomM is based on EmulatorJS, pretty much every system can be played in a browser. Mobile browsers will give you the ability to use touch screen controls, but it also supports keyboards and game pads, as touch screens certainly aren't the most optimised or fun way to play retro games. 

Although my ROM collection doesn't extend to every system supported by RomM and EmulatorJS, everything up to and including the original Playstation works well. Nintendo and Sega consoles work, as do Neo Geo, TurboGrafx and a decent selection of Arcade ROM's including CPS 1 and 2. Later consoles such as the Dreamcast, GameCube and PS2 can't be emulated in the browser, although these can easily be downloaded into your emulator of choice.

RomM pulls data from various sources into a categorised, searchable and great-looking library with screenshots and video (Image Source: Notebookcheck)
RomM pulls data from various sources into a categorised, searchable and great-looking library with screenshots and video (Image Source: Notebookcheck)

Installing RomM

Installation for RomM is relatively straightforward. You'll need to spin up a Docker container, and the compose file can be found here. You'll also need a corresponding MariaDB container. If you already use MariaDB for another service, such as Immich, you can run separate instances, or use Adminer to create a new database and user under the same instance. There are pre-built templates for all of these on Unraid and TrueNAS. It is also worth creating accounts with Screen Scraper and IGDB, as you'll need to generate a client ID and secret for metadata scraping. 

Although the RomM documentation is an excellent resource for getting everything set up, there were a couple of areas that had me scratching my head for a while.

You will need to create a RomM_AUTH_SECRET_KEY, which can be generated through a terminal by typing "openssl rand -hex 32". Paste the output into the corresponding section of the compose file.

Later versions of RomM also require a config.yml file. There is an example one which works on the RomM github page, and this needs to be located in the "config" folder specified in the container compose file.

Once you have managed to get the containers up and running, you should be greeted with an account creation screen that will let you get into the system. There are a couple of other things that may need to be done before you run a scan on your ROM library.

It is worth checking to make sure that all your systems have been mapped to the correct folders before running a scan (Image Source: Notebookcheck)
It is worth checking to make sure that all your systems have been mapped to the correct folders before running a scan (Image Source: Notebookcheck)

Setting up RomM

Once you are in RomM, and before you run a scan on your library of games, it is worth going to your account and choosing library management to ensure that all the platforms are mapped to the correct folder on your NAS. Before I did this, RomM failed to scrape any metadata for the games despite importing them correctly. These can be mapped in the config.yml file, but if you used the template from Github you will likely need to do this in the library management section.

It is also worth checking that the folder structure you are using on your NAS meets the requirements set out in the documentation. ROM and bios files should be stored in separate directories, with each system having a correctly named folder of its own within the ROM and bios folders. Again, the documentation is your best bet here.

Assuming everything is set up correctly, running a scan will start to populate your library. In my case, metadata was matched to around 90% of the files, and most of the mismatches were due to incorrect file naming. It was pretty straightforward to manually match missing titles thanks to the built-in search function.

When emulating arcade in the browser, you can select whether to use MAME 2003, Final Burn Neo and Final Burn Alpha 1 or 2 for Arcade, Neo Geo and CPS. Final Burn Neo seemed to be the most consistent in terms of loading games. NES, SNES, Genisis, Game Boy and other consoles all worked flawlessly. RomM will let you upload bios files against a particular platform, which you can choose when you emulate the game. However, this did not work for the Neo Geo. The only way to get this platform working in the browser was to put the Neo Geo bios files into every ROM. It worked, but may not be practical for everybody.

Save states work across browsers as long as you are logged into RomM using the same account, enabling you to play some of a game on one device and switch to another fairly seamlessly.

Fatal Fury 3 on the Neo Geo running in a browser. Neo Geo required a bit of tweaking, but works well (Image Source: Notebookcheck)
Fatal Fury 3 on the Neo Geo running in a browser. Neo Geo required a bit of tweaking, but works well (Image Source: Notebookcheck)

RomM also supports custom operating systems for retro handhelds. If you have a handheld that can run MustardOS, such as the Anbernic RG35XX H (available on Amazon) you can use MuOS to connect to your RomM instance, and fetch games wirelessly.

With regular updates, the developers are promising a console mode, allowing you to use an interface designed for a big screen TV, as well as baked in PSP and DOS emulation, which should work straight out of the box. While there are alternatives to RomM, including RetroAssembly, which offers a similar feature set, there is still a great deal to explore with RomM and a great deal more promised for the future.

static version load dynamic
Loading Comments
Comment on this article
Please share our article, every link counts!
Mail Logo
> Expert Reviews and News on Laptops, Smartphones and Tech Innovations > News > News Archive > Newsarchive 2025 09 > RomM is the Plex of self-hosted retro gaming. A beautiful ROM manager that lets you play games through any browser
David Devey, 2025-09- 8 (Update: 2025-09- 8)