dnsglobe: The DNS Propagation Checker That Turns “It Depends” Into a Live System

A Rust terminal app that watches 34 global resolvers, groups equivalent answers, decodes stale cache states, and reveals where anycast traffic really lands.

9 min read • View on GitHub • More from 514-labs

A terminal window contains a small globe-like control room, with resolver markers spread across the world and several answer states arriving at different times. The image explains that dnsglobe treats DNS propagation as a live distributed system instead of a single lookup result.
The globe is not decoration. It is the interface for watching DNS converge across a distributed resolver map.
Key Takeaways

DNS tools often lie by simplification. They show a green check or a red X, as if every resolver on earth should agree at the same instant. dnsglobe starts from a more honest premise: DNS changes spread through a messy network of caches, resolver policies, anycast hops, and TTL boundaries.

That makes the tool interesting before you even get to the globe. The project, built by 514-labs, uses a terminal UI to watch 34 public resolvers in parallel and then explains what kind of disagreement you are actually seeing. It is less a lookup utility than a convergence debugger.

DNS propagation is not a single moment

The phrase “DNS propagation” is convenient, but it hides the real mechanism. A record change does not land everywhere at once. Resolvers keep old answers until their caches expire, some upstreams lag, and some providers return different results because the zone itself is deliberately varied by round-robin or GeoDNS.

SituationNaive checkerdnsglobe
Round-robin rotationLooks like conflicting dataRecognizes equivalent answer groups
TTL expiryShows an old record without contextFlags stale state and why it is stale
Anycast routingTreats the resolver as a black boxTries to identify the actual POP
Cutover monitoringOne-off lookupWatch mode until convergence

Think dnschecker.org / whatsmydns.net, but in your terminal, with watch mode: start a check and it re-polls until the record has propagated everywhere.

Nicolas Joseph, Author / CTO at 514-labs · 514-labs/dnsglobe: Global DNS propagation checker TUI

What dnsglobe actually measures

The core unit is not the resolver alone. It is the resolver plus the answer it returned, the time it returned it, and whether that answer is still considered fresh. The app fans out to global vantage points, then classifies each response into a small number of meaningful states: records, no records, servfail, or error.

The measurement model is the article. The globe is just the skin on top of it.

That distinction matters because timeouts do not mean the same thing as bad data. In dnsglobe, a timeout is not counted the way a stale response is counted. That lets the tool distinguish between missing evidence and actual disagreement.

enum QueryResult {
    Records(Vec<String>),
    NoRecords,
    ServFail,
    Error(String),
}

// Timeouts are tracked separately from real DNS states.
// That keeps convergence math honest.

Why answer grouping matters more than a raw list of IPs

Three resolver outputs are shown close up, and two differently ordered IP lists are collapsed into the same answer group. A TTL clock and stale label sit beside them, showing that dnsglobe separates equivalent data from genuinely different data. The image explains why raw IP comparison would produce false failures.
A reordered answer is not a different answer. dnsglobe knows the difference.

This is the smartest part of the tool. A raw IP list makes round-robin DNS look broken when it is actually behaving normally. dnsglobe groups equivalent sets, so reordered answers do not trigger a false alarm.

CaseNaive interpretationdnsglobe interpretation
[IP1, IP2] vs [IP2, IP1]ConflictSame group
Fresh answer after TTLNew stateValid convergence candidate
Old answer past TTLJust oldStale state that needs explanation
TimeoutFailureExcluded from percentage math

That tiny correction changes the whole workflow. Instead of asking, “Why are there two different answers?” you can ask, “Are these really different, or did the resolver just return the same set in a different order?”

The stale-state logic is the real debugging feature

The tool goes beyond “old” and “new.” It separates a resolver that is merely behind from one that appears to be ignoring TTLs. That means the output is not just status, it is diagnosis.

VerdictWhat it suggestsWhy it helps
Past TTLA cache that should have expiredPoints to a resolver or network oddity
UpstreamThe authoritative side is still laggingExplains why the change has not settled
ServFailA valid but broken responseSeparates protocol failure from stale data

Setting TTL to some really low number a full day before making a major change is no guarantee that your zone will expire in a bunch of places. All kinds of weird ISPs try to do things with the dns results they present to their customers.

walrus01, Hacker News commenter · DNSGlobe discussion on HN

How the globe earns its keep

The globe is not a gimmick bolted onto a list view. It gives a spatial shape to a distributed problem. A flat table tells you that multiple resolvers disagree. The morphing map tells you where that disagreement is clustering and whether the system is converging or still split.

Under the hood, the visual shift from flat map to globe is doing conceptual work. It reminds you that these answers come from a world of different vantage points, not from one server with a single truth.

Anycast hunting turns a global resolver into a specific place

The most delightful trick in dnsglobe is that it does not stop at the resolver IP. It makes sidecar queries to infer which point of presence actually answered, which turns an abstract anycast address into a physical location on the map.

That is what makes the map feel earned. It is not just plotting IP addresses. It is trying to reveal the place behind the address.

Why this beats the usual alternatives

ToolInterfaceGlobal coverageWatch modeAnswer groupingAnycast POP IDBest for
DNSChecker, WhatsMyDNSWeb pageYesNoNoNoQuick browser checks
doggoCLIPartialNoNoNoGeneral DNS lookups
mhost / mdiveCLI and TUIBroadSomeLimitedNoDNS Swiss-army workflows
dnsglobeTerminal TUI34 resolversYesYesYesWatching cutovers settle

The competitive edge is not that the alternatives are bad. It is that they solve broader problems. dnsglobe is narrow in a good way. It is optimized for the painful moment when a record change should be done, but the world has not agreed yet.

Rust and Ratatui are the enablers, not the headline

Rust gives the project a fast single binary. Tokio lets it fan out to many resolvers without turning the UI into molasses. Ratatui makes the terminal feel alive enough to support the globe, the watch loop, and the visual state changes.

But the stack is only valuable because it serves the model. dnsglobe is good because it treats DNS as a live system with states, transitions, and convergence. The UI is just the most readable way to expose that idea.