Is Starlink good for a homelab? A verdict from five tests

On the one home Starlink connection tested, packets of 1500 bytes crossed over IPv4 and IPv6 in October 2026, and round trips over IPv4 spiked at four set seconds each minute in one of two one-hour tests, with 901 of 143,462 pings lost over both; the ways around carrier-grade NAT (CGNAT), such as a tunnel that starts inside your network, aren't tested here. Not for serving the internet directly over IPv4 without a public IPv4 address, though: from a VPS in October 2026, none of 8 ports answered on that connection's public IPv4 address, and a trace from inside fits CGNAT without proving it; under CGNAT, a port forward on your own router can't receive those connections. Each result comes from one home connection, behind its home router, in October 2026; inbound IPv6 isn't tested here either.

By Rowan Hale · Published

Promo: $100 off Starlink with my referral link

If you've never been a Starlink customer and you order an eligible Residential or Roam plan through my link, we both get Starlink's reward for your country. In the US, that is a $100 credit on your second monthly bill, and I get $100 too. Use my referral link

What a homelab needs, and what the tests found

Every result below comes from one of the site's three guides, which give the commands, the output and the limits in full.

What a homelab needs What was tested Result Where the evidence stops Guide
Reach a server at home from the internet over IPv4 From a VPS, one TCP connection to each of 8 ports on the home connection's public IPv4 address, 6 seconds each, no port forward set up none answered doesn't show where the connections stopped From outside
Know whether the public IPv4 address is shared (CGNAT) a trace of the route out from a computer on the home network a private address in Starlink's network came before the first public one the second hop didn't answer, so it fits CGNAT and doesn't prove it The trace
Open outbound connections on the mail and file-sharing ports outbound TCP over IPv4 to a public port-test server, 10-second timeout 25 and 445 timed out; 465, 587, 80 and 8080 connected where 25 and 445 were dropped isn't known Outbound ports
Carry a tunnel's packets 1500-byte pings with don't-fragment set to three public test hosts, over IPv4 and IPv6 every ping reached its host and came back nothing larger could be tested; no tunnel ran Path MTU
A steady connection for remote access pings five a second to two public DNS resolvers per address family, two one-hour sittings IPv4 spiked at 12, 27, 42 and 57 seconds past the minute in one sitting; 901 of 143,462 pings lost over both whole-millisecond readings, two hours on one connection Ping spikes
Reach a server at home over IPv6 not tested Not tested yet

From outside, nothing answered on the public IPv4 address

In October 2026, a script on a VPS tried one TCP connection to each of 8 ports on the home connection's public IPv4 address, including 22, 80 and 443, and waited 6 seconds for each. None answered. Before that, the script checked itself against targets with known answers, and no port forward was set up for the test.

From inside, a trace from a computer on the home network passed a private address in Starlink's network before the first public one. That fits carrier-grade NAT (CGNAT), which RFC 6888 describes as a function in the provider's network that shares one IPv4 address among several subscribers (section 2, checked October 2026). The second hop didn't answer, so the trace doesn't prove it.

Subscribers have "limited or no control" over a carrier-grade NAT, the RFC says, so under CGNAT a port forward on your own router can't receive connections sent to the public IPv4 address. Where the outside test's connections stopped isn't known, though, and CGNAT and a home router that drops connections nobody inside asked for would both look the same from the VPS. Page 1 has the outside test and the trace in full.

Outbound ports 25 and 445 timed out

From a computer on the home network, TCP connections over IPv4 to a public server set up for port tests timed out on port 25 (SMTP) and port 445 (SMB), each after 10.3 seconds. Ports 465 and 587, the mail submission ports, connected, and so did 80 and 8080.

Where 25 and 445 were dropped isn't known: at the home router, in Starlink's network or in the test server's own network. The test server uses port 25 for one of its own services, so that port isn't the same test as the others. Details are in the outbound ports section of page 1.

1500-byte packets crossed over IPv4 and IPv6

In two reads a few minutes apart in October 2026, 1500-byte pings with don't-fragment set went from a wired computer on the home network to three public test hosts and back, over IPv4 and over IPv6, and no hop reported a smaller MTU. Nothing larger could be tested, because the computer's own link MTU is 1500 bytes.

No tunnel ran. A tunnel adds its own headers to every packet: WireGuard's Linux driver counts 80 bytes of them and starts a new interface at 1420 bytes (device.c, Linux 6.18, checked October 2026). The Path MTU guide's tunnels section gives that arithmetic and Tailscale's, and none of it was tested on this connection.

In one of two hours, IPv4 round trips spiked at four set seconds

Pings went five times a second from a wired computer on the home network to two public DNS resolvers per address family, for an hour at a time, in two sittings in October 2026. In the second sitting, round trips over IPv4 changed most, and spiked, at 12, 27, 42 and 57 seconds past the minute. In the first sitting, and over IPv6, the test's rule found no such pattern.

Of 143,462 pings over both sittings, 901 went unanswered. Those sent at the four seconds were lost 1.9 times as often as those sent at other seconds.

Researchers who measured Starlink from several locations report changes at the same four seconds, and the explanation for them is theirs; the latency guide cites them. Round trips were read in whole milliseconds, so a step of a millisecond or two can go unseen, and the test covers one connection in two hours. No game, call or remote desktop was tested.

Ways around CGNAT, not tested here

Ways around CGNAT, each from its own documentation and none tested here, are on the leaving a wired ISP page, and what Starlink's help pages say about a public IPv4 address is on the plans and prices page. Starlink's Acceptable Use Policy, in its October 2026 version, doesn't mention running a server. A TCP relay through a cloud VM is tested on the game server page.

Prices and offers have their own pages

Each plan's monthly price figure, and what separates the plans, are on the plans and prices page. Starlink's offers and the $100 referral credit are on the offers and credits page. Whether you can install it yourself is on the installation page and whether you can change plans later on the plan change page.

Whether you can get Starlink in an apartment is on the apartment page.

What these tests don't show

Inbound IPv6. No test tried to reach a server at home over IPv6.

Any way around CGNAT, such as a tunnel that starts inside your network.

Upload speed and data use.

Weather, power cuts and uptime over weeks.

Other connections, other routers, and the Starlink router's bypass mode.

Promo: $100 off Starlink with my referral link

If you've never been a Starlink customer and you order an eligible Residential or Roam plan through my link, we both get Starlink's reward for your country. In the US, that is a $100 credit on your second monthly bill, and I get $100 too. Use my referral link

Sources

  1. RFC 6888: Common Requirements for Carrier-Grade NATs (CGNs), IETF, accessed
  2. Cloudflare Tunnel, Cloudflare, accessed
  3. Acceptable Use Policy (US), Starlink, accessed
  4. drivers/net/wireguard/device.c, Linux 6.18, Linux kernel, accessed
  5. Does Starlink have a referral program?, Starlink, accessed
  6. Referral Program Terms (US), section 4.1, Starlink, accessed

Retest log