Skip to content

The Player & Formats ​

The player bar is pinned to the bottom of every page and keeps playing while you browse. It is driven by real emulator cores compiled to WebAssembly — the audio never leaves your machine; only the files themselves are streamed from your instance.

Transport controls ​

ControlWhat it does
Play / pauseStart or pause the current track
Previous / nextStep through the queue
Seek barClick or drag to jump anywhere in the track
VolumeDrag to set the level
ShuffleToggle shuffled playback (button lights up when on)

The now-playing area shows the current track with its game and cover art.

System media keys ​

Trackify registers with the browser's Media Session API: your keyboard's media keys, lock screen, and OS media controls all control playback, and show the current track's title and cover art.

How backends are selected ​

The player picks a backend by file extension and lazy-loads it: only the format runtime you actually open is fetched and initialized. The first track of a new format takes a moment (WASM download + compilation); after that, tracks of the same format start instantly.

Supported formats ​

SystemExtensionsBackend core
PlayStation · PSF.psf .minipsf .psf2 .minipsf2 .psflibHighly Experimental
Super Nintendo · SPC.spc .rsnGame Music Emu
NES, MSX & friends.nsf .bgm .opx .sng .kssNEZplug++
Nintendo 64 · USF.usf .miniusf .usflibLazyUSF2
Chip music logs · VGM.vgm .vgz .cmf .droVGMPlay
PlayStation CD-XA.xaNative JS decoder
Streamed audio.genh .mp3Native JS decoders

Sidecar files (.psflib, .usflib, and similar resources) are part of the game's file bundle and are resolved automatically when a track needs them — that is why Adding Music asks you to upload whole game folders rather than single files.

N64 tracks are heavy

The N64 core runs without dynamic recompilation and uses more memory than the others. On slower machines, N64 playback may need a moment more to start. See Troubleshooting.

Trackify user documentation — runs Highly Experimental, Game Music Emu, NEZplug++, LazyUSF2 & VGMPlay in WebAssembly, plus PocketBase