Configuring the ESX RP Radio Script
Most people download the ESX RP radio resource and immediately get stuck because the default config file assumes you already know how your server is structured. It doesn't work that way. Here's what actually happens when you try to set it up. You grab the resource from GitHub or a marketplace, drop it into your server directory, and add it to your server.cfg file. That part is straightforward. The radio won't play any audio until you configure the stream URLs in the config.lua file inside the resource folder. Most configs come with placeholder URLs pointing to default stations like a top 40 pop station or a rock station. Those streams might work for testing, but they're not yours and anyone can shut them down.
Unlock The Power Of Esx Rp Radio Ultimate Setup Configuration Guide
The configuration file typically looks like this. You define station names, URLs, and sometimes metadata fields. Here's a working example: Config.Stations = { {name = "FiveM Radio", url = "https://example.com/stream"},
} That's the basic structure. Each station needs a name and a URL. The URL must be an HTTP or HTTPS endpoint that serves an audio stream, usually in MP3 or AAC format at 128 kbps or higher. If the bitrate is too low, players will hear garbage audio or the stream will buffer constantly. I've seen configs with 64 kbps streams that sound like they were recorded through a wall. One thing nobody mentions in the docs: the radio script uses the browser-based audio player in FiveM. That means it relies on the game's CEF (Chromium Embedded Framework). If your server is running behind a reverse proxy or a CDN that adds latency to HTTPS requests, the audio will stutter or fail to load entirely. This is especially bad if you're hosting your streams on a service like StreamGuys or Shoutcast and they're routing through Cloudflare. I spent an afternoon troubleshooting why the radio only worked on my local machine and not on the live server. Turned out Cloudflare's automatic HTTPS minification was breaking the audio stream headers. Disabling that fix worked immediately.
Get the Full Details

Stream Hosting and URL Considerations
You need a reliable source for your radio streams. Self-hosting a Shoutcast or Icecast server is possible but introduces its own problems. Bandwidth costs scale with listener count. A server handling 50 concurrent listeners on a 128 kbps stream needs about 6.4 Mbps of sustained bandwidth. Multiply that by more listeners and your hosting bill grows quickly. Using a third-party stream hosting service is simpler. Services like Radio.co or Listen2MyRadio offer pre-configured servers with web dashboards. The tradeoff is monthly fees and limited control. You can't tweak the encoding parameters as freely as you could with a self-hosted Icecast instance. But for a FiveM RP server with 20 to 50 players, a managed service is usually the right call. The URL you put in config.lua must be publicly accessible. If you test it by opening the URL in your local browser and it works, that doesn't guarantee it works from the FiveM CEF player. The CEF player sometimes struggles with redirects or authentication challenges. I had a case where the stream URL was behind basic auth on the hosting provider's dashboard. Players couldn't access it because FiveM's CEF doesn't support interactive login prompts. Moving the stream to an unauthenticated public URL resolved it.
Common Pitfalls and Fixes
The config.lua file might not be in the root of the resource folder. Some versions of the ESX RP radio script place it in a subdirectory called "config" or "resources". Check your file structure before editing. If the script throws a Lua error on startup saying it can't find config.lua, the path is wrong. Another issue is the command that triggers the radio. The default command is usually something like /radio or /radio open. If players type the command and nothing happens, check two things. First, make sure the resource is started in server.cfg. Second, check if another resource is overriding the same command. ESX frameworks often have overlapping command definitions, and the last resource to load wins. You can also run into volume issues. The in-game radio sounds are often too quiet or too loud depending on how the CEF audio player integrates with FiveM's sound engine. There's no built-in volume slider in most configs. I added a small JavaScript modification to the HTML file in the client folder that maps the FiveM audio volume to the browser player volume. It takes about ten minutes and requires basic JavaScript knowledge. Without it, you're either deafening players or asking them to turn their system volume to maximum.
Advanced Configuration Options
Some versions of the radio script support station categories, like news, music genres, or talk radio. These are defined in the config as arrays or nested tables. If your version supports it, the structure might look like this: Config.Category = { Music = {
![[free] advanced radio | esx, qbcore, qbox, ox, nd - FiveM Releases ...](https://forum-cfx-re.akamaized.net/original/5X/7/f/b/a/7fba2f9011f1b2efda8dd9ca8207091ee20cc868.jpeg)
{name = "Hip Hop", url = "https://example.com/hiphop"}, {name = "Rock", url = "https://example.com/rock"}, },
} This is helpful if you want organized station browsing in the UI. Not all versions support categories, and trying to force a category structure into a non-category-aware config will just throw errors. Check your version before attempting this. The script may also support dynamic station metadata, meaning the currently playing song information gets displayed in-game. This requires the stream to send metadata through Icecast or Shoutcast metadata protocols. If your stream hosting service doesn't support metadata broadcasting, don't bother enabling this feature in the config. It just wastes processing cycles.
Testing Before Going Live
After every configuration change, test the radio on a local FiveM server before pushing it to your live environment. Add at least one other person to verify the stream works across different network conditions. Localhost testing masks latency issues that appear when players connect from different regions. Monitor the browser console in FiveM. Open the developer tools by pressing F12 in-game (if enabled in your server config). You'll see network errors, CORS issues, or audio decoding failures that explain why the radio isn't working for certain players. This step alone saves hours of debugging compared to guessing. The ESX RP radio setup isn't complicated, but the documentation rarely covers the edge cases. Most people follow the tutorial, hit a problem that isn't addressed, and give up. The issues are almost always related to stream URLs, config paths, or CEF limitations rather than the script itself. Once those three areas are sorted, the radio works reliably for months without attention.
![[FREE] Basic Radio System | STG [QB/ESX/QBOX] - FiveM Releases - Cfx Forum](https://forum-cfx-re.akamaized.net/optimized/5X/b/9/6/6/b966c05095b6ded7740103912fdd1e8b663cd75f_2_690x388.jpeg)