Explore the world's open media from one portable Windows app. World Media brings together internet radio, live television, podcasts, public-domain films, space media, cultural archives, audiobooks, conference recordings, PeerTube, and independent Owncast streams from eleven public sources.
Search everything, save favorites, browse a live-channel Grid, spin the Tuner, discover something unexpected, shape playback with a ten-band EQ, download finite media, and optionally record live streams. No account, subscription, API key, or telemetry.
Download the latest EXE · Full documentation · Release history
| Tune live radio and TV | Discover something unexpected |
|---|---|
For the classic one-file Windows app, download and run:
WorldMediaWindows.exe
The executable is unsigned and some heuristic antivirus products may require the file or its containing folder to be explicitly allowed. The alternative signed-runtime portable package is:
WorldMediaWindows-0.1.2-portable.zip
For that package, extract the entire archive, keep its files together, and run
WorldMediaWindows.exe inside the WorldMediaWindows folder. Either form starts
a local server on 127.0.0.1, opens a native WebView2
window, and stores its cache, favorites profile, settings, and logs beside the
launcher under:
WorldMediaWindows-data\
An existing %LOCALAPPDATA%\WorldMediaWindows\webview2_data profile is copied
there once to preserve favorites; the legacy source is not deleted automatically.
The classic single EXE uses the Windows temporary directory only for its
transient startup extraction and cleans its _MEI... directory on normal
shutdown. Persistent app data always remains beside the EXE.
Users do not need Python, Node, Rust, Git, Docker, or WSL.
The full end-to-end user and developer wiki is in docs/wiki/README.md, with a short index at docs/WIKI.md.
Five tabs across the top: Library, Tuner, Grid, Discovery, and About.
Library - search and browse everything. Left sidebar groups results by type and source: Radio Browser, iptv-org, Internet Archive, NASA, Wikimedia Commons, LibriVox, media.ccc.de/C3VOC, Library of Congress, gPodder Podcasts, PeerTube, and Owncast.
Tuner - a radio-style dial for live radio and live TV. Drag the dial or use arrow keys; each station gets a cosmetic frequency.
Library detail panel - click any item to see metadata, license, source, and play it.
Grid - TV-guide-style tiles for live radio and live TV.
Discovery - random open media from the enabled sources.
Library discovery is intentionally bounded. It fetches fairly from every enabled source, pauses when roughly 660 not-yet-viewed items are already ready, and resumes as you scroll. The source row says more available, retrying, rate limited, stale, or complete so a protective pause is not mistaken for a provider failure. Check again restarts completed finite catalogs and immediately retries eligible sources.
Settings includes System, Dark · Teal, Light, Midnight · Blue, Forest · Green, Ember · Orange, and Amethyst · Violet. Changes apply immediately and persist across launches. System follows the Windows light/dark preference.
The native title bar follows the selected theme too. Windows 11 supports the exact palette color; Windows 10 uses the matching dark or light caption style.
Video plays in a movable overlay with fullscreen support.
- Finite originals expose Download and are written atomically to the
downloadsfolder besideWorldMediaWindows.exe. - Live radio and TV expose Record. Audio is finalized as MP3; video is finalized as H.264/AAC MP4. Recording reads the live source independently, so pausing, muting, changing volume, or adjusting EQ does not pause or alter the saved file. Stop recording performs finalization before publishing the completed filename.
- Settings provides Compact (96 kbps/480p), Balanced (160 kbps/720p), and High (256 kbps/1080p) profiles. Source resolution is never upscaled.
- The ten-band EQ and preamp apply immediately. The current curve is the global default; a favorite automatically keeps its own curve. There is no Apply or Save button.
Only download or record media when its source and your local law permit it. World Media does not remove DRM or grant rights to third-party broadcasts.
Every item World Media surfaces comes from one of eleven public archives or directories. The app does not host content and does not require API keys.
| Source | What it provides | Home | Licensing |
|---|---|---|---|
| Radio Browser | Internet radio stations | radio-browser.info |
Stations retain their own broadcast rights |
| iptv-org | Free-to-air IPTV channels | iptv-org.github.io |
Stream operators retain their own rights |
| Internet Archive | Films, recordings, books, and other media | archive.org |
Per item, often public domain or Creative Commons |
| NASA Image and Video Library | Mission photos, videos, and audio | images.nasa.gov |
Public domain for U.S. government work |
| Wikimedia Commons | Free-licensed media files | commons.wikimedia.org |
CC-BY-SA or public domain per file |
| LibriVox | Public-domain audiobooks | librivox.org |
Public domain |
| media.ccc.de | Technical conference recordings and current C3VOC streams | media.ccc.de |
Per recording or event |
| Library of Congress | U.S. cultural-heritage audio and film/video | loc.gov |
Per item and collection |
| gPodder | Open podcast directory resolved through publisher feeds | gpodder.net |
Publisher terms per episode |
| PeerTube | Federated on-demand and live video | Independent instances | Per video and instance |
| Owncast | Independent self-hosted live video | Independent servers | Broadcaster terms |
- No accounts. Nothing to sign up for.
- No telemetry. The app does not collect usage data.
- No API keys. All eleven sources use public anonymous endpoints.
- Localhost only. The bundled Python server binds to
127.0.0.1. - Two bounded same-origin relays. Catalog metadata uses an HTTPS-only, DNS-pinned allowlist proxy. Playback and capture use opaque expiring relay IDs, including rewritten HLS and DASH child resources. Upstream URLs and required playback headers are not exposed through control routes or logs.
- No Linux child. This build has no WSL distro, no rootfs image, no Docker image, and no setup script.
Explicit/NSFW content is off by default. It can be enabled only with the Show explicit/NSFW content switch in Settings. Marked items are then shown with a visible label; enabling the switch does not weaken URL, redirect, private-network, schema, or media-safety checks. Turning it off hides marked items everywhere while retaining saved favorites as nonrevealing placeholders.
Public catalogs are not equally reliable. Library of Congress may return a CAPTCHA or 429 even below its published limit; the app retains the cursor and backs off instead of reporting a false zero. Podcast feeds and independent PeerTube/Owncast servers may be dead, slow, or malformed; one failure is isolated from the other sources. C3VOC and Owncast are live snapshots that refresh, and an empty C3VOC snapshot between events is valid. A provider marked complete has reached the end of the current finite catalog; live snapshots continue on their own refresh schedule.
The exact public endpoints, cache/refresh rules, and source-specific limits are documented in docs/PROVIDERS.md.
- If discovery says it is paused, scroll toward the bottom of the current results; fetching resumes automatically. Use Load more for an immediate user-priority request.
- Retrying, rate limited, or stale means the cursor and last verified data were preserved. Retry now is safe and does not create duplicate work.
- A playable item can still lack Download when the provider restricts it or exposes only a stream. Live media uses Record after a capable FFmpeg pair is detected or installed from Settings.
- An empty or broken independent stream is an upstream condition. Try next moves on without deleting the item or favorite.
- Runtime diagnostics are under
WorldMediaWindows-data\logs\beside the launcher and do not contain upstream media URLs or authentication secrets.
- Windows 10 22H2 or Windows 11 (64-bit)
- Microsoft Edge WebView2 Runtime
- Internet access for upstream catalogs and streams
npm install
npm test
npm run build
python -m pip install --cache-dir .\build\local-cache\pip -r requirements-build.txt
python .\build_single_exe.py --skip-frontend
python .\build_windows.py --skip-frontendThe output is:
dist\WorldMediaWindows.exe
dist\WorldMediaWindows\WorldMediaWindows.exe
dist\WorldMediaWindows-0.1.2-portable.zip
See docs/BUILD_WINDOWS.md for the full build and smoke test flow.
MIT. See LICENSE. Content from the listed sources retains its original license.
MPEG-DASH playback uses dash.js 5.2.0, bundled into the frontend under its BSD 3-Clause license. DRM-protected MPDs are rejected with an explicit unsupported response; World Media does not request licenses or accept browser-provided license endpoints.
HLS playback uses vendored
hls.js 1.5.13 under the
Apache License 2.0.
The packaged app exposes its complete third-party notice at
/THIRD_PARTY_NOTICES.txt on its localhost runtime.
World Media does not bundle FFmpeg in its EXE. Recording features can use an
existing capable ffmpeg/ffprobe pair or, after explicit confirmation, install
the exact ffmpeg-n8.1-latest-win64-gpl-8.1.zip asset from
BtbN/FFmpeg-Builds. The managed archive
is downloaded without administrator access, checked against GitHub's SHA-256
digest, inspected before extraction, capability-probed in staging, and only then
selected atomically. Its license files, install manifest, and SOURCE.txt are
retained beside the managed binaries. FFmpeg licensing details are available at
ffmpeg.org/legal.html.
The normal unit suite uses small local fixtures. The full current-provider smoke is intentionally opt-in because it downloads more than 160 MB:
$env:WORLDMEDIA_FFMPEG_INTEGRATION = "1"
python .\tests_python\ffmpeg_real_integration.py
Remove-Item Env:WORLDMEDIA_FFMPEG_INTEGRATION