A community-driven collection of verified Indian online radio stations with a progressive web app, Chromecast support, and automatically generated playlists for VLC, Kodi, Home Assistant, and other compatible players.
PWA: https://kedharnadh.github.io/OpenRadio-IN/
- Indian Radio Stations (AIR, FM, News, Devotional, Classical, Internet Radio)
- Progressive Web App (installable, offline-capable)
- Google Cast / Chromecast support
- HLS proxy worker for AIR streams on Cast devices
- Search, filter, and favorites
- Recently played stations
- Now-playing view with station logo and metadata
- Volume control with mute toggle
- Sleep timer
- Station sharing (Web Share API)
- Dark/light theme toggle
- Audio equalizer (bass/treble)
- Keyboard shortcuts (Space = play/pause, arrows = prev/next)
- Automatically generated playlists
- JSON-based station database
- Python build system
- GitHub Actions automation
OpenRadio-IN playlists work with:
- VLC Media Player
- Kodi
- Sparkle TV
- TiviMate
- OTT Navigator
- IPTV Pro
- Home Assistant
- Jellyfin
- Emby
- Plex (via IPTV plugins)
OpenRadio-IN
│
├── database/
│ └── stations.json
│
├── build/
│ ├── generate_playlists.py
│ ├── validate_database.py
│ ├── check_streams.py
│ └── generate_stats.py
│
├── playlists/
│ ├── all.m3u
│ ├── telugu.m3u
│ ├── air.m3u
│ └── ...
│
├── website/
│ ├── index.html
│ ├── assets/js/app.js
│ ├── assets/css/style.css
│ ├── hls-proxy-worker.js
│ ├── cast-receiver.html
│ ├── manifest.webmanifest
│ ├── sw.js
│ └── icons/
│
├── docs/
│
└── .github/
| Playlist | Description |
|---|---|
| all.m3u | Every station |
| telugu.m3u | Telugu stations |
| air.m3u | All India Radio stations |
| fm.m3u | FM stations |
| devotional.m3u | Devotional stations |
| news.m3u | News stations |
More playlists will be added as the database grows.
Every station is stored in database/stations.json.
{
"id": "air_tirupati",
"name": "AIR Tirupati",
"language": "Telugu",
"country": "India",
"categories": ["AIR", "News"],
"logo": "https://example.com/logo.png",
"streams": [
{
"url": "https://example.com/playlist.m3u8",
"codec": "HLS",
"priority": 1
}
]
}Generate all playlists:
python build/generate_playlists.pyValidate the database:
python build/validate_database.pyGenerate statistics:
python build/generate_stats.pyThe repository includes an installable, offline-capable radio directory in website/. It lists every station, filters by language or category, and supports instant search and browser playback.
The GitHub Actions workflow at .github/workflows/deploy-pages.yml deploys it to GitHub Pages whenever main is pushed. In the repository settings, set Pages -> Build and deployment -> Source to GitHub Actions.
The workflow copies database/stations.json into the published site, so station updates are included automatically in every deployment.
- Installable (manifest + service worker)
- Offline app shell and station list caching
- Google Cast / Chromecast support for all stations
- HLS proxy worker for AIR streams on Cast devices
- Dark and light themes
- Volume control with mute toggle
- Sleep timer (15/30/60 min)
- Audio equalizer (bass/treble shelving filters)
- Station sharing via Web Share API
- Keyboard shortcuts: Space = play/pause, Arrow keys = prev/next
- Recently played stations tracking
AIR stations use HLS streams from radio.wavespb.com, which blocks Google Cast devices. The proxy worker at website/hls-proxy-worker.js routes these streams through Cloudflare Workers so they play correctly on Cast devices.
Deploy with:
cd website
npx wrangler deployContributions are welcome! You can help by:
- Adding new radio stations
- Updating broken streams
- Improving metadata
- Reporting issues
- Improving documentation
Please ensure every submitted stream is publicly accessible and legal to redistribute.
- Chromecast support with HLS proxy worker
- Now-playing view with station artwork
- Volume control, mute toggle
- Dark/light theme toggle
- Sleep timer
- Audio equalizer (bass/treble)
- Station sharing via Web Share API
- Keyboard shortcuts
- Recently played stations
- PNG icons for PWA install
- Offline station data caching via service worker
- Tamil, Kannada, Malayalam, Hindi stations
- Searchable website
- Embedded web player
- Stream validation
- Statistics generation
MIT License
Thanks to:
- All India Radio (Akashvani)
- Public internet radio broadcasters
- Open source contributors
- Everyone who helps keep the station database up to date
If you find OpenRadio-IN useful:
- Star this repository
- Report broken streams
- Submit new stations
- Contribute improvements
Every contribution helps make OpenRadio-IN a better resource for everyone.