Lovelace: Button card


Button card

Lovelace Button card for your entities. -> github



  • works with any toggleable entity
  • 3 actions on tap toggle, more_info and service
  • state display (optional)
  • custom color for on and off state (optional)
  • custom state definition with customizable color (optional)
  • custom size (optional)
  • custom icon (optional)
  • custom css style (optional)
  • automatic color for light (optional)
  • custom default color for lights (when color cannot be determined) (optional)
  • 2 color types
    • icon : apply color settings to the icon only
    • card : apply color settings to the card only
  • automatic font color if color_type is set to card
  • support unit of measurement
  • blank card and label card (for organization)
  • support for custom_updater


Name Type Default Supported options Description
type string Required custom:button-card Type of the card
entity string Required entity_id
icon string optional mdi:air-conditioner | attribute Icon to display in place of the state. If you use attribute it will fetch the icon configured on the entity.
color_type string icon icon | card | blank-card | label-card Color either the background of the card or the icon inside the card. Setting this to card enable automatic font and icon color. This allows the text/icon to be readable even if the background color is bright/dark. Additional color-type options blank-card and label-card can be used for organisation (see examples).
color string var(--primary-text-color) auto | rgb(28, 128, 199) Color of the icon/card when state is on. auto sets the color based on the color of a light.
color_off string var(--disabled-text-color) rgb(28, 128, 199) Color of the icon/card when state is off.
size string 40% 20px Size of the icon. Can be percentage or pixel
action string toggle toggle | more_info | service Define the type of action
service Object optional See example section Service to call and service data when action is set to service
name string optional Air conditioner Define an optional text to show below the icon
show_state boolean false true | false Show the state on the card. defaults to false if not set
style object optional - text-transform: none Define a list of css attribute and their value to apply to the card
state list optional See example section State to use for the color of the button. Multiple states can be defined


  1. Download the button-card
  2. Place the file in your config/www folder
  3. Include the card code in your ui-lovelace-card.yaml
title: Home
  - url: /local/button-card.js
    type: module
  1. Write configuration for the card in your ui-lovelace.yaml

To configure custom_updater with button-card



Show a button for the air conditioner (blue when on):


- type: "custom:button-card"
  icon: mdi:air-conditioner
  color: rgb(28, 128, 199)

Show an ON/OFF button for the home_lights group:


- type: "custom:button-card"
  entity: group.home_lights
  show_state: true

Light entity with custom icon and “more info” pop-in:6


- type: "custom:button-card"
  entity: light.living_room_lights
  icon: mdi:sofa
  color: auto
  action: more_info

Light card with text:


- type: "custom:button-card"
  entity: light.living_room_lights
  icon: mdi:sofa
  color: auto
  name: Living room

Light card with text and custom style:


- type: "custom:button-card"
  entity: light._
  icon: mdi:home
  color: auto
  action: more_info
  name: Home
    - text-transform: none
    - color: rgb(28, 128, 199)
    - font-weight: bold

Light card with card color type, name, and automatic color:


- type: "custom:button-card"
  entity: light._
  icon: mdi:home
  color: auto
  color_type: card
  default_color: rgb(255, 233, 155)
  action: more_info
  name: Home
    - font-size: 12px
    - font-weight: bold

Horizontal stack with :

  • 2x blank cards
  • 1x volume up button with service call
  • 1x volume down button with service call
  • 2x blank cards


- type: horizontal-stack
    - type: "custom:button-card"
      color_type: blank-card
    - type: "custom:button-card"
      color_type: blank-card
    - type: "custom:button-card"
      color_type: card
      color: rgb(223, 255, 97)
      icon: mdi:volume-plus
      action: service
        domain: media_player
        action: volume_up
          entity_id: media_player.livimg_room_speaker
    - type: "custom:button-card"
      color_type: card
      color: rgb(223, 255, 97)
      icon: mdi:volume-minus
      action: service
        domain: media_player
        action: volume_down
          entity_id: media_player.livimg_room_speaker
    - type: "custom:button-card"
      color_type: blank-card
    - type: "custom:button-card"
      color_type: blank-card


  • ciotlosm for the readme template and the awesome examples

Edit :

  • New release! 0.0.1 is out.
  • 0.0.2 is out with custom service, blank card, and custom_updater support
  • 0.0.3 Custom state, label card and icon attribute

Lovelace as a Dashboard
Lovelace with custom_ui tiles
Lovelace: mini graph card
Custom UI: Tiles
Lovelace button card (capital letters and blank cards)
Getting switch state in Entity Button Card
Circadian Lighting [Custom Component]
Harmony Activities, Volume Slider, and Lovelace
Ariela - Home Assistant Android Client
Custom UI: Tiles
My Lovelace Plugins
Palm Springs Theme

this is awesome! great work


thank you, this looks amazing…


@kuuji Fantastic work! Any chance you can share the code for the layout you have in the first post? Really like the format / spacing setup :slight_smile:


Very nice! Just what I’ve been waiting for to jump on the Lovelace train :grinning:
If only we could pass data values like we used to in Custom UI: Cards :slight_smile:

  - entity: script.press_button
    icon: mdi:arrow-left-thick
    column: 1
    row: 5
      value: left


@kuuji (Alexandre) thank you for these great cards.
Please consider adding the below card tracker component code, as it’s a practical way of keeping up with your latest release.


Excellent start!!

Couple of things:

  1. Can the icon also use a regular image? Not all icons are available on mdi. For example, I would like to have buttons for my favorite TV channels (Discovery, CNN, etc.).
  2. Also, can we also allow calling services in action? We already have that feature in many LL cards, so should be easy to replicate the functionality here.


Thanks for the suggestion @arsaboo . Adding that to my todo list :wink:


@Igor_Jurisic not exactly sure what that does. Could you elaborate?


Thanks @juan11perez! That’s awesome. I’ll include the json and link to the tracker card/component in my readme :wink:


loving this card… but been trying to display on a raspberry pi with the 7" touchscreen, but keep getting “custom element doesn’t exist: button-card” could very well be me and nothing to do with the code, or it just isn’t compatible with the browser on the pi. working very well on other browsers. thanks again for all the work.


Just wondering how you put the text underneath each button “Main”, “Wardrobe” etc?


This is my configuration with name under icon’s:

      - type: "custom:button-card"
        entity: switch.kino_on_off
        icon: mdi:power-standby
        name: Soundbar
        color: rgb(28, 128, 199)


Ahhh “name:” was just thinking I hadn’t tried that…thanks mate!


@ashsav could you open the developer tools, go to the console, and tell me if you see any error.
It might just be slow to load on a raspberry Pi, have you tried waiting a bit?


Thanks for the reply, this is all I get

don’t think this is an error relating to my problem, but my web skills are limited. yeah I did try and wait, but no change.


I forked your project and I Improved it a little, if you like my edits you are free to add to your branch :slight_smile:


@jackar Feel free to open a PR. It’ll be easier for me to see what you change and to merge it into mine :wink:


Beautiful, great work.


Great job, was what I needed to stop using “custom-ui-tiles”.
But you still need a button with the name only (no icon and no state).