# EmulatorJS

EmulatorJS is a self-hosted, browser-based retro game emulator for home servers. It is open source and self-hosted, installable on Docker Hub and Unraid.

Canonical page: https://ourlocalhost.com/app/899/emulatorjs

## Description

EmulatorJS is a self-hosted, browser-based retro game emulator for home servers. It scans your ROMs and artwork, builds a static frontend, and serves retro console games through any modern web browser on nearly any device — no client software required. The LinuxServer.io Docker container is archived and no longer receives updates.

## Platform availability

Available on 2 of 9 platforms: Unraid, ZimaOS.

## Health score

26/100 (Low), based on 3 of 4 factors.
- Maintained: 0 (GitHub repository is archived)
- Popular: 54 (486 GitHub stars)
- Easy to install: 45 (2 install platforms, install notes, Docker image)

## Links

- Docker Hub: https://hub.docker.com/r/linuxserver/emulatorjs
- Unraid: https://ca.unraid.net/apps/emulatorjs-0k6cnye04nrbn6?q=emulatorjs
- Official website: https://www.emulatorjs.com
- GitHub: https://github.com/linuxserver/emulatorjs

## Common questions

### Do I need to keep the EmulatorJS helper backend running after setup?

No. After the backend scans ROMs and ingests art assets, the generated static frontend can be served by a basic webserver without the backend helper.

### Which ports should I expose for the Docker container?

Expose port 3000 for the backend where you add ROMs and configure menus. The static frontend is served on port 80, where you play the games.

### Why can EmulatorJS list a ROM but not run it?

You need to install the console core package for that console with npm. Without the correct core, EmulatorJS can see the game file but cannot run it.

### Can save data be used on another device?

Save data can be uploaded to the host server. On another device, select Pull From Server to download the save file.

---
Source: Our Local Host (https://ourlocalhost.com/app/899/emulatorjs), the self-hosted and open-source app directory.
