🔹 A Home Assistant integration to turn your browser into a controllable entity and media player
TypeScript
1,826
1,159 commits
updated Oct 7, 2026
What if that tablet you have on your wall could open up a live feed from your front door camera when someone rings the bell?
And what if you could use it as an extra security camera?
Or what if you could use it to play music and videos from your Home Assistant media library?
What if you could permanently hide that sidebar from your kids and lock them into a single dashboard?
What if you could change the icon of the Home Assistant tab so it doesn't look the same as the forum?
What if you could change the more-info dialog for some entity to a dashboard card of your own design?
What if you could tap a button and have Home Assistant ask you which rooms you want the roomba to vacuum?
First make sure you have completely removed any installation of Browser Mod 1
I.e. remove browser_mod: from your configuration.yaml and delete the integration from the integrations page.
Either
integrations in HACScustom_components/browser_mod/ to <your config dir>/custom_components/browser_mod/.Restart Home Assistant
Add the "Browser Mod" integration in Settings -> Devices & Services -> Add Integration or click this button:
Restart Home Assistant
Upgrade via HACS or copy new contents of custom_components/browser_mod/ to <your config dir>/custom_components/browser_mod/.
Restart Home Assistant. If you are upgrading via HACS you will get a repair item to restart Home Assistant.
After restarting Home Assistant, all Browsers will need a reload to download the latest version of Browser Mod javascript file. Version 2.4.0 includes a notification when a Browser version mismatch is detected, so from 2.4.x onwards simply clicking Reload should be sufficient. If you keep getting the notification, you may need to do a hard Browser reload SHIFT+F5 or in some cases clear your Browser cache.
Note: If you are upgrading from Browser Mod 1, it is likely that you will get some errors in your log during a transition period. They will say something along the lines of
Error handling message: extra keys not allowed @ data['deviceID'].They appear when a browser which has an old version of Browser Mod cached tries to connect and should disappear once you have cleared all your caches properly.

