Destination point from bearing and distance calculator
Start at latitude 51.4778, longitude −0.0015, head off on a bearing of 45° for 10 km, and you arrive near 51.5413472357, 0.1007456435. Distances can be in meters, kilometers, statute miles or nautical miles. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Latitude
- 51.4778
- Longitude
- -0.0015
- Bearing
- 45
- Distance
- 10
- Distance unit
- Km
- Initial bearing
- 45
- Distance m
- 10,000
- Earth radius m
- 6,371,000
This destination point from bearing and distance calculator solves the direct navigation problem on a spherical Earth. Enter a starting latitude and longitude, an initial bearing measured clockwise from true north, and a non-negative travel distance. The calculator converts the path length to an angular distance, applies the standard great-circle trigonometric equations, and returns a normalized destination coordinate. It accepts meters, kilometers, statute miles, and nautical miles, and it can use a custom spherical radius for classroom models or other worlds.
Enter a valid start point, bearing, and distance
Begin with the latitude and longitude of the departure point in decimal degrees. Latitude must be between negative ninety and positive ninety, while longitude must be between negative one hundred eighty and positive one hundred eighty. Positive latitude means north and positive longitude means east.
Supply the initial bearing in degrees clockwise from true north: zero points north, ninety points east, one hundred eighty points south, and two hundred seventy points west. Bearings outside one complete turn are allowed because the calculator normalizes them into the interval from zero up to, but not including, three hundred sixty. A bearing of four hundred five degrees therefore describes the same initial direction as forty-five degrees.
Distance must be zero or greater. Select m for meters, km for kilometers, mi for statute miles, or nmi for nautical miles; kilometers are used when the unit is omitted. These checks are deliberate.
A negative distance, infinite value, missing coordinate, or latitude beyond a pole produces an invalid input error rather than a plausible-looking but misleading coordinate. For ordinary Earth calculations, leave the radius at its default mean value. Set a custom positive radius only when a lesson, simulation, or specification explicitly calls for a different sphere.
Understand the spherical trigonometry
The calculation models travel along a great circle, the intersection of a sphere with a plane through its center. First, the start latitude, start longitude, and normalized bearing are converted from degrees to radians. The chosen distance is converted to meters and divided by the spherical radius, producing the angular distance of the journey.
Destination latitude comes from an arcsine expression that combines the start latitude, angular distance, and cosine of the initial bearing. Destination longitude adds an atan2 expression to the start longitude. Using atan2 is important because it preserves the quadrant and remains meaningful when the route approaches a meridian, crosses the antimeridian, or heads toward a pole.
Small floating-point overshoots are clamped before arcsine, and the final longitude is wrapped to the familiar range from negative one hundred eighty through less than positive one hundred eighty degrees. The response also includes the normalized initial bearing, converted distance in meters, radius used, and a method label. No network request, random source, clock, or mutable state participates, so identical inputs produce identical output.
Interpret the result and choose the right model
A zero-distance request returns the starting coordinate after normal longitude normalization. Routes that cross the antimeridian wrap cleanly instead of returning a longitude beyond the conventional map range. The initial bearing describes the direction at departure; on most great-circle routes, the direction changes as the traveler moves, so it should not be mistaken for a constant compass heading or an arrival bearing.
This distinction matters at high latitudes and over long distances. The spherical solution is an excellent fit for educational work, approximate planning, visualization, games, simulations, and systems whose stated contract uses a mean Earth radius. It is not a replacement for an ellipsoidal geodesic solver when centimeter or meter accuracy affects surveying, legal boundaries, precision aviation, or safety-critical operations.
Earth is not a perfect sphere, and the difference grows with route geometry and distance. Likewise, use a rhumb-line calculation if the intended path follows a constant bearing throughout rather than only at departure. When chaining several legs, feed each returned destination into the next request and supply the next leg's own initial bearing.
Preserve the radius and unit conventions across all legs so results remain internally consistent and auditable.
What you can do with it
Create projected map markers
Place a marker a known great-circle distance and starting direction from a depot, sensor, landmark, or event location.
Build navigation exercises
Generate repeatable answers for lessons about bearings, angular distance, longitude wrapping, and spherical geometry.
Simulate spherical movement
Advance an object across a globe model without adding a large geodesic dependency or making a network request.
FAQ
How is the bearing measured?
It is the initial direction in degrees clockwise from true north. The calculator normalizes any finite bearing into the range from 0 up to, but not including, 360 degrees.
Which distance units are supported?
Use m for meters, km for kilometers, mi for statute miles, or nmi for nautical miles. The default is km.
Does this use an ellipsoidal Earth model?
No. It uses spherical great-circle trigonometry with a default mean Earth radius of 6,371,000 meters.
What happens at the antimeridian?
The computed longitude is normalized into the standard map range from -180 degrees up to less than 180 degrees.
How do I find the point 10 km away on a bearing of 45 degrees?
Enter the start coordinates, the bearing and the distance. Starting from latitude 51.4778 and longitude −0.0015, travelling 10 km at 45 degrees from true north ends at about latitude 51.5413472357 and longitude 0.1007456435.
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/trig/destination-point-bearing \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"latitude":51.4778,"longitude":-0.0015,"bearing":45,"distance":10}'const res = await fetch("https://api.kit.forhosting.com/trig/destination-point-bearing", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"latitude": 51.4778,
"longitude": -0.0015,
"bearing": 45,
"distance": 10
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/trig/destination-point-bearing",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"latitude": 51.4778,
"longitude": -0.0015,
"bearing": 45,
"distance": 10
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/trig/destination-point-bearing", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"latitude":51.4778,"longitude":-0.0015,"bearing":45,"distance":10}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"latitude":51.4778,"longitude":-0.0015,"bearing":45,"distance":10}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/trig/destination-point-bearing", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"latitude": 51.4778,
"longitude": -0.0015,
"bearing": 45,
"distance": 10
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "trig.destination_point_bearing",
"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
The calculation is deterministic, local, and suitable for repeatable API workflows.
Understand the spherical trigonometry
API use costs $0.002 per item, while the browser calculation can run with the same pure computation.
Technical questions
What does an API calculation cost?
Each successful API item uses the published base price of $0.002.