Chris Collins

Tools · retro

Atari ST emulator

An Atari ST or STE in your browser — Hatari compiled to WebAssembly, booting the free EmuTOS. Put disk images in A: and B:, programs on an emulated hard disk C:, autostart a program, play with keys or a gamepad, save states, and convert MSA ⇄ ST images.

Added · updated 13 October 2026

Works with

How to use it

Press Power on. The emulator is big — about 2.9 MB to download (24 MB once unpacked; the browser caches it) — and boots EmuTOS to the GEM desktop. Click the screen to give the ST the keyboard. Capture mouse locks the pointer to the ST screen; Esc gives it back.

Disks and programs

Drop a file on the screen or the Floppies and programs box:

  • Disk images (.ST, .MSA, .STX, .DIM, or a .ZIP holding one) go into drive A:. Press Reset to boot from it, or open A: on the desktop. The B: button in the recent list uses drive B.

  • Programs (.PRG, .TOS, .TTP, .APP) and any other file go onto drive C:, a folder Hatari presents to TOS as a hard disk (GEMDOS emulation). Open C: on the desktop and double-click. Run at start-up restarts the ST and launches the program automatically.

Everything you open is kept in this browser (IndexedDB) and comes back next time: the disks in A: and B: and the files on C:. Files a program writes to C: stay in the page until you press Keep C: in this browser or download them.

The Disk image converter turns MSA images into raw ST images and back, without starting the emulator.

Machine

Choose an ST (EmuTOS 192 KB build) or STE (256 KB build, with the STE’s blitter, DMA sound and 4096 colours), the memory size, and a colour or monochrome (SM124, 640×400) monitor, then Apply and restart.

Joystick: with Arrows + Space, the arrow keys and Space are the joystick in port 1 (the mouse stays in port 0); Gamepad uses the first connected controller instead.

Hatari’s own menu is on F12: it can swap disks, change almost any setting, and shows what the emulated machine is doing. The browser’s Cmd shortcuts are kept away from the emulator.

Firmware

EmuTOS is a free (GPL) operating system for Atari ST-family machines, compatible with most GEM software and many games. Programs that depend on the exact internals of Atari’s TOS need the original: if you have a TOS image, Load my TOS image… stores it in this browser, and My TOS boots it.

Save state writes a Hatari memory snapshot of the whole machine (.sav); Quick save keeps one in the browser.

Sharing a set-up

Share link copies a URL that opens the emulator configured the same way — never disks, programs or TOS images. By hand: machine (st, ste), ram (512, 1024, 2048, 4096), monitor (rgb, mono) and joystick (keys, real, none) — for example ?machine=ste&ram=4096&monitor=mono.

Software to load

The Software panel has two parts:

  • Library — programs this site can share: open-source and public-domain releases, freeware whose author allows it to be passed on, and this site’s own examples. Each shows its licence, why it may be shared, and where it came from; Copy link gives a link (?lib=<id>) that opens this page and loads it.

  • Open URL / archive.org — paste a link to a file, or an archive.org item (its URL or identifier). For an archive.org item the panel lists the files the ST can open, with the item’s licence as the uploader set it. Sites that allow it load straight into the emulator; archive.org doesn’t let other sites read its files, so for those you get a download link and drop the file onto the emulator.

There are no links to "complete ROM set" archives: most are copies of commercial software that is still under copyright, whatever the upload’s licence field says. Files you own you can always load — drop them onto the emulator or paste a link.

How it’s built

Hatari (GPL) built unmodified with its own Emscripten support — SDL2 for video, sound, keyboard and gamepads, and ASYNCIFY so its main loop can yield to the browser every frame (which is why the module is 24 MB). The build script, licences and source links are under /wasm/hatari/ and in this site’s repository (tools/wasm/hatari/).

Runs entirely in your browser; nothing you type leaves this page.