← Live DemoUse Case 11
📻

Live Radio Stations on the Globe

The world's radio stations — all 26,000+ of them — geolocated and playable from a single globe. Filter by genre or language, click any station, and start listening instantly.

📻

26,000+

Radio stations

🌍

246

Countries

🔊

Live

Streaming audio

🏷

Genre

Filter options

💬

Language

Filter options

▶️

1-click

Play any station

🎵

HTML5

Audio engine

Real-time

Health monitoring

Data Pipeline

From Radio-Browser API metadata to live-streaming globe in six steps.

📻
01

Radio-Browser API Ingestion

All active radio stations are fetched from the Radio-Browser community API, which aggregates 26,000+ internet radio stations from 246 countries. Station records include stream URL, name, country, language, tags, codec, bitrate, and vote count.

Radio-Browser REST API26,000+ stations246 countriesStream metadata
📍
02

Geolocation Resolution

Station coordinates from the API are validated and enriched. Stations with missing or imprecise coordinates are resolved using country centroid fallback, then jittered slightly to prevent exact coordinate stacking for dense countries like Germany and USA.

Coordinate validationCountry centroid fallbackCoordinate jitterDense-country deduplication
🏷
03

Genre / Language Tagging

Free-text genre tags from Radio-Browser are normalized into canonical genre buckets (Pop, Rock, Jazz, Classical, News, Talk, Electronic, World) using a keyword matching dictionary. Language codes are mapped to ISO 639-1 for consistent filtering.

Tag normalizationKeyword genre mappingISO 639-1 languages8 canonical genre buckets
🔊
04

Audio Stream Validation

A periodic server-side health checker performs HEAD requests on stream URLs to detect dead or redirected streams. Stations with failed health checks are flagged with reduced confidence scores and visually de-emphasized on the globe.

HEAD request health checkRedirect resolutionConfidence scoringDead stream flagging
🔵
05

Cluster Density Computation

Station density per country is computed and used to generate heatmap overlay data at the country level. High-density clusters (Germany: 3,000+, USA: 8,000+) are progressively disclosed at zoom levels to avoid overplotting on the globe.

Country density countsProgressive zoom disclosureCluster heatmapAnti-overplot strategy
🌐
06

Globe Rendering

Station dots are rendered on a globe.gl WebGL globe with color coding by genre and size scaling by vote count / listener popularity. Click any station to load the live audio stream via HTML5 Audio API with instant one-click playback.

globe.gl + Three.jsWebGL point layerHTML5 Audio APIOne-click stream playback

Tech Stack

📻

Radio-Browser API

Station data

🌐

globe.gl + Three.js

Globe renderer

🔊

HTML5 Audio API

Audio engine

🖥

Three.js / WebGL

GPU rendering

📐

GeoJSON country shapes

Zone data

💬

ISO 639-1 mapping

Language codes

Next.js App Router

Framework

🔁

HEAD request validator

Stream check

📻 Key Capabilities

  • 26,000+ geolocated radio stations from 246 countries on a single globe

  • One-click live audio streaming via HTML5 Audio API with instant playback

  • Genre filtering across 8 canonical categories: Pop, Rock, Jazz, News, and more

  • Language filtering with ISO 639-1 standard language code mapping

  • Station density heatmap by country for regional radio landscape overview

  • Favorites and recently played history stored in local session state

Explore 26,000+ radio stations on the globe

Every internet radio station in the world, geolocated and playable in one click from a live 3D globe.

Request a Demo