- Ping (ms) – Network latency
- Download (Mbit/s)
- Upload (Mbit/s)
- Jitter (ms) – Network stability
- Bufferbloat Grade – Latency stability rating (A+ to F)
- Download/Upload Plan Compliance (%) – Speed vs. ISP rated plan
- Last Test – Timestamp of the last successful test
- Server – Name and location of the test server
- ISP – Detected Internet Service Provider
- Automatically select the closest server
- Choose from the 10 nearest servers
- Manually specify a server ID
- Optional fallback to closest server if a specified server is temporarily unavailable
- Optional source interface binding for the speedtest CLI
- Optional source IP binding for the speedtest CLI
- Precise Scheduling: Run tests at a specific time (e.g., "every hour on the hour")
- Automatic testing at a configurable interval
- Manual-only mode for on-demand testing
- Full UI-based setup and reconfiguration
- Clear descriptions for every option
- Automatic integration reload on configuration changes
- No YAML required
- Run tests on demand via:
service: ookla_speedtest.run_speedtest- Optionally pass
entity_id(recommended for cards) ordevice_idto run one configured test; if omitted, the service runs all configured tests.
This integration is designed to be installed via HACS.
- Go to HACS → Integrations → ⋮ → Custom repositories
- Add:
https://github.com/soulripper13/hass-speedtest-ookla - Category: Integration
- Search for Ookla Speedtest in HACS
- Click Download
- Go to Settings → System → Restart
- Go to Settings → Devices & Services → Add Integration
- Search for Ookla Speedtest
All configuration is handled through the Home Assistant UI.
- Closest server (automatic)
- Select from 10 nearest servers
- Manual server ID
Tip: Server IDs can be found at
https://www.speedtest.net/speedtest-servers-static.php
- Required only when manual mode is selected
- Optional
- Only applies when using a specific server ID
- Each test still tries the configured server first
- If Ookla reports that server unavailable, the integration retries with the closest server for that run
- Optional
- Bind the test command to a specific local network interface, such as
eth0orwlan0
- Optional
- Bind the test command to a specific local source IP address, such as
192.168.1.10
- Enabled: Tests run only when triggered manually
- Disabled: Tests run automatically
- Default: Enabled
- How often to run automatic tests
- Configurable via Duration Selector (e.g., 1 hour, 30 minutes)
- Default: 24 hours
- Note: Lower values consume more bandwidth.
- Optional: Set a specific time for the schedule to start (e.g.,
14:00:00) - Useful for aligning tests (e.g., set Start Time to
00:00:00and Interval to1 hourto run exactly on the hour)
- Go to Settings → Devices & Services
- Select Ookla Speedtest
- Click Configure
- Update options
- Integration reloads automatically
The integration creates a comprehensive set of sensors. Some are enabled by default, while others can be enabled via the Home Assistant UI.
sensor.ookla_speedtest_download(Mbps)sensor.ookla_speedtest_upload(Mbps)sensor.ookla_speedtest_ping(ms)sensor.ookla_speedtest_jitter(ms)sensor.ookla_speedtest_bufferbloat_grade(A-F)sensor.ookla_speedtest_ispsensor.ookla_speedtest_serversensor.ookla_speedtest_last_testsensor.ookla_speedtest_result_url
Bufferbloat grades are based on the additional latency under load: A+ (0-5 ms), A (6-30 ms), B (31-60 ms), C (61-120 ms), D (121-300 ms), E (301-600 ms), and F (over 600 ms).
Go to Integration Settings → Entities to enable these.
Latency Metrics:
sensor.ookla_speedtest_ping_low(Idle Min)sensor.ookla_speedtest_ping_high(Idle Max)sensor.ookla_speedtest_ping_during_download(Avg)sensor.ookla_speedtest_ping_low_during_download(Min)sensor.ookla_speedtest_ping_high_during_download(Max)sensor.ookla_speedtest_ping_during_upload(Avg)sensor.ookla_speedtest_ping_low_during_upload(Min)sensor.ookla_speedtest_ping_high_during_upload(Max)
Stability & Compliance:
sensor.ookla_speedtest_download_percent(Plan Compliance %)sensor.ookla_speedtest_upload_percent(Plan Compliance %)sensor.ookla_speedtest_jitter_during_download(ms)sensor.ookla_speedtest_jitter_during_upload(ms)
Run a speed test every day at midnight:
automation:
- alias: Daily Speedtest
trigger:
- platform: time
at: "00:00:00"
action:
- service: ookla_speedtest.run_speedtestThis integration includes beautiful, custom Lovelace cards that work out of the box - no external dependencies required!
The cards have been completely redesigned with a modern Glassmorphism aesthetic, featuring:
- 🌫️ Frosted Glass Effect: Semitransparent backgrounds with blur
- 🌈 Gradient Gauges & Charts: Beautiful, smooth color transitions
- 📱 Responsive Layouts: Looks great on mobile and desktop
- 🖱️ Visual Editor: Configure settings directly in the UI!
Cards are automatically registered when Home Assistant starts!
- Install the integration
- Restart Home Assistant
- Go to your Dashboard → Edit Dashboard → Add Card
- Search for "Ookla"
- Select a card and configure it visually!
Note: If cards don't appear immediately, you can force registration by calling the
ookla_speedtest.register_card_resourcesservice in Developer Tools, or simply refresh your browser cache.
The Ookla Speedtest Card now supports the visual editor! You can easily adjust:
- Max Download Speed (for gauge scaling)
- Max Upload Speed (for gauge scaling)
No YAML required! Just add the card and use the form.
# Minimal YAML example if you prefer code
type: custom:ookla-speedtest-card
max_download: 1000
max_upload: 500If you prefer building cards from existing components, here's an example using apexcharts-card and layout-card:
Required: Install apexcharts-card, layout-card, and card-mod via HACS.
type: custom:layout-card
layout_type: custom:vertical-layout
layout:
width: 320
card_margin: 0px
cards:
- type: custom:apexcharts-card
chart_type: radialBar
header:
show: true
title: Speedtest
series:
- entity: sensor.ookla_speedtest_download
name: Download
min: 0
max: 1000
- entity: sensor.ookla_speedtest_upload
name: Upload
min: 0
max: 500- Setup fails: Check logs at Settings → System → Logs
- Configure button error: Fixed in v2.0.0
- No server list: Try closest server or manual ID
- Card not displaying: Ensure required custom cards are installed
logger:
default: info
logs:
custom_components.ookla_speedtest: debugThis project is developed and maintained in spare time and is provided free to the community.
If you find it useful and would like to support ongoing development, maintenance, and improvements, any contribution is appreciated — but never required ❤️
-
PayPal https://paypal.me/SKatoaroo
-
Bitcoin (BTC)
bc1qvu8a9gdy3dcxa94jge7d3rd7claapsydjsjxn0 -
Solana (SOL)
4jvCR2YFQLqguoyz9qAMPzVbaEcDsG5nzRHFG8SeaeBK
You can also help by:
- Reporting bugs
- Submitting pull requests
- Suggesting features
- Helping other users
- Starring the repository ⭐
Thank you for being part of the community.




