Apart from the webpage card, is there a card that lets me pull bookmarks (a file containing URLs) from an external source?
The webpage card introduces a scroll bar which makes it unsuitable.
Apart from the webpage card, is there a card that lets me pull bookmarks (a file containing URLs) from an external source?
The webpage card introduces a scroll bar which makes it unsuitable.
Hard to advice not knowing what exactly you want to achieve… perhaps some screenshot of you got and is not working for you (scrollbars you mentioned)? What is the source of your bookmarks?
Now, without these details I see few options:
card_mod:
style: |
ha-card {
overflow-y: hidden !important;
padding-top: 0px;
padding-botton: 0px;
}
Thanks, I like to replicate in HA something similar to my Newt Chrome Extension where beside each icon is a clickable URL, and yes, I can make the data available
Thanks again
Yes, JSON or XML are the best formats, as these can be directly read into sensor or sensor attribute. Below are two examples of how I use markdown card to display dynamic data.
Fingbox sensor I use to display list of of all network devices in my LAN with their statuses. It is read as JSON via API from Fingbox, parsed to attribute of sensor and then displayed by markdown card. Here is source JSON as read from Fingbox via API:
{
"networkId": "wifi-C8B373606577",
"devices":
[
{
"mac": "A0:A3:B3:21:C1:60",
"ip":
[
"192.168.52.170"
],
"state": "DOWN",
"name": "Buderus",
"type": "SMART_HOME",
"make": "Espressif",
"model": "ESP32",
"first_seen": "2024-04-28T14:36:08.530Z",
"last_changed": "2025-09-05T10:13:02.747Z"
},
{
"mac": "B8:27:EB:0E:A3:EF",
"ip":
[
"192.168.52.55"
],
"state": "UP",
"name": "Volumio LAN",
"type": "WIFI_EXTENDER",
"make": "Apple",
"model": "AirPort",
"first_seen": "2021-01-05T09:47:34.129Z",
"last_changed": "2025-09-04T19:02:29.349Z"
},
{
"mac": "30:C6:F7:84:B7:74",
"ip":
[
"192.168.52.66"
],
"state": "UP",
"name": "Shelly Driveway",
"type": "SMART_HOME",
"make": "Shelly",
"model": "Shelly Pro 2",
"first_seen": "2022-06-11T08:20:40.529Z",
"last_changed": "2025-05-17T13:51:18.152Z"
},
{
"mac": "50:14:79:1A:AC:5E",
"ip":
[
"192.168.52.105"
],
"state": "UP",
"name": "Roomba i7+",
"type": "CLEANER",
"make": "iRobot",
"model": "Roomba",
"first_seen": "2020-04-07T12:18:38.291Z",
"last_changed": "2025-08-10T11:27:39.206Z"
},
{
"mac": "C4:D8:D5:0D:A2:E8",
"ip":
[
"192.168.52.76"
],
"state": "UP",
"name": "Shelly Coffee Table",
"type": "SMART_HOME",
"make": "Shelly",
"model": "Shelly Dimmer",
"first_seen": "2025-04-27T14:32:36.631Z",
"last_changed": "2025-08-22T18:19:06.683Z"
},
...
{
"mac": "14:49:BC:51:8C:CC",
"ip":
[
"192.168.52.18"
],
"state": "UP",
"name": "Mesh Node (Ground Floor)",
"type": "WIFI",
"make": "DrayTek",
"model": "VigorAP 903",
"first_seen": "2022-09-24T18:45:42.817Z",
"last_changed": "2024-08-14T14:06:59.414Z"
}
]
}
Here is code of sensor I use to read this data:
sensor:
- platform: rest
name: all_network_devices
resource: http://192.168.52.59:49090/1/devices?auth=rKHYN9LNQ4yFQFnkyXmIGjzt
value_template: >-
{{ value_json.networkId }}
json_attributes:
- devices
scan_interval: 10
And sensor state in HA:
Now, I use markdown card to display this data in dashboard. Here is the code for markdown I use (please note |—|—| code I use. for displaying data in table:
type: markdown
title: ""
content: >-
||||||||||
|---|---|---|---|---|---|---|---|---|
|<font color=white><b>State|<font color=white><b>IP Address|<font
color=white><b>Device Name|<font color=white><b>MAC Address|<font
color=white><b>Type|<font color=white><b>Make|<font color=white><b>Model|<font
color=white><b>Last Changed|
{% set devices=state_attr('sensor.new_network_devices', 'details') |
sort(attribute='order') %}
{%- for i in range(state_attr('sensor.new_network_devices', 'details') |
count) -%}
|{{ "<font color=#F03A3E>" if devices[i].state == 'DOWN' else "<font
color=#3BCC64>" }}<ha-icon icon="mdi:circle-medium"></ha-icon>|{{
devices[i].ip + ' ' }}|{{ devices[i].name + ' ' }}|{{
devices[i].mac + ' ' }}|{{ devices[i].type + ' ' }}|{{
devices[i].make | default("N/A") + ' ' }}|{{ devices[i].model |
default("N/A") + ' ' }}|{{ devices[i].last_changed }}|
{% endfor %}
And here is final result in dashboard:
Note the LED light in from of each item, with is icon and its color is dynamic, depending on state.
So, if you have your bookmarks available somehow as JSON (via REST API or as a file) it should be easily readable into sensor and in similar way transformed to table of bookmarks. Few notes: