Satellite internet

Was it the dish, or the Wi-Fi?

A satellite link fails in its own ways. A second lost to a tree, a ping that never drops below 600 ms, a data allowance gone by the 12th. Kilobat measures your router and the internet from your Mac to help you narrow down the cause.

Download for Mac ↓
brew install seifip/kilobat/kilobat
  • Free forever
  • Pro $29 once
  • 14-day refunds
  • macOS 14+
  • Open-source CLI
Pro

Getting warmer. Keep going.

This Mac−48 dBm
Router2 ms
Internet24 ms
DNS212 ms

DNS lookups are slow. Compare Cloudflare or Google DNS, then restore Automatic if it does not help.

Sound familiar?

Seven links, one of them in orbit.

A satellite connection is the usual chain with a very long middle. Kilobat measures what it can reach from your Mac, and on Starlink it reads the dish too.

  1. Your MacOther apps uploading, a VPN in the way
  2. Wi-FiSignal, noise and a crowded channel
  3. RouterKilobat pings it, so the Wi-Fi is measured apart
  4. Dish or modemOn Starlink, Kilobat reads the dish’s own status
  5. SatelliteObstructions, rain, handovers
  6. Ground stationThe dish’s ping to it, on Starlink
  7. InternetLatency, jitter and loss past your router

What goes wrong on a satellite link.

Satellite links fail differently from cable or fibre. Low-orbit services like Starlink drop for seconds at a time; geostationary ones like Viasat and HughesNet are slow to answer all the time. Both may come with data rules. Some plans also use a shared IPv4 address.

  1. A call freezes for a second or two, a few times an hour

    Obstructions, weather or other network events can interrupt a connection. A speed test can average over brief drops.

    After each call, a report card names every freeze. On Starlink it checks the dish’s log for a blocked sky, no satellite in view or a restart before it looks at your Wi-Fi. Pro

  2. Game ping jumps every 15 seconds on Starlink

    Researchers observed a 15-second reconfiguration cycle at :12, :27, :42 and :57 past each minute. The schedule and its effects may change.

    The stutter test pings every 50 ms for 20 seconds and says when the spikes land on those seconds. Free

  3. Ping never drops below 500 ms

    A geostationary orbit, 35,786 km up. On Viasat or HughesNet that’s normal, not a fault.

    Router and internet latency side by side help you distinguish Wi-Fi trouble from delay beyond your router. Game-server ping shows each region’s round trip before you queue. Free

  4. The internet is gone for minutes

    The dish, the satellite or the provider, or your own router.

    History logs each outage with whether your router kept answering. On Starlink, the dish’s own log sorts it into your setup, Starlink’s network or a restart. Pro

  5. The data allowance runs out before the month does

    Updates, photo sync, backups and video, all assuming unlimited data.

    Live usage for every app is free. Mark the network metered, and updaters wait, Travel holds back the rest and a budget starts over on your billing day. Pro

  6. You can’t host a game, open a port or reach home from outside

    CGNAT. Many customers share one public IPv4 address, and nothing outside can open a connection in.

    kilobat ip --public shows the address the internet sees, to compare with your router’s. Kilobat doesn’t test for CGNAT itself. Free

  7. The VPN is slow or won’t connect

    A VPN adds its own trip. Viasat says VPNs on its service may be slow or not work at all.

    Health shows whether the VPN carries everything, some traffic or nothing. Each speed test records the VPN it went through, so you can compare two tests. Free

  8. Slack or Zoom won’t load, everything else does

    An outage at that service, not your dish.

    Kilobat reads the service’s status page and says “down for everyone, not you” only when its page says so. Free

How to read a satellite link’s history.

History › Where the delay starts plots two lines: your router and the internet. Kilobat checks about once a minute in the background, and more often while Health is open. Drops of a few seconds fall between those checks; call reports, the stutter test and, on Starlink, the dish’s own log catch them.

  1. Both lines low

    A healthy low-orbit link.

    Starlink reports a median of 25.7 ms at peak hours across its US customers, as of June 2025. Your Wi-Fi adds a little on top.

  2. Internet flat near 600 ms

    A healthy geostationary link.

    Health’s tips will call the path past the router slow, since they’re set for land lines. That’s the orbit. Watch for changes from the usual level instead.

  3. Internet spikes, router flat

    The satellite side.

    Handovers, an obstruction, rain or a busy cell. The delay appears beyond your router, though the checks cannot pinpoint its cause. Run the stutter test to see whether the spikes repeat.

  4. Router high or jumpy

    Your Wi-Fi.

    Weak signal, a crowded channel or a busy router. Fix this first; it adds to every trip, satellite or not.

  5. Outage, router answering

    Beyond your home.

    The dish, the satellites or the provider may be involved. Outage credit counts only outages with enough checks to identify the provider side; a responding router alone is not conclusive.

    Pro
  6. Outage, router silent

    Your side.

    The router, its power or the Wi-Fi. On Starlink, a dish restart shows in the dish’s own log.

    Pro

Starlink

On Starlink, Kilobat reads the dish.

The dish keeps a map of the sky and a log of every outage with its cause. Kilobat reads both on your own network, read-only, and turns them into sentences you can act on, such as “Blocked to the north-east, low in the sky, like a tree.”

  • Status, ping to Starlink’s ground station and alerts, free.
  • Each outage sorted into your setup, Starlink’s network or a dish restart, with Pro.
  • On a capped Roam plan, one tap marks the network metered.

