Luna Web Radio Player is a WordPress plugin that embeds a live internet radio stream into a site using the browser’s own HTML5 audio engine rather than Flash or a third-party hosted widget. It plays MPEG and AAC audio streams, displays the current track title pulled from the streaming server, and ships with two player layouts and seven audio visualiser effects. It is aimed at radio stations, community broadcasters and site owners who want a self-hosted player they control rather than an iframe supplied by a streaming platform.
The plugin is sold on CodeCanyon for $29 by the developer sodah, has been downloaded 2,496 times and holds a 4.35 out of 5 rating across 100 reviews. The source JavaScript, CSS and PHP files are included, though the vendor states the JavaScript is obfuscated to discourage copying.
What the player actually does
At its core the plugin solves one problem: getting a continuous audio stream to play inside a web page without asking the visitor to install anything. It relies on the HTML5 audio element, which every current browser supports natively, so playback works on desktop, Android and iOS without a Flash fallback or a proprietary app.
On the audio side, the player handles both MPEG audio (the MP3 family) and AAC streams. That matters because streaming providers are not consistent — some broadcast in MP3, some in AAC or AAC+, and a player that only speaks one format will fail silently on the other. Support for both means a station can change its encoder settings without swapping the player.
Metadata is the second half of the feature set. The player reads the StreamTitle field that Icecast 2, Shoutcast 2, Radionomy, Radiojar and Radio.co publish alongside the audio, and displays the current song or programme name inside the player. For a music station this is the difference between a bare play button and something that tells a listener what they are hearing right now. A cover image can be configured alongside it, which gives the layout something to display when artwork is available.
Layout, controls and visual options
Two interfaces are provided: a compact version for narrow columns and sidebars, and a larger one for full-width placements. Both are fully responsive, so the same shortcode or block can be dropped into a header, a sidebar or a dedicated “Listen Live” page without separate styling work. The volume control is a draggable slider with a mute toggle, and the player can be instantiated more than once on the same page — useful on a station site that wants a persistent player in the header and a second one on a schedule page.
Seven audio visualiser effects are included. These are decorative rather than functional, but they give the player a sense of motion that a static play button lacks, which is a reasonable trade for a music-focused site.
Compatibility and technical requirements
The vendor lists support for WordPress 4.9 through 7.0.x, which is an unusually wide range and means the plugin will run on older installations that have not been updated. Browser support covers Chrome, Firefox, Safari, Edge, Opera and Internet Explorer 11. IE11 support is largely academic at this point, but its presence suggests the codebase avoids modern syntax that would break on legacy environments.
Two requirements are worth flagging before purchase. The site must run on a web server — the vendor explicitly states that apps are not supported, so this is not a solution for a native mobile application. More importantly, the server hosting the WordPress site must be able to reach the streaming server. That is normally handled either through a CORS policy on the streaming host or through a PHP proxy on the WordPress side. If neither is configured, the stream will not play and the metadata will not appear, regardless of how the player is set up.
Where this fits and where it does not
The clearest fit is an existing radio station that already has a stream URL and needs a player on its own WordPress site. Independent and community stations, internet-only broadcasters, podcasts that stream live, and churches or campus radio operations all fall into this group. The plugin lets them keep the listening experience on their own domain instead of sending visitors to a third-party player page, and the metadata display means the site reflects what is playing without manual updates.
A second fit is an agency or freelancer building a site for a broadcaster. Because the source files are included, the player can be styled to match a client’s brand rather than sitting inside a fixed iframe. The two layouts and responsive behaviour reduce the amount of custom CSS needed to make it look intentional in different placements.
It is the wrong choice for anyone who wants a player for on-demand audio files — podcast episodes, sermon archives, music previews. This is a live stream player; it is built around a continuous feed and reads metadata from a streaming server’s status endpoint. A site that needs a playlist of downloadable or progressive MP3 files should use a standard audio player instead. It is also a poor fit for anyone unwilling or unable to configure server access to the stream, since the plugin cannot work around a blocked connection.
Strengths and limitations
Strengths
- Plays both MPEG and AAC streams, so it is not tied to a single encoder format.
- Reads now-playing metadata from five named streaming platforms, which covers most of the hosting services a small station is likely to use.
- Two layouts and full responsiveness mean one purchase covers header, sidebar and full-width placements.
- Supports multiple player instances on a single page.
- Source JavaScript, CSS and PHP are included, allowing visual customisation.
- Broad WordPress version support, from 4.9 up to 7.0.x, so it does not force a core update.
- Established track record: 2,496 sales and a 4.35 rating from 100 reviews is a meaningful sample for a CodeCanyon item.
Limitations
- The JavaScript is obfuscated. The vendor is explicit that this is to prevent pirated copies, but the practical consequence is that deep behavioural changes to the player logic are not realistically possible — only the CSS and surrounding markup are comfortably editable.
- Stream access depends on server configuration outside the plugin’s control. CORS headers on the streaming host or a PHP proxy must be set up correctly, and the vendor does not state that the plugin configures this automatically.
- No Gutenberg block is provided. The vendor’s own specification marks Gutenberg optimisation as “No”, so placement relies on shortcodes or widgets rather than the block editor’s native interface.
- No mobile app output. The vendor states plainly that apps are not supported.
- The visualiser effects are cosmetic and add nothing to playback reliability or metadata accuracy.
- The listing does not state whether album artwork is fetched automatically from a metadata service or must be configured per station, so buyers should confirm this before relying on it.
How it compares to the alternatives
The realistic alternatives fall into three groups: a hosted widget supplied by the streaming provider, a general-purpose WordPress audio player, and a custom build.
Hosted widgets from streaming platforms are the easiest route — usually a snippet of embed code and nothing else. The trade-offs are that the design is fixed, the branding is often the provider’s, and the player lives on their infrastructure. Luna Web Radio Player sits on the opposite side of that line: more setup, but the player is part of the site and can be styled to match it.
General-purpose WordPress audio players are typically built for files, not streams. Many will play an MP3 stream URL, but they generally do not read the StreamTitle metadata that Icecast and Shoutcast publish, so the now-playing display — the feature that makes a radio player feel alive — is missing. That metadata handling is the main reason to choose a dedicated radio player over a generic one.
A custom build gives complete control but costs developer time and creates an ongoing maintenance obligation as browsers tighten autoplay and cross-origin rules. At $29, the plugin is priced below an hour of most developers’ time, which is the strongest argument for it over building from scratch. The obfuscated JavaScript is the main reason someone might still choose to build their own.
Frequently Asked Questions
Does Luna Web Radio Player work on iPhone and Android?
Yes. The player uses HTML5 audio, which is supported natively by mobile Safari and Chrome on Android, so streams play in the mobile browser without an app. The vendor lists iOS and Android as supported platforms. Note that mobile browsers restrict autoplay, so playback normally requires the visitor to tap the play button.
Why is the stream not playing after installing the plugin?
The most common cause is that the WordPress server cannot reach the streaming server. The vendor states that access must be granted either through a CORS policy on the streaming host or through PHP. If neither is configured, the browser blocks the request. Confirming the stream URL works in a browser tab directly is a useful first check.
Can the player show the current song title?
Yes, for supported streaming platforms. The plugin reads the StreamTitle metadata published by Icecast 2, Shoutcast 2, Radionomy, Radiojar and Radio.co, and displays it inside the player. The metadata is only as accurate as what the station’s encoder sends, so stations that do not publish track titles will not see them appear.
Can the player be customised to match a site’s design?
Partly. The CSS and PHP source files are included, so colours, sizing and layout can be adjusted freely. The JavaScript, however, is obfuscated by the developer to prevent unauthorised copies, which means changes to the player’s internal behaviour are not practical. Two built-in layouts provide a starting point for most design needs.
Verdict
Luna Web Radio Player is a sensible purchase for a radio station or broadcaster that already has a working stream and wants a player it owns, on its own domain, with now-playing metadata and a design that can be adjusted to fit. The 2,496 sales and 4.35 rating suggest the plugin has been through enough real deployments to be a reasonably safe bet at $29. Buyers should go in expecting to configure server access to the stream, since that step sits outside the plugin. It is not the right product for on-demand audio libraries, for projects that need a Gutenberg block, or for anyone who needs to modify the player’s core logic — the obfuscated JavaScript rules that out. Anyone wanting a zero-configuration embed should look at a hosted widget from their streaming provider instead.