ForHosting KIT · Travel & geography

Mutual visibility range

Find how far apart two raised objects can be and still see each other over the horizon: a 30 m lookout and a 100 m mast reach about 19.5 km and 35.7 km, so they meet at about 55.2 km. Refraction can be added. Free in your browser.

  • Free
  • Runs in your browser
  • No sign-up
  • Your data stays on your device
Use it from WebAPIEmailTelegramApp soon
If you enter
Height a
30
Height b
100
Height unit
M
Distance unit
Km
You get
Earth radius
6,371,000
Earth radius unit
M
Earth radius m
6,371,000
Refraction k
1

When a tower must see a ship, a drone must stay in radio contact with a ground station, or two lookout posts must share optical line of sight, the limiting number is the mutual geometric horizon. This mutual visibility range calculator accepts the heights of two objects above the local surface, an optional planetary radius, and an optional atmospheric refraction factor, then returns each individual horizon distance and their sum as the maximum separation at which the two can just see each other over a spherical Earth. The pure analytic path uses the standard chord formula d equals the square root of two times effective radius times height plus height squared for each object, then adds those distances.

What mutual visibility means and how two horizons add

On a spherical planet an observer of height h cannot see the surface beyond the tangent ray that grazes the sphere and then continues to the horizon. Elementary geometry of that right triangle yields the geometric horizon distance d of h equals the square root of two R h plus h squared, where R is the planetary radius measured to the surface under the observer.

When the other end of the link is also elevated—an antenna on a mast, a target on a ridge, a second ship with a high bridge—the second object has its own horizon. The two objects can just exchange line of sight when their ground separation equals the sum of the two horizons: the first ray meets the common horizon circle from one side and the second ray meets it from the other.

That sum is the mutual visibility range, sometimes called target visibility range or radio geometric horizon for a pair of heights. Setting the second height to zero recovers the classic single-observer distance to the sea horizon. Setting both heights equal models two identical towers.

The formula is geometric only: real terrain, buildings, foliage, and multipath can block or extend a path long before the pure horizon limit is reached, so planners treat the result as an upper bound for clear-air line of sight over open water or smooth ground rather than a guarantee of contact over hills.

Where mutual visibility range helps

Marine and coastal operations use a mutual visibility range calculator so bridge teams and coastal stations can estimate when a vessel of known freeboard height will rise over the geometric horizon from a known lookout elevation. Amateur radio and microwave planners estimate first-order free-space geometric limits between two antenna heights before running full terrain path profiles. Search-and-rescue and drone teams convert observer and aircraft altitudes into a planning radius for visual or control-link contact over open terrain.

Content sites that rank for mutual visibility range, line of sight from two heights, or horizon distance calculator benefit from a live free browser tool whose math matches the automation path byte for byte. Keep requests small, pin the cleaned floats in tests, and you get reproducible geometric ranges for lessons, apps, and edge workers without standing up a full radio-propagation stack of your own.

Ship and coastal lookout planning

Estimate when a vessel of known bridge or mast height becomes visible from a tower or cliff lookout by summing both geometric horizons over open water.

RF and microwave first-order range

Compute the geometric line-of-sight cap between two antenna heights with optional 4/3 Earth refraction before running detailed path-loss software.

Drone and SAR visual contact radius

Convert observer height and aircraft altitude into a mutual visibility circle for briefing, training, and control-link planning over flat terrain.

Can one height be zero?

Yes. A height of zero contributes a zero horizon, so mutual range equals the single elevated object's horizon—classic distance to the sea horizon for that height.

Does this account for hills, buildings, or diffraction?

No. The model is spherical geometry with optional effective radius only. Terrain occlusion, clutter, and diffraction require a path profile tool; treat this result as a clear-air upper bound.

Which refraction factor should I use?

Leave it at 1 for the pure geometric horizon. Radio and optical planners often use 4/3, about 1.333, which enlarges the effective Earth radius to approximate standard atmospheric bending.

How is each object's horizon distance calculated?

For a height h above the surface, the horizon is the square root of 2 times the Earth radius times h, plus h squared. The two horizons are then added to give the mutual range.

Which units can I use?

Heights can be in metres, feet, kilometres, statute miles or nautical miles, the same unit for both. The result comes in kilometres by default, and the mutual range is always also given in metres, miles and nautical miles.

Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.

POSThttps://api.kit.forhosting.com/geo/target-visibility-range

Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.

curl -X POST https://api.kit.forhosting.com/geo/target-visibility-range \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"height_a":30,"height_b":100}'
{
  "height_a": 30,
  "height_b": 100
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "geo.target_visibility_range",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.

Per request$0.002

Published price — no tokens, no invented credits. A failed task is never charged.

HTTPCodeMeaning
401unauthorizedMissing or invalid API key.
402insufficient_balanceYour balance doesn't cover the task price.
404unknown_typeThat task type doesn't exist.
429rate_limitedToo many requests. Use the webhook instead of polling.

Failed validation is not billed; successful calls use prepaid KIT balance at the published base price.

Input contract, refraction factor, units, and response shape

Example: thirty metres and one hundred metres with default Earth radius and k equals one yields individual horizons of roughly nineteen point five and thirty-five point seven kilometres and a mutual range near fifty-five point two kilometres. POST a JSON body with two required non-negative finite numbers: height_a and height_b, the heights of the two objects above the same reference surface. Optional height_unit defaults to metres and accepts m, ft, km, mi, or nmi for both heights together. Optional earth_radius defaults to six million three hundred seventy-one thousand metres, the common mean Earth radius, with optional earth_radius_unit. Optional refraction_k defaults to one for a pure geometric sphere; radio and optical engineering often pass about one point three three three, the classic four-thirds Earth model that enlarges the effective radius to approximate standard atmospheric refraction. Optional distance_unit defaults to kilometres for the primary mutual_range and per-object horizon fields. On success the body echoes the heights and units, reports earth_radius_m, refraction_k, and effective_radius_m, returns horizon_a, horizon_b, and mutual_range in the chosen distance unit, and always includes mutual_range_m, mutual_range_km, mutual_range_mi, and mutual_range_nmi for multi-unit UIs, plus a formula string and a short assumptions note. Missing fields, negative heights, non-positive radius or k, non-finite values, and unknown unit strings fail with invalid_input naming the problem and are not billed.

How is mutual visibility range calculated from two heights?

Each height gets a geometric horizon d=sqrt(2·R_eff·h+h²). The maximum line-of-sight separation is d(height_a)+d(height_b). R_eff is refraction_k times the planetary radius (default mean Earth, k=1).

What is the refraction_k parameter?

It scales Earth radius to an effective value for atmospheric refraction. Use 1 for pure geometry. Radio and optical planners often use ~1.333 (four-thirds Earth). Values must be finite and greater than zero.

What does the mutual visibility range calculator cost?

The browser tool is free. API requests use prepaid KIT balance at $0.002 per successful call; invalid input is not billed.

Read the full KIT documentation →