Here's a great overview of the functionality by Smart Home Scene.
After installing Browser Mod you should see a new panel called Browser Mod in the sidebar. This is where you control any Browser Mod settings.
Browser Mod has a number of services you can call to cause things to happen in the target Browser, such as opening a popup or navigating to a certain dashboard.
Popup cards can be used to replace the more-info dialog of an entity, or to be used as a template for browser_mod.popup service, or both! See dashboard-cards for more information.
The media_player.play_media service allows for extra configuration to be passed to the media_player entity. Browser Mod supports sending media_player popup configuration by adding a popup dictionary under extra. You can set any browser_mod.popup parameters apart from content.
To show the video player fullscreen, with no padding to the video and a black background, use the example below.
action: media_player.play_media
target:
entity_id: media_player.my_browser
data:
extra:
popup:
initial_style: fullscreen
popup_styles:
- style: all
styles: |
ha-dialog {
--ha-dialog-surface-background: black;
}
ha-dialog .container {
padding: 0px;
}
media:
media_content_id: media-source://...
media_content_type: video/mp4
It all depends on what your outcome is. Browser Mod cannot control hardware so it can't put any devices to screen off mode. Browser Mod does have a light entity which can be used to simulate a dimmed screen with a dark overlay. If you do wish to have your device in a screen off state you need to be aware of issues that may arise with Browser Mod and Home Assistant losing connection if the device operating system decides to suspend the Browser/App. This is most prevalent on Android devices where Browser/App may be put into a doze state where it will ultimately be frozen. Browser Mod has no control over this. For a detailed write up of running Browser Mod with Android devices see the wiki article Android Devices 'Always On'.
Make sure to activate the Javascript Interface. The browser-mod panel will guide you through the rest of the required and suggested settings.
Browser Mod 2.0 has been rewritten ENTIRELY from the ground up. This allows it to be more stable and less resource intensive. At the same time I took the opportunity to rename a lot of things in ways that are more consistent with Home Assistant nomenclature.
In short, things are hopefully much easier now for new users of Browser Mod at the unfortunate cost of a one-time inconvenience for veteran expert users such as yourself.
Since Version 2.13.0 Browser ID can be synchronized to the logged in session. As long as you stay logged in on the device the Browser ID will not change. Use this feature by setting Sync session selection on in the Browser Mod panel for the device.
For special cases you can also set the browser ID to e.g. whatever by adding ?BrowserID=whatever (N.B. capital B) to any Home Assistant URL.
If you have used fire-dom-event it's really simple. Just change
action: fire-dom-event
browser_mod:
command: popup
title: My title
card:
type: ...etc...
to
action: fire-dom-event
browser_mod:
service: browser_mod.popup
data:
title: My title
content:
type: ...etc...
Besides removing the integration as usual, there is one extra step needed. In order to work well with Home Assistant Cast Browser Mod will add itself to your Dashboard Resources, and you will need to remove it from there manually:
After removing the default-dashboard plugin (which conflicts with Browser Mod default dashboard operation), you may need to remove the browser localStorage key isDefaultPanelManaged. Browser Mod uses this key to detect that the plugin is/was managing the default panel, and it may remain after uninstall—causing the Home Assistant repair warning to persist until it is cleared.
You can remove the isDefaultPanelManaged item from the localStorage of all registered and online Browsers by using the browser_mod.refresh service with local_storage_items set to include - item: isDefaultPanelManaged. Either use Home Assistant (Developer) tools, Actions tab and search for browser_mod.refresh, adding isDefaultPanelManaged as an item entry under local_storage_items, or create a dashboard button with action as per the example below. You can use the button above to go directly to (Developer) tools with browser_mod.refresh selected.
type: button
name: Cleanup default-dashboard plugin settings
tap_action:
action: perform-action
perform_action: browser_mod.refresh
target: {}
data:
local_storage_items:
- item: isDefaultPanelManaged
134 followers · starred Mar 2023
30 followers · starred Aug 2026
82 followers · starred Mar 2021
130 followers · starred Oct 2025
🔹 A Home Assistant integration to turn your browser into a controllable entity and media player
TypeScript
1,826
1,159 commits
updated Oct 7, 2026
What if that tablet you have on your wall could open up a live feed from your front door camera when someone rings the bell?
And what if you could use it as an extra security camera?
Or what if you could use it to play music and videos from your Home Assistant media library?
What if you could permanently hide that sidebar from your kids and lock them into a single dashboard?
What if you could change the icon of the Home Assistant tab so it doesn't look the same as the forum?
What if you could change the more-info dialog for some entity to a dashboard card of your own design?
What if you could tap a button and have Home Assistant ask you which rooms you want the roomba to vacuum?
First make sure you have completely removed any installation of Browser Mod 1
I.e. remove browser_mod: from your configuration.yaml and delete the integration from the integrations page.
Either
integrations in HACScustom_components/browser_mod/ to <your config dir>/custom_components/browser_mod/.Restart Home Assistant
Add the "Browser Mod" integration in Settings -> Devices & Services -> Add Integration or click this button:
Restart Home Assistant
Upgrade via HACS or copy new contents of custom_components/browser_mod/ to <your config dir>/custom_components/browser_mod/.
Restart Home Assistant. If you are upgrading via HACS you will get a repair item to restart Home Assistant.
After restarting Home Assistant, all Browsers will need a reload to download the latest version of Browser Mod javascript file. Version 2.4.0 includes a notification when a Browser version mismatch is detected, so from 2.4.x onwards simply clicking Reload should be sufficient. If you keep getting the notification, you may need to do a hard Browser reload SHIFT+F5 or in some cases clear your Browser cache.
Note: If you are upgrading from Browser Mod 1, it is likely that you will get some errors in your log during a transition period. They will say something along the lines of
Error handling message: extra keys not allowed @ data['deviceID'].They appear when a browser which has an old version of Browser Mod cached tries to connect and should disappear once you have cleared all your caches properly.

