--- title: "Icecast Metadata" slug: "icecast-metadata" tags: ["icecast", "metadata"] updated: 2026-09-11T18:37:24Z published: 2026-09-11T18:37:24Z canonical: "help.tritondigital.com/icecast-metadata" --- > ## Documentation Index > Fetch the complete documentation index at: https://help.tritondigital.com/llms.txt > Use this file to discover all available pages before exploring further. # Icecast Metadata You can deliver metadata to the Triton Digital MediaRelay (MR) using an out-of-band method: - A conventional Icecast V2 TCP connection to the MR server delivers the audio stream data. - Another HTTP transaction delivers the metadata for song and ad markers. Metadata is sent to the MR server using the HTTP GET method. ## Ad Injection for Icecast Because metadata is transported on a separate HTTP connection from the Icecast v2 connection, this can create alignment issues with ad insertion for mid-rolls. Therefore, Triton recommends only using pre-roll ad insertion when using Icecast. Note that a few seconds of misalignment for song metadata does not significantly degrade the listener's experience, so it's acceptable to use icecast to pass song metadata. ## Icecast Metadata Timing While metadata can be sent at any time from your broadcasting tool, it is best to make this as accurate as possible given the live out-of-band nature of the metadata method. Once the content and the metadata arrive at the Triton origin server, that timing/synchronization will be carried forward through the system in lock-step and will not have any further time drift. Shoutcast/Icecast playback by listeners can re-introduce time drift. This is easily solved by using HLS- or FLV-based client players instead. ## Send Metadata Metadata can be sent to the MR server at any time while broadcasting with a simple HTTP request. - It can be used to send Artist and Title information to connected listeners for the current playing track. - With custom work, you can use this to send liner notes or other non-track relayed messages to connected listeners. ### GET Method The following GET code block is an example HTTP URL that you must create to send to the Triton Digital MediaRelay to insert stream events for songs and mid-roll ad breaks. The `song` or `url` parameters are needed to support metadata updates. ```plaintext GET /admin/metadata?mount=/MOUNTNAME&mode=updinfo&song=Song+-+Title&url=UrlEncodedSubParameters HTTP/1.0\r\n Authorization: Basic c291cmNlOmhhY2ttZQ==\r\n \r\n ``` #### Response | Response Code | Description | | --- | --- | | 200 | Success. | | 400 | Invalid Request or Invalid Mount Name. | | 401 | Invalid Password. | | 404 | Unknown Mount or Temporarily Disabled. | | 500 | Server Unavailable. | ### URL Parameter The `url` parameter can be used to provide additional information about the current event, be it a song or track start or a mid-roll ad break. If the `url` parameter is used, then the `song` parameter should not be provided. If your broadcasting tool cannot pass a `url` parameter, see [Song Parameter](/user/docs/icecast-metadata#song-parameter). #### URL Sub-Parameters The `url` parameter can contain a URL-encoded sub-parameter list. Sub-parameters are identical in format to standard URL parameters, but URL-encoded as a single value for the `url` parameter. For example: `title=Vogue&artist=Madonna&duration=300&songtype=S` needs to be delivered as: `url=title%3DVogue%26artist%3DMadonna%26duration%3D300%26songtype%3DS` | URL Sub-parameter | Description | | --- | --- | | `songtype` | Required. - `S`: Indicates a song or block of content start. Also ends a block of ads. - `A`: Indicates the start of an ad break. This triggers a mid-roll ad break. | | `style` | Optional. - `block`: Triggers a mid-roll block of one or more ads. Any other metadata will be ignored until a songtype of S or style of default is received. - `default`: Indicates the end of a block of ads. | | `duration` | Optional but recommended. Length of the current event in seconds. | | `title` | Optional but recommended. Title of the current event. It can be empty. | | `artist` | Optional but recommended. The artist of the current event. Ignored if `songtype` is `A`. | | `album` | Optional but recommended. The album of the current event. Ignored if `songtype` is `A`. | ### Song Parameter The `song` parameter is a free-form text field not officially described. Triton Digital supports it as an alternative for broadcast tools that cannot send the `url` [parameter](/user/docs/icecast-metadata#url-parameter). The value of the `song` parameter uses the artist-title string (ATS) format. It separates metadata with a space-hyphen-space (` - `). | ATS format | URL encoding | | --- | --- | | Title | `song=Title` | | Artist - Title | `song=Artist%20-%20Title` | | Artist - Album - Title | `song=Artist%20-%20Album%20-%20Title` | Note that the ATS format does not allow a broadcast tool to specify duration or ad breaks. Triton also supports an extended format for this: [TildeATS](/user/docs/icecast-metadata#tildeats-metadata-format). ## TildeATS Metadata Format For Icecast broadcast tools that are not capable of populating the `url` parameter with metadata, Triton supports TildeATS (Tilde artist-title string), which is an extended format for the `song` parameter that includes the option for indicating ad breaks. The value for a `song` parameter in TildeATS format contains these fields in this order: - Artist - Title - Duration in seconds. If the duration is not known, then a 0 must be provided. - Category code - Optional: Ad insertion count, `I ~ n`, where *n* is the number of ads to insert. The default for *n* is `1`. Use this for ad-insertion events, where the category code is `4`. Fields must be separated with space-tilde-space (` ~ `). The value must be terminated with a caret (`^`). Triton recognizes these category codes in TildeATS: - `0`: Song - `4`: Ad - `11`: PlaylistEvent - Other categories are accepted and processed as an End Break event. You can prefix a `song` parameter’s value with two hashes (`##`) to indicate that Triton should ignore a metadata event, yet still be processed as an End Break. This allows you to terminate a break event so that it does not appear in a SoundExchange report. Examples: `##Ignored - Event` `##Ignored ~ Event ~ 300 ~ 0 ^` ## Metadata Examples ### Song Metadata With URL Parameter Metadata: - Artist: Madonna - Title: Vogue - Duration: 3m 20s `duration=200&songtype=S&artist=Madonna&title=vogue` Encoded parameter: `url=duration%3D200%26songtype%3DS%26artist%3DMadonna%26title%3Dvogue` ### Start of an Ad Break With URL Parameter Metadata: - Title: Ad break - Duration: 30s `title=Targeted Ad Break=&duration=30&songtype=A` Encoded parameter: `url=duration%3D200%26songtype%3DS%26artist%3DMadonna%26title%3Dvogue` ### End of an Ad Break With URL Parameter Triton Digital MR requires you to send the end an ad break if you are using ads in a news or live show where there are no title updates in the broadcast. No metadata is needed. `songtype=S` Encoded parameter: `url=songtype%3DS` ### Song Metadata in ATS Format Metadata: - Artist: Billie Eilish - Title: Bad Guy `Billie Eilish - Bad Guy` Encoded parameter: `song=Billie%20Eilish%C2%A0-%C2%A0Bad%20Guy` ### Song Metadata in TildeATS Format Metadata: - Artist: Billie Eilish - Title: Bad Guy - Duration: 4m 6s `Billie Eilish ~ Bad Guy ~ 246 ~ 0 ^` Encoded parameter: `song=Billie%20Eilish%20~%20Bad%20Guy%20~%20246%20~%200%20%5E` ### Ad Replacement in TildeATS Format `Break ~ Break ~ 60 ~ 4 ^` Encoded parameter: `song=Break%20~%20Break%20~%2030%20~%204%20%5E` ### Ad Insertion With a Default 1 Ad Insert in TildeATS Format `Break ~ Break ~ 30 ~ 4 ~ I ^` Encoded parameter: `song=Break%20~%20Break%20~%2030%20~%204%20~%20I%20%5E` ### Ad Insertion With a Specific Count in TildeATS Format `Break ~ Break ~ 30 ~ 4 ~ I ~ 3 ^` Encoded parameter: `song=Break%20~%20Break%20~%2030%20~%204%20~%20I%20~%203%20%5E` ### Program Start, Also Known as a PlaylistEvent in TildeATS Format `Program Title ~ unused ~ 3600 ~ 11 ^` Encoded parameter: `song=Program%20Title%20~%20unused%20~%203600%20~%2011%20%5E`