← All articles
MONITORING Speedtest Tracker: Monitor Your Internet Speed Over ... 2026-02-09 · speedtest · network · monitoring

Speedtest Tracker: Monitor Your Internet Speed Over Time

Monitoring 2026-02-09 speedtest network monitoring internet

Speedtest Tracker runs automated internet speed tests on a schedule and graphs the results over time. Instead of occasionally running a speed test when things feel slow, you get a continuous record of your connection's actual performance — useful for catching ISP issues, verifying you're getting what you pay for, and correlating slowdowns with specific times of day.

Why Track Speed?

A single speed test tells you very little. Your internet speed varies by:

Historical data turns complaints to your ISP from "my internet feels slow" into "my download speed has dropped 40% during evening hours for the past two weeks, here's the graph."

Installation

# docker-compose.yml
services:
  speedtest:
    image: lscr.io/linuxserver/speedtest-tracker:latest
    container_name: speedtest
    ports:
      - "8765:80"
    volumes:
      - speedtest_data:/config
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=America/Los_Angeles
      - DB_CONNECTION=sqlite
      - SPEEDTEST_SCHEDULE="0 */4 * * *"
      - DISPLAY_TIMEZONE=America/Los_Angeles
    restart: unless-stopped

volumes:
  speedtest_data:
docker compose up -d

Access the dashboard at http://your-server:8765. Default login is [email protected] / password — change this immediately.

Configuration

Test Schedule

The SPEEDTEST_SCHEDULE environment variable accepts cron expressions:

Each test consumes roughly 100-500 MB of bandwidth depending on your speed. On metered connections, keep the frequency low.

Speedtest Server Selection

By default, Speedtest Tracker auto-selects the nearest Ookla server. You can pin a specific server for consistent results:

  1. Find your preferred server ID at speedtest.net/speedtest-servers
  2. Set SPEEDTEST_SERVERS environment variable to the server ID

Pinning a server eliminates variability from server selection, making your historical comparisons more meaningful.

Thresholds and Alerts

Configure alert thresholds in the web UI under Settings → Notifications:

Alerts can be sent via:

Database Options

SQLite works fine for personal use. For multi-year data retention or heavy querying:

environment:
  - DB_CONNECTION=mysql
  - DB_HOST=mariadb
  - DB_PORT=3306
  - DB_DATABASE=speedtest
  - DB_USERNAME=speedtest
  - DB_PASSWORD=your-password

Reading Your Data

The Dashboard

The main dashboard shows:

What to Look For

Consistent speed drops at specific times — ISP congestion. Common during 7-11 PM in residential areas. If your 500 Mbps plan drops to 100 Mbps every evening, you have evidence for your ISP.

Gradual degradation over weeks — Could indicate network equipment issues, ISP routing changes, or infrastructure problems. Check if it correlates with your modem/router uptime.

Sudden permanent drop — ISP plan change, hardware failure, or configuration issue. Check your modem's signal levels (SNR, power levels) for cable connections.

High jitter with normal speeds — Often indicates WiFi interference, network congestion, or bufferbloat. Try testing with a wired connection to isolate.

Upload much worse than download — Normal for most consumer connections (asymmetric). But if upload drops disproportionately, it may indicate upstream channel issues.

Exporting Data

Speedtest Tracker supports CSV export from the web UI. Useful for:

Network Placement

Where you run Speedtest Tracker matters:

Wired Connection (Best)

Run it on a server with a direct ethernet connection to your router. This measures your actual internet speed without WiFi variables.

WiFi Connection

Tests include WiFi performance, which may be useful if most of your devices use WiFi, but makes it harder to isolate ISP issues vs. local network issues.

Behind a VPN

If your server routes through a VPN, speed tests measure VPN performance, not raw internet speed. Run tests on a non-VPN interface or use split tunneling.

Complementary Tools

Smokeping

While Speedtest Tracker measures throughput, Smokeping monitors latency continuously:

Together, they give a complete picture of your internet health.

Grafana Integration

For advanced visualization, export Speedtest Tracker data to Grafana via its API or database:

SELECT created_at, download, upload, ping
FROM speedtest_results
ORDER BY created_at DESC;

Bandwidth Considerations

Rough monthly bandwidth usage by test frequency:

Frequency Tests/Month ~Bandwidth Used
Every 4h 180 18-90 GB
Every 2h 360 36-180 GB
Every 1h 720 72-360 GB
Every 30m 1440 144-720 GB

The range depends on your connection speed — faster connections transfer more data per test. On a capped plan, stick with every 4-6 hours.

Verdict

Speedtest Tracker is a low-effort, high-value addition to any self-hosted setup. A single Docker container, a few MB of RAM, and you have a permanent record of your internet performance. The data pays for itself the first time you need to call your ISP about speed issues — "my connection drops to 30% of its advertised speed every evening between 8 and 10 PM" is a much more effective complaint than "it's slow sometimes."

Start with tests every 4 hours and adjust based on how much detail you need and how much bandwidth you can spare.