Here's a great overview of the functionality by Smart Home Scene.
After installing Browser Mod you should see a new panel called Browser Mod in the sidebar. This is where you control any Browser Mod settings.
Browser Mod has a number of services you can call to cause things to happen in the target Browser, such as opening a popup or navigating to a certain dashboard.
Popup cards can be used to replace the more-info dialog of an entity, or to be used as a template for browser_mod.popup service, or both! See dashboard-cards for more information.
The media_player.play_media service allows for extra configuration to be passed to the media_player entity. Browser Mod supports sending media_player popup configuration by adding a popup dictionary under extra. You can set any browser_mod.popup parameters apart from content.
To show the video player fullscreen, with no padding to the video and a black background, use the example below.
action: media_player.play_media
target:
entity_id: media_player.my_browser
data:
extra:
popup:
initial_style: fullscreen
popup_styles:
- style: all
styles: |
ha-dialog {
--ha-dialog-surface-background: black;
}
ha-dialog .container {
padding: 0px;
}
media:
media_content_id: media-source://...
media_content_type: video/mp4
It all depends on what your outcome is. Browser Mod cannot control hardware so it can't put any devices to screen off mode. Browser Mod does have a light entity which can be used to simulate a dimmed screen with a dark overlay. If you do wish to have your device in a screen off state you need to be aware of issues that may arise with Browser Mod and Home Assistant losing connection if the device operating system decides to suspend the Browser/App. This is most prevalent on Android devices where Browser/App may be put into a doze state where it will ultimately be frozen. Browser Mod has no control over this. For a detailed write up of running Browser Mod with Android devices see the wiki article Android Devices 'Always On'.
Make sure to activate the Javascript Interface. The browser-mod panel will guide you through the rest of the required and suggested settings.
Browser Mod 2.0 has been rewritten ENTIRELY from the ground up. This allows it to be more stable and less resource intensive. At the same time I took the opportunity to rename a lot of things in ways that are more consistent with Home Assistant nomenclature.
In short, things are hopefully much easier now for new users of Browser Mod at the unfortunate cost of a one-time inconvenience for veteran expert users such as yourself.
Since Version 2.13.0 Browser ID can be synchronized to the logged in session. As long as you stay logged in on the device the Browser ID will not change. Use this feature by setting Sync session selection on in the Browser Mod panel for the device.
For special cases you can also set the browser ID to e.g. whatever by adding ?BrowserID=whatever (N.B. capital B) to any Home Assistant URL.
If you have used fire-dom-event it's really simple. Just change
action: fire-dom-event
browser_mod:
command: popup
title: My title
card:
type: ...etc...
to
action: fire-dom-event
browser_mod:
service: browser_mod.popup
data:
title: My title
content:
type: ...etc...
Besides removing the integration as usual, there is one extra step needed. In order to work well with Home Assistant Cast Browser Mod will add itself to your Dashboard Resources, and you will need to remove it from there manually:
After removing the default-dashboard plugin (which conflicts with Browser Mod default dashboard operation), you may need to remove the browser localStorage key isDefaultPanelManaged. Browser Mod uses this key to detect that the plugin is/was managing the default panel, and it may remain after uninstall—causing the Home Assistant repair warning to persist until it is cleared.
You can remove the isDefaultPanelManaged item from the localStorage of all registered and online Browsers by using the browser_mod.refresh service with local_storage_items set to include - item: isDefaultPanelManaged. Either use Home Assistant (Developer) tools, Actions tab and search for browser_mod.refresh, adding isDefaultPanelManaged as an item entry under local_storage_items, or create a dashboard button with action as per the example below. You can use the button above to go directly to (Developer) tools with browser_mod.refresh selected.
type: button
name: Cleanup default-dashboard plugin settings
tap_action:
action: perform-action
perform_action: browser_mod.refresh
target: {}
data:
local_storage_items:
- item: isDefaultPanelManaged
134 followers · starred Mar 2023
30 followers · starred Aug 2026
82 followers · starred Mar 2021
130 followers · starred Oct 2025