Media player cards for Home Assistant that let you group speakers, add custom action buttons, search for music and more. A visual editor is available for all media player card configuration options.
Note: This is a pretty new project, so you might encounter some bugs. If you do, please do report them.
HACS
- Open HACS in your Home Assistant instance
- Click the three dots in the top right corner
- Select "Custom repositories"
- Add
antontanderup/mediocre-hass-media-player-cardsas a repository - Set category to "Dashboard"
- Click "Add"
- Search for "Mediocre Hass Media Player Cards"
- Install it and reload your browser
Manual Installation
- Grab the latest release from the releases page
- Copy the JavaScript file to your
www/directory in your Home Assistant setup - Add the resource to your Lovelace config:
resources:
- url: /local/mediocre-media-player-card.js
type: module- Refresh your browser
A standard-sized media player card. Supports grouping speakers (including volume management), custom action buttons, and search (when used with Music Assistant).
type: "custom:mediocre-media-player-card"
entity_id: media_player.living_room_speaker
tap_opens_popup: true
speaker_group:
entities:
- media_player.kitchen_speaker
- media_player.bedroom_speakerA full-sized media player card. Just like the regular card it supports grouping speakers (including volume management), custom action buttons, and search (when used with Music Assistant). In fact they share most of the configuration options.
type: "custom:mediocre-massive-media-player-card"
entity_id: media_player.living_room_speaker
mode: card # Options: card, in-card, panel
speaker_group:
entities:
- media_player.kitchen_speaker
- media_player.bedroom_speakerBoth cards support these options:
| Option | Type | Default | Description |
|---|---|---|---|
entity_id |
string | Required | The entity ID of the media player |
action |
object | - | Configuration for tap actions |
speaker_group |
object | - | Configuration for speaker grouping |
speaker_group.entity_id |
string | - | Entity ID of the main speaker if different from the media player |
speaker_group.entities |
array | - | List of entity IDs that can be grouped with the main speaker |
custom_buttons |
array | - | List of custom buttons to display |
ma_entity_id |
string | - | Music Assistant entity id (adds search) |
ma_favorite_button_entity_id |
string | - | Music Assistant favorite button entity (shows a heart-plus button to mark the current song as favorite) |
options |
object | - | Additional display options for fine-tuning the card |
options.always_show_power_button |
boolean | false |
Always show the power button, even if the media player is on |
The Mediocre Media Player Card has additional options:
| Option | Type | Default | Description |
|---|---|---|---|
tap_opens_popup |
boolean | false |
When set to true, tapping the card opens a popup with the massive card |
options.always_show_custom_buttons |
boolean | false |
Always show custom buttons panel expanded |
The Mediocre Massive Media Player Card has additional options:
| Option | Type | Default | Description |
|---|---|---|---|
mode |
string | card |
Display mode: card (regular HA card), in-card (no card wrapper), or panel (panel optimized view) |
action:
tap_action:
action: navigate
navigation_path: /media-player/living-roomYou can add custom buttons with specific actions:
custom_buttons:
- icon: mdi:playlist-music
name: Playlists
tap_action:
action: navigate
navigation_path: /media-player/playlists
- icon: mdi:equalizer
name: Equalizer
tap_action:
action: perform-action
perform_action: media_player.open_equalizer
target:
entity_id: media_player.living_room_speaker
data: {}Both the Mediocre Media Player Card and the Mediocre Massive Media Player Card support Music Assistant. By specifying a ma_entity_id, you can enable Music Assistant-specific features (currently just search). Even if your main entity_id is the same as your music assistant entity_id you need to specify it in the ma_entity_id. This allows you to use the card with a different entity_id than your music assistant but trigger actions on a music assistant entity.
type: "custom:mediocre-media-player-card"
entity_id: media_player.living_room_musiccast
ma_entity_id: media_player.living_room_musicassistant
ma_favorite_button_entity_id: button.living_room_favorite| Option | Type | Default | Description |
|---|---|---|---|
ma_entity_id |
string | - | The entity ID of the Music Assistant player |
A compact chip-style card for quickly grouping/ungrouping speakers. Perfect for dashboards where space is limited but you need quick access to speaker controls.
type: "custom:mediocre-chip-media-player-group-card"
entity_id: media_player.living_room_speaker
entities:
- media_player.kitchen_speaker
- media_player.bedroom_speaker
- media_player.bathroom_speaker| Option | Type | Default | Description |
|---|---|---|---|
entity_id |
string | Required | The entity ID of the main media player to group others with |
entities |
array | Required | List of entity IDs that can be grouped with the main speaker |
Both the Mediocre Media Player Card and the Mediocre Massive Media Player Card support search functionality. By specifying a ma_entity_id, you can enable Music Assistant-specific search features directly within the card. Alternatively, enabling the search.enabled option will use the regular Home Assistant search_media functionality. Read more about configuring the cards for search here.
- Using Universal Media Player with Mediocre Media Player Cards
- Search Functionality with Mediocre Media Player Cards
If you run into issues:
- Check that your entity supports the media player features needed
- Verify your configuration syntax
- Look for errors in your browser's developer console
These cards are built with Preact wrapped in web components. For local development:
# Install dependencies
yarn install
# Build for development
yarn dev
# Continually build when files change
yarn dev:watch
# Build for production
yarn buildWhen using yarn dev, the output file will be named mediocre-hass-media-player-cards-dev.js instead of mediocre-hass-media-player-cards.js.
You can also create a .env.development file (based on the .env.development.example) to use custom component names during development. This is usefull if you want to test in a live environment without risking breaking anything for your users (family members :D).

