To schedule AzuraCast jingles, give each kind of cut its own playlist. Set short IDs to "Once per x Songs", shuffled, and the top-of-hour ID to "Once per Hour" at minute 0. Tick "Hide Metadata from Listeners ('Jingle Mode')" and leave the Advanced tab's scheduling boxes off.
The rest of this guide explains why each setting matters, using one real support thread as the running example. In GitHub discussion #7042, a broadcaster had a jingles playlist scheduled from 5 a.m. to midnight, set to play once every 4 songs, and it never played. The accepted answer pointed to a single checkbox. You'll see which one in Step 4.

The support thread used throughout this guide. Source: AzuraCast discussion #7042.
Before you start
You need three things in place before you set up AzuraCast jingles:
- A running AzuraCast station. The Docker install is the standard route, and any user role with the "Manage Station Media" permission can edit playlists.
- At least one General Rotation playlist with music in it, so the AutoDJ always has something to fall back on.
- Your finished jingle files: MP3 or WAV, already mixed, one file per cut.
Labels and behavior below were checked against AzuraCast 0.23.9 and the rolling release on the public demo on 2026-10-24. The examples use a made-up station, Copper Pines FM.
Step 1: Make the station ID audio first
Finish and tag every cut before you open AzuraCast. The scheduler can't fix a quiet ID or a missing name.
There are three common ways to get the audio:
- Record it yourself. Free, and it sounds like you. Room noise and level matching are your problem.
- Hire a voice artist or an imaging company. A human voice, and singing if you want it. Expect to wait for delivery and pay per package.
- Use an AI voice tool. Generic text-to-speech gives you a bare voice that you still mix with music yourself. Radio-specific tools mix it for you. One example is JingleLark, which we build: type the script, pick one of 24 radio voices, and it adds an intro, a background bed and an outro, normalized to −16 LUFS, as an MP3 or WAV. Packs start at $14.90 for 50 credits, paid once with no subscription, and a voiceover of up to 220 characters costs 1 credit. Mixing and downloads are free. It makes voiced IDs only, with no singing, and all 24 voices are native English speakers, so scripts in other languages come out with an accent.

One AI option: script, voice and mix in one screen. Screenshot of JingleLark, October 2026.
Whichever route you take, you want a set of files, not one. Three things decide how well they air:
- Level. AzuraCast's own post-processing setting says that "values between -14 and -18 LUFS are common for Internet radio stations" (source). An ID inside that range won't jump out over the music or sink under it.
-
Tags. AzuraCast reads Title, Artist and Album from the file's tags when you upload (source). Set Artist to
Copper Pines FMand give each file a Title that says what it is, such asID - Top of Hour 01. -
File names. Use a prefix per element (
toh-,id-,sweep-), so a folder sort groups them.
Whichever route you use to make a station ID for your radio station, make several short versions, so a once-every-4-songs rotation doesn't repeat the same cut every 15 minutes.
Check: play each file next to a song from your library at the same volume. None of them should sound much louder or quieter.
Step 2: Create one AzuraCast playlist per element
An AzuraCast playlist carries one rule, so each element type needs its own playlist.
For Copper Pines FM that means three playlists:
| Playlist | Contents | Rule it needs |
|---|---|---|
IDs - Top of Hour |
Hourly ID with the full station name and city | once per hour, at a set minute |
IDs - Short |
3–5 second name IDs | every few songs |
Sweepers |
Short cuts that bridge two songs | every few songs, at a different interval |
Upload the files under Media → Music Files, then add each folder to its playlist. The playlist list has an "Apply to Folders" action for this.
Check: each playlist holds one element type only.
Step 3: Pick the Playlist Type and turn on Jingle Mode
The Playlist Type sets how often a playlist plays. On the Basic Info tab, choose "Song-Based Playlist" as the Source. Then set these fields:
| Field (exact UI label) | Top of Hour | Short IDs | Sweepers |
|---|---|---|---|
| Playlist Type | Once per Hour | Once per x Songs | Once per x Songs |
| Minute of Hour to Play / Number of Songs Between Plays | 0 | 4 | 3 |
| Song Playback Order | Shuffled | Shuffled | Shuffled |
| Hide Metadata from Listeners ("Jingle Mode") | On | On | On |
| Allow Requests from This Playlist | Off | Off | Off |

