Docs EKO for Mac GitHub
OPEN SOURCE, MIT

A web audio engine you
build real players with.

True gapless playback, crossfade, loudness normalization and ReplayGain tags. 6.6 kB gzipped, no runtime dependencies, and no framework of its own.

Read the docs GitHub
$ npm install @rpxl/eko-web
NOW PLAYING
Nothing loaded
Pick a track to hear it
SOURCENo track
ENGINEWeb Audio, 32-bit float
OUTPUTSystem mixer
MIXER
QUEUENo queue
GAINNo track
0:00
0:00
VOL
GaplessCrossfadeGap
A real gapless and crossfade scheduler, loudness matching from ReplayGain tags, and a live spectrum, all in the browser. Whatever you feed it is decoded and resampled to your system rate, so this is not bit-perfect and does not pretend to be.
EKO Web on GitHub

Switch Gapless, Crossfade and Gap to hear what happens between tracks. The GAIN readout says whether the loudness match came from a ReplayGain tag or from measuring the audio.

Gapless that is actually gapless

The next track is decoded and scheduled to the sample while the current one is still playing. Albums, live sets and DJ mixes run without a seam, because the boundary is scheduled rather than reacted to.

Loudness that does not jump

Reads a track's ReplayGain tag when it has one, and measures the decoded audio when it does not. The single most audible improvement you can make to a playlist.

Framework free, with bindings

The core knows nothing about React or Vue. Both bindings ship, both are optional, and neither is needed. Use it with whatever you already have, or with nothing.

Honest about the ceiling

Browsers decode and resample to the output device's rate, so this is not bit-perfect and never claims to be. It improves the experience, not the fidelity. For bit-perfect you need a native app, which is what EKO for Mac is.