Guide
Setting up track titles for web radio: Icecast, SHOUTcast and your own sources
If the lock screen and the car show only the station name, the cause is almost always the source of the title data. This guide shows where a title can come from, how to check each route yourself in a few minutes, and which errors are the most common.
- A title can reach the player by three routes: in the stream itself (ICY), through the status page of the streaming server, or from a file of the station’s own.
- Each route can be checked with a command or a request in the browser.
- Common errors: only the slogan instead of the title, a number in front of the artist, broken accented characters, and a file the browser is not allowed to read.
- If the stream itself shows no title, that does not tell you whether the station publishes it elsewhere.
1. Where does the title come from?
A player does not know the current title on its own. It gets it by one of three routes:
- In the stream (ICY metadata). The player requests the stream with the header
Icy-MetaData: 1. The server answers withicy-metaintand inserts a text block of the formStreamTitle='Artist - Title';into the audio data at fixed intervals. This is the route car radios and most apps use. - Through the server’s status page. Icecast and SHOUTcast also publish the current title as a page or JSON file.
- From a file of the station’s own. Many stations maintain a file or interface with the current title for their website or app, independent of the stream.
These routes do not have to deliver the same thing. A station can send only its slogan in the stream and show the real title on its website. That is neither wrong nor unusual, but it explains why a player that uses only one route comes up empty.
2. Check it yourself
ICY in the stream
On Linux, macOS or in WSL, this command shows the title currently in the stream:
curl -s -H "Icy-MetaData: 1" --max-time 20 STREAM-URL | grep -a -o "StreamTitle='[^']*'" If nothing comes back, check the headers first:
curl -s -H "Icy-MetaData: 1" -D - -o /dev/null --max-time 5 STREAM-URL If icy-metaint appears, the server sends metadata. If the block contains only the station name or a slogan, the title does not arrive by this route. Some servers show the title only after the next change; in that case wait longer (--max-time 60).
Icecast
Open https://SERVER:PORT/status-json.xsl in a browser. Under icestats there is one entry per mount point under source. The title field usually holds “Artist - Title”; sometimes there is also artist. Some operators have switched the page off or made it reachable only internally.
SHOUTcast
Version 1 returns a comma-separated line at /7.html; the last field is the title. Version 2 offers /currentsong?sid=1 (the title as plain text) and /stats?sid=1&json=1 (field songtitle). The stream number sid may differ in your setup.
A file of the station’s own
Open the station’s website with the player running, press F12 and choose the “Network” tab. Filter by json or meta. Usually a file shows up that refreshes every few seconds and contains the current title. Its address is the source.
3. Common errors
- Slogan instead of title. During music the stream carries only the station or an advertising line. The real title comes through another source.
- A number in front of the artist. The source delivers “01 Artist - Title” or puts the list position in the
artistfield. The player then shows the number as the artist and finds no cover. - Everything in one field. Artist and title sit together in the title field, separated by “ - ”. This can be split as long as the separator is unambiguous.
- Broken accented characters. ICY blocks carry no information about the character set. Many servers send Windows-1252 or Latin-1 instead of UTF-8, and an accented letter turns into a pair of odd characters.
- Empty titles during jingles and ads. The title field is briefly empty. A player should not simply delete the last title.
- File not readable by the browser. A website may read files from another address only if that address sends the header
access-control-allow-origin(CORS). Without it the request fails in the browser although the file is reachable. A server can still read it. - No cover although the title is right. Covers come from music catalogues such as Apple Music, Deezer or MusicBrainz. What is not listed there, for example DJ mixes, self-produced tracks or very small labels, gets no cover.
An example: Radio 1 from the Czech Republic
A case in which the three routes look different. The observations are from 25 October 2026 and may change. They are not a judgement: many stations keep the stream display and the website separate.
- The stream
https://icecast2.play.cz/radio1-192.mp3sendsicy-metaint: 16000. During music the ICY title readRADIO 1 - NENÍ JINÁ ALTERNATIVA, that is, only the slogan. - The station’s website delivers the current title as a file, for example
{"title":"CLUELESS","artist":"BEACH BUNNY"}. - For other tracks everything sits in the
titlefield (01 Huminal - Waves [This Never Happened],artistempty), or theartistfield holds only a number. - The file cannot be requested directly from another website (no CORS header). A server can read it.
A player that reads only the stream shows the slogan here. One that also reads the file and removes numbers shows the real title.
4. Setting it up in Ondial
Once you know where your title comes from, the setup in Ondial is short. There are only two entries: the stream address and, if you have one, the address of the source.
- Create the station. Open app.ondial.de, create a station and enter the stream address. The preview on the right starts automatically.
- Enter a metadata URL (optional). Under “Advanced settings” you will find “Metadata URL (optional)”. If you leave the field empty, Ondial reads the title from the stream. If you found a status page or a file of your own (section 2), enter its address. You do not need to state the format: Ondial recognises ICY, Icecast, SHOUTcast and common JSON files by itself.
- Check in the preview. After starting, the title appears within a few seconds. Check artist and title separately, and the list under “History”.
Ondial reads the metadata on the server, not in the listener’s browser. This takes the CORS restriction out of the picture. It removes leading numbers in front of the artist, splits “Artist - Title” and reads accented characters correctly even if the server sends Windows-1252. Messages consisting only of the station name, a frequency or a placeholder are not shown as a title. Ondial looks for the cover in several music catalogues. If nothing is found, the station logo stays.
5. If it does not work
- Check the source without a player first (section 2). If no title shows up there, the source is the problem.
- If the title arrives there but not in the player, send me the stream address and, if you have one, the address of the file or status page: kontakt@ondial.de. I will take a look and add new formats.
- No title by any route: ask your streaming provider whether metadata is switched on for your mount point and whether your playout system delivers it.
Read on: One in four radio streams has no track title. The result of my measurement of 190 German stations.