Features
Live Metadata Polling
VMPlayer polls your stream server every 15 seconds by default to pull the currently playing artist, title, listener count, bitrate, sample rate, and channel configuration. Polling interval is configurable between 5 and 300 seconds so you can trade freshness against server load. Shoutcast v2 XML stats and Icecast JSON status endpoints are both fully supported, and ICY headers fill in the gaps for v1 Shoutcast streams that do not expose separate stats endpoints.
- Full metadata: artist, title, listener count, bitrate, sample rate, and channels
- Configurable interval: 5 to 300 seconds, with 15 as the sensible default
- Reverse-proxy aware: handles path-routed streams correctly
- ICY header parsing: pulls stream metadata even when a stats endpoint is not exposed
- Character encoding safe: song titles containing ampersands or apostrophes display correctly (fixed in 1.1.3)
Artwork Enrichment New in 1.0.2
Every track gets its cover art looked up in real time. VMPlayer checks four sources in priority order and stops at the first hit. Stream metadata wins if your automation software pushes an artwork URL through custom fields. If not, iTunes Search API runs next with your configured country storefront. If iTunes has no match, Deezer takes a turn, which is particularly strong for reggae, Caribbean, Latin, and international catalog. If Deezer misses, MusicBrainz plus the Cover Art Archive handles classical and older releases. Everything is cached aggressively so a station broadcasting the same song for three minutes does not send a lookup on every metadata poll.
Pop-Out Player Window New in 1.0.2
Listeners click the pop-out button and the player opens in its own portrait-shaped window. It follows the same theme colors, shows the same live metadata, and includes its own kebab menu with share, quality switching, settings, and about panels. A compact bar mode collapses the pop-out to a 60-pixel strip that stays visible while listeners work in other applications. When the pop-out closes, the main player picks up where it left off if auto-resume is enabled.
Kebab Menu New in 1.0.2
The three-dot menu on both the main player and the pop-out surfaces four panels. Share lets listeners post the current station to Facebook, X, or email, or copy the direct link. Switch Quality shows every mount configured on the station so listeners can jump between low, medium, and high bitrate on the fly. Player Settings toggles visualizer and auto-resume behavior. About shows station description, genre, and streaming format.
Station Counter Pill New in 1.0.2
When you configure more than one station, a small pill appears in the brand area that reads "Station 1 of 3" or however many you have actually set up. The pill updates live as listeners cycle through stations with the previous and next buttons. When only one station is configured, the pill hides and the previous and next buttons disable automatically so listeners never click a dead control.
Container Queries for Adaptive Layout New in 1.0.2
The player uses CSS container queries so its layout responds to the width you actually give it, not just the viewport width. That means the player renders correctly inside narrow Elementor columns, theme sidebars, and full-width sections without you having to think about breakpoints. Above 1199 pixels the landscape layout displays, between 767 and 1199 the layout compacts, and below 767 the portrait layout kicks in.
Live Station Sync New in 1.1.2
Add, delete, or reorder stations in the WordPress admin and any open frontend player in another tab updates immediately. Listeners never need to reload the page to see a new station. Currently playing audio keeps playing during the update.
Compact Player Variant New in 1.1.3
A smaller two-row landscape variant sized for sidebars, footer strips, header bars, and other placements where the full player is too large. Includes all the essentials: artwork, station name, playback controls, volume, ON AIR badge, current track, and access to the full kebab menu. Enable it with [vmplayer variant="compact"]. Combine with the station attribute to feature a specific station in a compact placement.
LIVE Broadcast Detection New in 1.1.3
When a DJ or host goes on air through a physical console or through an encoder like BUTT that does not send song metadata to the stream server, the player detects the live source and displays LIVE instead of the leftover song title from before the DJ took over. Configurable per station on the Stations tab. Set a list of live indicator keywords, and detection also fires automatically when the stream title is empty or matches the station name. Real songs are never flagged even when they contain the word live.
Listener Count Display New in 1.1.3
Show the current number of active listeners in a small chip on the player when your stream server reports one. Works with Shoutcast v1, Shoutcast v2, and Icecast. Enable per station on the Stations tab because station operators often want the number visible for busy stations to build social proof and hidden for quieter ones. The chip hides automatically when the server does not report a count, so nothing broken appears.
Page Builder Compatibility Fixed in 1.1.4
The compact player variant now renders reliably on sites built with Elementor, WPBakery, and other page builders that texturize content. Earlier versions could silently drop the variant attribute on those sites, leaving nothing visible where the shortcode was placed. VMPlayer now protects its shortcodes from the texturize step and tolerates typographic quotes defensively, so the shortcode you paste is the shortcode that renders.
Dedicated Compact Shortcode New in 1.1.4
Use [vmplayer_compact] as a bulletproof alternative to [vmplayer variant="compact"]. Both produce the same output, but the dedicated shortcode has no attributes to mangle so it works in the most aggressive page builder environments. Pair it with an optional station attribute the same way the main shortcode does.
Optional Clock and Date Display New in 1.1.4
Toggle the clock and date on or off in the player header per station on the Stations tab. Defaults to on so existing stations upgrading from 1.1.3 keep the header they had. Turn it off when you want a cleaner header for a specific station or when your placement is too narrow for the clock to fit gracefully. The compact variant does not include a clock at all regardless of this setting.
Extended Page Builder Compatibility Fixed in 1.1.5
The 1.1.4 page builder fix caught the raw-character form of typographic quotes, and 1.1.5 catches the encoded form that some rich text editors use behind the scenes. The Text Editor widget in Elementor is one common example. If you upgraded to 1.1.4 and still saw the compact variant fall back to the main player on a particular editor, this build handles that case too. No shortcode changes needed on your side. Just update and refresh.
Volume Slider Theme Compatibility Fixed in 1.1.5
Some WordPress themes reach into range inputs from their global input styling, which could override the volume slider's purple-to-blue gradient and leave it as a plain white bar. JNews was one reported case, but the pattern shows up in any theme with strong opinions about form controls. VMPlayer now defends the volume slider's appearance so the styled gradient renders correctly on those themes as well.
Kebab Menu Readability Fixed in 1.1.5
The three-dot dropdown menu now stays readable on themes that set a dark body text color. Earlier builds relied on cascading styles that some themes could beat, leaving menu labels rendering as dark text on the dark navy background. VMPlayer now locks in readable colors on every menu item, heading, and About panel so the labels stay clear regardless of what the theme sets for body text.
Animated EQ Visualizer
Twenty-four vertical bars pulse in sync with the beat during playback. The visualizer runs a CSS animation mode by default which works on any stream regardless of CORS configuration. Real-time audio-reactive analysis is available as an opt-in for streams that send proper CORS headers, but it stays off by default because turning it on for a non-CORS stream can silence audio entirely due to a Web Audio API security rule.
Multi-Format Stream Support
Format badges show which audio codecs your stream serves so listeners know at a glance what they are getting. MP3, AAC, OGG, and Opus are all supported. The badge for the current stream lights up in the primary theme color and the others dim so the current codec is unambiguous.
Social Media Integration
Every station can link out to Facebook, Bsky, Instagram, YouTube, WhatsApp, and X. Platforms are stored as handles rather than full URLs so you just type the username or handle and VMPlayer builds the correct URL automatically. When you switch between stations, only the platforms configured for the current station display so listeners see the right buttons for what they are actually listening to.
Theme Color Customization
The default palette runs purple, blue, and neon red for a dark synthwave aesthetic. You can customize the primary and secondary colors from the General tab and the whole player updates. Colors flow through the play button, station badge, format highlights, station counter pill, and social buttons.
Social Media Integration
Handle-Based Configuration
Each station has its own set of social media links. Instead of asking you for full URLs, VMPlayer takes just the handle or username and builds the correct URL automatically. Typemyradiostationin the Facebook field and VMPlayer expands it tofacebook.com/myradiostation. Type your phone number in the WhatsApp field and VMPlayer builds awa.me/link that opens a chat.Supported Platforms
Per-Station Configuration
Each station has its own independent set of social links. When a listener switches stations using the previous or next buttons, the social buttons update to show only the platforms configured for the newly active station. If your first station has Facebook and Instagram but your second only has X, the listener sees exactly what they should for each. No orphan buttons, no missing links.Handles vs URLs
If you paste a full URL likehttps://facebook.com/myradiostation, VMPlayer accepts it and uses it directly. The handle-based approach just makes configuration faster and more consistent, especially when you have several stations that share a social presence with slight variations.