Kilobat for Starlink has the rest.

Kilobat’s Starlink panel in Health: ground-station ping 31 ms, 0.4% ping loss, a snow-melt alert, the sky map with 2.1% obstructed, and outages for the last 24 hours split into your setup, Starlink’s network and dish restarts

Calls and games

A freeze gets a cause.

During a Zoom, Teams, FaceTime or Meet call, Kilobat pings your router and the internet once a second. Two seconds lost in a row, or a ping 200 ms over the call’s usual, counts as a freeze, and each freeze gets a cause. On a satellite link that’s often beyond your router, and the card says so instead of blaming your Wi-Fi.

  • The stutter test can show short spikes that a speed test averages away. Timing alone does not establish their cause.
  • Game-server ping lists each region’s round trip, jitter and loss.
  • After an SSH session that lagged on Starlink, the report suggests Mosh.
A Kilobat call report: Zoom call, 41 minutes, 2 freezes, one when something blocked the Starlink dish’s view of the sky and one on Starlink’s side with no satellite in view

Data caps

Make the allowance last the month.

Starlink Roam and Priority plans, Viasat Essentials and HughesNet’s Priority Data all run out or slow down. Kilobat shows which app used the data, holds updaters back on metered networks and stops new connections when your budget is spent.

Terminal
# Treat the satellite link as metered
$ kilobat networks cost metered
# A 100 GB budget that starts over on the 14th
$ kilobat limit 100 --cycle monthly --reset-day 14
# Which updaters are waiting
$ kilobat updaters

Kilobat’s own speed tests use 80 MB at most and skip metered networks unless you start one. Put your provider’s usage figure beside Kilobat’s in History › Compare with your router or provider.

Pro
3.6 GBof 5 GB this month
Starts over on the 14th, like your plan
Cloud backup1.6 of 2 GB uploaded
Night Drive310 MB of 1 GB

Budgets that work like your plan. Start over daily, weekly or on the day it renews, and give any app its own quota, or one just for uploads.

Pro
Your provider44.2 GB
Kilobat41.8 GB
Difference2.4 GB less
Recorded 668 of 720 hours · asleep, off or on other networks for the rest
  • Phones and TVs on the same plan
  • The provider’s day starts at midnight UTC

Your provider says more? Put their figure beside Kilobat’s for the same period, with the hours Kilobat recorded and the likely reasons for a difference.

CGNAT, and what it breaks.

Some satellite plans share public IPv4 addresses between customers, behind carrier-grade NAT (CGNAT). Going out works as usual. Coming in doesn’t: nothing on the internet can open a connection to your home over IPv4. That breaks port forwarding, hosting a game lobby or a Minecraft server, and reaching a camera, NAS or Plex at home from outside.

To check, look up your router’s internet (WAN) address and compare it with the one kilobat ip --public reports, asked from Cloudflare. If they differ, there may be another layer of NAT, including CGNAT or a VPN. A router WAN address in 100.64.0.0/10 indicates shared address space; ask your provider if you need to confirm CGNAT. Workarounds: IPv6 where both ends have it, a relay such as Tailscale, or a plan with a public address.

What’s free, and what Pro adds

Free, for good

  • Live upload and download for every app
  • Router and internet latency, jitter and loss, now
  • The stutter test and game-server ping
  • On Starlink: the dish’s status, alerts and sky map
  • Marking a network metered; speed tests skip it
  • Whether a service is down for everyone
  • A report for your provider
  • kilobat health-history, starlink, ip and the rest of the CLI

Pro, $29 once

  • History of router and internet latency, with outages
  • Call reports that name each freeze’s cause
  • On Starlink: outages by side, and which way the dish is blocked
  • Travel and paused updaters on metered networks
  • Budgets that start over on your billing day
  • Outage credit, and the dish’s log in the report on Starlink

Pro is $29 once for two Macs, with a 7-day free trial and 14-day refunds. Free for students.

Questions

Does Kilobat work with Viasat, HughesNet or OneWeb?

Yes, like any connection. It measures your router and the internet from your Mac, records outages and counts data by app. Only Starlink’s dish can be read directly, because it answers on your network the way the Starlink app reads it.

Why does Kilobat say my internet is slow on Viasat?

Its tips are set for land lines, where 120 ms is a lot. On a geostationary link, about 600 ms is normal. Look at the history for changes from that level, and at the router line for your Wi-Fi.

Will Kilobat use my satellite data?

Very little. Its checks are pings and small requests. Speed tests use 80 MB at most and are skipped on metered networks unless you start one, and the scheduled plan check never runs on a metered network.

Can Kilobat tell me if I’m behind CGNAT?

Not by itself. It shows the public address the internet sees, with kilobat ip --public or the setting Look up public IP. Compare that with your router’s internet address.

Why doesn’t the history show a two-second drop?

Background checks run about once a minute, so the history catches drops of a minute or more. Short drops show in call reports, the stutter test and, on Starlink, the dish’s own outage log.

Is it free?

Live usage, latency, the stutter test, game-server ping, the Starlink dish’s status and the whole CLI are free. History, call-freeze causes, Travel and budgets are part of Kilobat Pro, $29 once, with a 7-day free trial.

See which link failed, and when.

Download for Mac ↓
brew install seifip/kilobat/kilobat