Dial Hopping
Live classical, folk and brass-band radio from around the world on one page, with a Braun-style dial in the header. Tap a station and it plays, tap another and it hops, and the music never stops while you browse.
Visit site (opens in a new tab)Started October 2026
Dial Hopping puts 67 radio stations from six regions of the world on a single page: Europe, North America, Latin America, Africa and the Middle East, Asia, and Oceania. Each one has a preset number and a small genre label in plain type. There’s no sign-up and nothing to set up, so you tap a station and it plays. Streams come straight from each station’s own server, and nothing is recorded, proxied or re-broadcast.
The dial
The header has a circular dial with a red needle that swings to whichever station is playing, and the numbered ticks follow the sections of the list. It’s the thing I’d point to first, since it makes a long list of stations feel like a radio.
Keeping the music going
The site is mostly static HTML, with one React island that holds the <audio> element. That island mounts once for the life of the page, so switching stations, changing the theme or opening a panel never cuts the music. MP3 and AAC go straight to the browser, and HLS streams use hls.js where the browser doesn’t play them natively.
Internet radio streams fail a lot, so the player plans for it:
- A stream that never starts falls through to the station’s next URL.
- A stream that drops mid-play is retried with backoff.
- If nothing works, you get a clear message rather than a silent spinner.
What’s playing
Many stations send the track title inside the audio stream, which browsers can’t read. A small Netlify function opens the stream, reads just far enough to find the title, and closes it again. For a handful of stations, such as BBC Radio 3, the title comes from the broadcaster’s own data instead. About half the stations end up with titles, and those show in the player bar and on the lock screen.
From there, a Recently played panel keeps the last 25 songs you heard, with links to search for each one on YouTube, Apple Music and Spotify. You can star stations and songs, and download your lists as JSON to turn them into a playlist elsewhere. All of that stays in your browser unless you choose to publish your favorite songs, which is off by default.
Made for the phone
Dial Hopping can be added to an iPhone Home Screen, and it has lock screen controls that also work from AirPods and CarPlay. On a computer, there are keyboard shortcuts for play, station, volume and mute. It has light and dark themes, and a Playwright and axe-core suite covers accessibility and keyboard behavior.
The look of the site later became its own design kit, Swiss Minimal.
Browse