Short-ID playlist settings on the Basic Info tab. Screenshot from the AzuraCast public demo, October 2026.
"Once per x Minutes" is the third option. It counts time instead of songs, which suits stations that mix hour-long DJ sets with three-minute tracks. The numbers above are starting points.
Jingle Mode does more than its label says. In AzuraCast 0.23.9, a track from a Jingle Mode playlist carries a jingle_mode annotation, and the Liquidsoap script sends the previous track's metadata again instead of the jingle's (source). Listeners keep seeing the song that just ended while your ID plays. AzuraCast also marks those plays as not visible in song history (source).
Check: reopen each playlist and confirm Jingle Mode is still on and requests are off.
Step 4: Schedule the playlists and leave the Advanced boxes off
The Schedule tab sets when a playlist is active, and the Playlist Type sets how often it plays inside that window. With nothing scheduled, AzuraCast says the playlist "will play at all times". To limit it, click Add Schedule Item and set a Start Time and End Time, plus optional dates and days of the week.
In #7042, the accepted answer flagged one box on the Advanced tab, under "Advanced Manual AutoDJ Scheduling Options": "Only play one track at scheduled time." That reply explained that this option plays one jingle in the whole 5 a.m. to midnight window and then stops. The suggested setup was Once per x Songs at 4, Shuffled, Jingle Mode on, a schedule of 05:00 to 11:59 PM, and no advanced options. The broadcaster reported back that it worked.

Leave these three boxes off for ID and sweeper playlists. Screenshot from the AzuraCast public demo, October 2026.
The 0.23.9 source agrees with that reply. With single-track on, a playlist that has already played since the start of its current schedule block isn't eligible again (source).
"Interrupt other songs to play at scheduled time" is the other box to leave alone for IDs. When the broadcaster in #7042 tried it, jingles sometimes cut in on top of a song and most of the time didn't play at all.
When two playlists are due at the same time, priority decides which one plays. AzuraCast's playlist docs list the defaults: Once per Hour beats Once per x Songs, which beats Once per x Minutes, which beats General Rotation, and a scheduled playlist beats an unscheduled one of the same type. Song requests always come first. The queue builder in 0.23.9 checks them in that order (source).

AzuraCast's Default Priorities table: hourly beats every-x-songs, which beats every-x-minutes and general rotation. Source: AzuraCast docs (MIT).
Check: for each jingle playlist, the Advanced tab has no boxes ticked.
Step 5: Listen to the live stream for an hour
Listen to the live stream across one top of the hour. Before that, open Broadcasting → Upcoming Song Queue to see what the AutoDJ has lined up and which playlist each item came from.
Expect the hourly ID a little after :00, not exactly on it. The AutoDJ waits for the current song to end, so the ID airs when that song finishes.

Why the top-of-hour ID lands after :00. Illustration, not a measurement.
The 0.23.9 scheduler adds two limits that few guides mention (source):
- A Once per Hour playlist is only eligible from its target minute until 15 minutes after it. If a long track is still playing at :15, that hour's ID is skipped.
- It won't fire again within 30 minutes of its last play.
To air an ID at both :00 and :30, create two Once per Hour playlists, one at minute 0 and one at minute 30. Another user suggested the same pattern (one playlist per slot) in discussion #8286.
Check: note when the hourly ID aired and count songs between short IDs against your settings.
Why isn't my AzuraCast jingle playing?
When AzuraCast jingles never play, it usually comes down to one of five settings. Check them in this order:
- "Only play one track at scheduled time" is ticked. You get one jingle per schedule block. Untick it.
- A higher-priority playlist always wins. For example, a Once per Hour playlist with a wide window, or a scheduled playlist that blocks an unscheduled one.
- The playlist is outside its schedule, or disabled. Check Start Time, End Time and the days of the week. An end time earlier than the start time means the playlist runs overnight.
- A long track runs past the 15-minute window. With hour-long mixes, Once per Hour can miss. Once per x Minutes is more forgiving.
- Changes haven't taken effect. In #7042, the answerer said plain playlist edits apply live unless the station uses Manual AutoDJ Mode. A hosting provider's knowledge base says playlists with advanced options need Restart Broadcasting, which drops listeners.
When a queue item looks wrong, open its logs from the Upcoming Song Queue. The log shows why the AutoDJ picked it.
FAQ
What is a station ID on an AzuraCast station?
A station ID is a short audio cut that says your station's name. In AzuraCast it's an ordinary media file in a playlist set to Jingle Mode, and the AutoDJ slots it between songs according to the Playlist Type.
Can AzuraCast play a jingle over the start of a song?
Not out of the box. AzuraCast plays jingles between tracks. Playing a jingle over a song is an open request on the AzuraCast suggestion board (Jingle while a song is played). Power users can write their own Liquidsoap rules with an "Advanced" Playlist Type, which AzuraCast leaves for you to configure by hand.
Can I force a jingle to play right next to another cut?
Yes, with an Advanced playlist and a Liquidsoap rule, added under Broadcasting → Edit Liquidsoap Configuration. The AzuraCast docs give this example for two playlists that should always play back to back:
radio = rotate(weights=[1,1,5], [playlist_commercials, playlist_bumpers, radio])
AzuraCast names each playlist's variable playlist_ plus the name in lowercase, with spaces turned into underscores.
Disclosure: written by the team behind JingleLark.
Top comments (0)