Free tool
Radio stream URL checker
A radio stream URL fails to play for a small number of reasons: it points at a web page instead of audio, it is a .pls or .m3u playlist that has to be resolved to the real stream first, it redirects somewhere unreachable, or the server is simply offline. Paste your URL below and this free checker fetches it live, follows redirects, resolves playlists, and tells you the resolved stream URL, the audio codec and bitrate, and — if it fails — exactly which of those reasons applied.
Check a stream
Why a radio stream will not play
Almost every broken stream falls into one of four categories. Working out which one you have is most of the fix.
The URL returns a web page, not audio
This is by far the most common. The address is the station's listen page, which a browser renders happily and a media player rejects, because it expects a content type such as audio/mpeg and receives text/html instead. The fix is to find the real stream address: look for a “listen” link that downloads a small file rather than opening a page, or view the page source and search for :8000, /stream or /live.
The link is a playlist, not a stream
A .pls or .m3u file is a few lines of text listing the real addresses. Most players resolve them automatically, but embedded players, smart speakers and some car head units do not, and simply fail with no explanation. The checker above resolves one level and hands you the direct address to use instead. If the resolved address is itself a playlist, paste it back in to go one level deeper.
Redirects and mixed content
Stream URLs often redirect to whichever server has capacity, which is fine until a hop lands somewhere unreachable or loops. A separate and very common problem is mixed content: a page served over HTTPS cannot play a stream served over plain HTTP, and the browser blocks it silently with only a console warning. If a stream works when you open it directly but not when embedded, that is almost always why — you need an HTTPS stream address.
HLS and m3u8 manifests
An .m3u8 is an HLS manifest: a list of short segments a player fetches in sequence, rather than one continuous connection. It is well supported on Apple platforms and in most modern browsers, but many older Icecast-era players cannot read it at all. A valid manifest starts with #EXTM3U and contains either #EXT-X-STREAM-INF or #EXTINF. Because a manifest is not a continuous stream, no bitrate is reported for one.
What this checker actually does
It makes a real request from our server, not from your browser, so the result reflects whether the stream is reachable from the public internet rather than from your network. It requests a single byte with a Range header rather than pulling audio, follows up to five redirects, and reads the response headers to identify the codec and any advertised bitrate. For a playlist it fetches the file, caps it at 256 KB, and extracts the first usable address.
It will not connect to private, loopback or link-local addresses, and it refuses URLs carrying a username or password. No part of the stream's response body is ever shown back to you, and nothing is played or proxied — the checker reports, it does not stream.
Common questions
- Why does my stream URL return an HTML page?
- Because the link points at the station's listen page rather than the audio itself. Browsers happily render that page, but a media player expects an audio content type and gives up. Look on the page for a link that downloads a small .pls or .m3u file, or check the page source for a URL ending in /stream, /live, or a port such as :8000.
- What is a .pls file?
- A tiny plain-text playlist that points at one or more real stream URLs. Icecast and Shoutcast servers publish them because a single file can list several fallback servers. It is not audio itself — a player has to read it first and then connect to the address inside, which is what this checker does for you.
- How do I get a direct stream URL from a playlist?
- Paste the .pls or .m3u link into the checker above. It fetches the playlist, reads the first usable entry, and shows the resolved address, which you can copy. You can also open the file in any text editor and look for the File1= line in a .pls, or the first line starting with http in an .m3u. The checker resolves one level: if the entry inside is itself a playlist, the result says so rather than claiming a plain success, and you can paste the resolved address back in to go one level deeper.
- Does this work with HLS and .m3u8?
- Yes. An .m3u8 manifest is validated by checking it starts with #EXTM3U and contains either #EXT-X-STREAM-INF or #EXTINF, and the result marks it as HLS. Note that a manifest is a list of segments rather than a continuous stream, so no bitrate is reported for it.
- What if my stream is on a local network?
- It cannot be checked from here. The checker only connects to public internet addresses and refuses private, loopback and link-local ones — that restriction is what stops the tool being used to probe machines it should not reach. Test a local stream with VLC on a machine that can already reach it.
- Do you store the URLs I check?
- The URL is sent to our server so it can make the request, and nothing stores it: it is not written to any database, and our code never logs it. It exists only for the seconds the check takes. It is never sent to analytics either — the only things recorded there are whether the check succeeded, the detected codec, and a coarse category for why it failed.
Listening rather than debugging
Gospel Worship Voices carries curated gospel and Christian radio alongside worship music, daily scripture and prayer — with the streams already checked, and a sleep timer for the evening.