Central angle between two latitude longitude points
New York and London are 50.094211560061° apart as seen from the centre of the Earth, or 0.874308927913665 radians. Enter two coordinate pairs to get this angular separation, the clean starting point for any great-circle distance. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Lat1
- 40.7128
- Lon1
- -74.006
- Lat2
- 51.5074
- Lon2
- -0.1278
- Angle degrees
- 50.0942115601
- Angle radians
- 0.8743089279
The central angle between two geographic points is the angle formed by lines drawn from each point to the center of Earth. Enter two latitude and longitude pairs to calculate that separation directly in both degrees and radians. The result is independent of any chosen Earth radius, making it useful for spherical geometry, great-circle calculations, distance formulas, navigation checks, and systems that need an angular measurement before converting it into an arc length.
What the Earth-centered angle represents
Imagine a straight line from the center of Earth to the first coordinate and another line from the center to the second coordinate. The smaller angle between those two radius vectors is the central angle. It ranges from zero for identical locations to 180 degrees, or pi radians, for antipodal locations on opposite sides of the globe.
Unlike a surface distance, this quantity does not depend on whether you select an Earth radius in kilometers, miles, or meters. That makes it a clean intermediate value for spherical work: multiply the returned radian angle by a chosen sphere radius to obtain great-circle arc length. This calculator treats latitude and longitude as positions on a sphere and returns both common angular units, so callers do not need to repeat a conversion.
It is especially helpful when a formula, simulation, database expression, or mapping library expects radians while a person reviewing the result finds degrees easier to understand. The calculation always selects the shortest angular separation and remains well behaved for points that are extremely close together or nearly opposite.
How to enter coordinates and interpret the result
Supply lat1 and lon1 for the first point, then lat2 and lon2 for the second point. All four values are decimal degrees. Latitude is limited to -90 through 90, with positive values north of the equator.
Longitude is limited to -180 through 180, with positive values east of the prime meridian. Do not submit projected map coordinates, distances, degree-minute-second text, or GeoJSON arrays without separating and ordering their numeric components. GeoJSON commonly lists longitude before latitude, whereas this input names latitude first; mixing that order can produce a valid but unintended location.
Zero means the inputs describe the same direction from Earth center. Ninety degrees means their radius vectors are perpendicular, and 180 degrees indicates antipodes. The degree and radian fields describe exactly the same separation: radians equal degrees multiplied by pi and divided by 180.
Validation rejects missing, non-finite, and out-of-range values rather than silently wrapping or clamping them, keeping upstream data errors visible.
Method, accuracy, and practical uses
The implementation evaluates the haversine of the angular separation and recovers the angle with a two-argument arctangent. This form is numerically stable for small separations, while clamping the intermediate haversine to the mathematical interval from zero to one protects results near antipodal points from tiny floating-point overshoots. The model is deliberately spherical.
Real Earth is an oblate ellipsoid, so this angle should not be confused with a survey-grade ellipsoidal geodesic or a road route. For angular comparisons, spherical indexing, proximity prefilters, educational calculations, astronomy-style direction geometry tied to terrestrial coordinates, and the first stage of a great-circle distance formula, it is transparent and reproducible. Choosing the radius remains your responsibility because different conventions use a mean Earth radius, a local approximation, or another spherical body entirely.
The capability performs no geocoding and cannot turn place names or street addresses into coordinates. It also makes no network request and consults no map, so identical numeric inputs always return identical output.
What you can do with it
Build a great-circle distance formula
Use the radian angle as the radius-independent part of an arc-length calculation, then multiply by the sphere radius and unit your application requires.
Check geographic separation thresholds
Compare points by their angular separation before choosing a distance convention or running a more expensive ellipsoidal or routing calculation.
Teach and verify spherical geometry
Demonstrate how coordinate pairs become radius vectors and confirm known cases such as identical, quarter-circle, and antipodal points.
FAQ
What does the central angle measure?
It measures the smaller angle at Earth center between radius vectors pointing to the two latitude and longitude coordinates.
Why are both degrees and radians returned?
Degrees are convenient for reading and comparison, while radians can be multiplied directly by a sphere radius to calculate great-circle arc length.
Does this use the WGS84 ellipsoid?
No. It treats the coordinates as points on a sphere. Use an ellipsoidal geodesic method when survey-grade Earth distances are required.
What happens for identical or antipodal points?
Identical points return zero degrees and radians. Exact antipodes return 180 degrees and pi radians, subject to the displayed numeric precision.
How do I turn the central angle into a distance?
Multiply the angle in radians by the radius your application needs. A radius in metres gives the arc length in metres and a radius in kilometres gives kilometres, which is why the angle itself does not depend on any radius.
Related tools
For developers — API access
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.
API endpoint
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.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/geo/central-angle \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"lat1":40.7128,"lon1":-74.006,"lat2":51.5074,"lon2":-0.1278}'const res = await fetch("https://api.kit.forhosting.com/geo/central-angle", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"lat1": 40.7128,
"lon1": -74.006,
"lat2": 51.5074,
"lon2": -0.1278
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/geo/central-angle",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"lat1": 40.7128,
"lon1": -74.006,
"lat2": 51.5074,
"lon2": -0.1278
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/geo/central-angle", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"lat1":40.7128,"lon1":-74.006,"lat2":51.5074,"lon2":-0.1278}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"lat1":40.7128,"lon1":-74.006,"lat2":51.5074,"lon2":-0.1278}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/geo/central-angle", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"lat1": 40.7128,
"lon1": -74.006,
"lat2": 51.5074,
"lon2": -0.1278
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "geo.central_angle",
"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.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |
Technical notes
Method, accuracy, and practical uses
To estimate surface distance, multiply angle_radians by the radius required by your application; using meters produces meters, and using kilometers produces kilometers. API execution costs $0.002 per successful request, while the browser calculation is available for quick interactive checks.
Technical questions
How much does the API request cost?
A successful API request costs $0.002. Invalid input is rejected, and the interactive browser calculator can be used for quick checks.