Geostationary orbit calculator
Around Earth, a geostationary satellite orbits 35786.1067691 km above the equator, at a radius of 42164.2437691 km. Enter a planet's mass, sidereal rotation period and radius to get the orbital radius, altitude and speed for that world. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Planet
- 5,972,200,000,000,000,000,000,000
- Period
- 86,164.0905
- Radius
- 6,378,137
- G
- 0.0000000001
- Mu
- 398,602,544,600,000
- A cubed
- 74,960,581,434,500,000,000,000
- Orbital radius
- 42,164,243.7691
A geostationary orbit is a circular equatorial orbit whose period matches the planet's sidereal rotation, so a satellite hangs fixed over one longitude in the rotating frame. From Kepler's third law the orbital radius follows a closed form: a equals the cube root of G times M times T squared over four pi squared, and the altitude above the surface is simply a minus the planet radius R. Non-positive mass and radius are also rejected because they are non-physical under Newtonian gravity.
How geostationary altitude follows from mass and rotation period
Start from Newtonian two-body gravity with a central mass M that dominates the satellite mass. For a circular orbit the mean motion n equals the square root of G M over a cubed, and the orbital period is T equals two pi over n. Locking that period to the planet's sidereal rotation period is the geostationary condition in the circular equatorial idealisation.
Solving for a yields a cubed equals G M T squared over four pi squared, or equivalently a equals the cube root of G M T squared over four pi squared. Altitude above the surface is then h equals a minus R, where R is the equatorial or mean planetary radius you choose for the problem. Period T must be a finite non-zero positive number of seconds; zero fails with invalid input because the formula becomes singular and would not define a finite orbit.
Mass M and radius R must likewise be finite and strictly positive. Use the sidereal day for Earth, about eighty-six thousand one hundred sixty-four seconds, not the mean solar day of eighty-six thousand four hundred seconds, if you want the textbook GEO altitude near thirty-five thousand seven hundred eighty-six kilometres. This page intentionally uses the circular two-body equatorial approximation only; inclined geosynchronous figure-eight paths, station-keeping fuel, J2 drift, and n-body ephemerides are separate search intents and separate landings.
What you send and what you get back
Send three required finite numbers under the fields mass, period, and radius. Mass is the planet mass M in kilograms and must be strictly greater than zero; for Earth use about five point nine seven two two times ten to the twenty-four kilograms. Period is the sidereal rotation period T in seconds and must be non-zero and positive; for Earth use about eighty-six thousand one hundred sixty-four point zero nine zero five seconds.
Radius is the planet radius R in metres and must be strictly greater than zero; for Earth equatorial radius use about six point three seven eight one three seven times ten to the six metres. Classic textbook checks include Earth mass, sidereal day, and equatorial radius recovering roughly forty-two thousand one hundred sixty-four kilometres orbital radius and thirty-five thousand seven hundred eighty-six kilometres altitude.
Keep units consistent: convert kilometres, Earth masses, and hours to metres, kilograms, and seconds before calling so the numeric product matches the SI interpretation your report claims.
Where geostationary orbit calculators show up in real work
Secondary-school and introductory university astronomy and physics courses assign GEO altitude drills, comparisons of sidereal versus solar day, and satellite sizing estimates that rearrange the same formula; a single trusted oracle speeds grading and demo setup. Communications and broadcast planners convert planetary constants into a first-cut parking altitude before full numerical propagators and link budgets. CubeSat and amateur teams compare geostationary radius against low-Earth options when explaining why GEO is expensive in launch energy.
Mission concept studies compare circular period-locked orbits around Earth, Mars, and gas giants from tabulated masses and rotation periods without re-deriving constants each time. If you later need orbital period from semi-major axis and mass alone, full two-body reduced-mass periods, Hohmann transfer times, or n-body ephemerides, treat those as separate search intents and landings rather than overloading this geostationary orbit altitude calculator page.
What you can do with it
Homework and exam answer keys
Compute GEO orbital radius a and surface altitude h from planet mass M, sidereal period T, and radius R so students and auto-graders share one closed-form ground truth.
Communications satellite sizing
Convert planetary constants into a first-cut geostationary altitude before full propagators, link budgets, and station-keeping estimates.
Planetarium and multi-planet demos
Turn tabulated masses, rotation periods, and radii for Earth, Mars, or giants into human-readable GEO altitudes for exhibits and curriculum widgets.
FAQ
What formula does this geostationary orbit calculator use?
Kepler's third law with period locked to sidereal rotation: a = ∛(G·M·T²/(4π²)) and altitude h = a − R, using the CODATA 2018 value of G. The model is circular, two-body, and equatorial.
Should I use 86400 s or the sidereal day for Earth?
Use the sidereal day ≈ 86164.0905 s for a true geostationary match. The mean solar day of 86400 s is slightly longer and shifts the altitude by a small but measurable amount in textbook checks.
Why is planet radius required?
Orbital radius a is measured from the planet centre. Surface altitude is h = a − R, so R is required to report the altitude above the surface that mission and homework statements usually ask for.
What does it cost?
The browser tool is free and runs locally.
Does it handle inclined geosynchronous orbits or station-keeping?
No. It uses the circular, equatorial two-body approximation only. Inclined geosynchronous figure-eight paths, station-keeping fuel, long-term drift and the pull of other bodies are not modelled.
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/astro/geostationary-orbit \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"mass":5.9722e+24,"period":86164.0905,"radius":6378137}'const res = await fetch("https://api.kit.forhosting.com/astro/geostationary-orbit", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"mass": 5.9722e+24,
"period": 86164.0905,
"radius": 6378137
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/astro/geostationary-orbit",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"mass": 5.9722e+24,
"period": 86164.0905,
"radius": 6378137
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/astro/geostationary-orbit", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"mass":5.9722e+24,"period":86164.0905,"radius":6378137}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"mass":5.9722e+24,"period":86164.0905,"radius":6378137}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/astro/geostationary-orbit", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"mass": 5.9722e+24,
"period": 86164.0905,
"radius": 6378137
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "astro.geostationary_orbit",
"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
How geostationary altitude follows from mass and rotation period
The calculator evaluates that closed form in deterministic floating-point arithmetic with the CODATA two thousand eighteen value of G: no random seeds, no wall-clock timestamps, no network calls, and no model drift, so identical inputs always produce identical JSON.
What you send and what you get back
Missing fields, non-numeric strings, NaN, Infinity, zero or negative period, and non-positive mass or radius fail with invalid_input and are not charged. On success the response echoes cleaned mass, period, and radius, exposes G as the fixed CODATA constant, mu as G times M, a_cubed as the intermediate cube of the orbital radius, orbital_radius as a in metres, altitude as h equals a minus R in metres, orbital_radius_km and altitude_km convenience fields, mean_motion as two pi over T in radians per second, orbital_speed as a times mean motion for the circular case, includes a units hint object, sets method to kepler_geostationary, formula to a equals cube root of G M T squared over four pi squared with h equals a minus R, and approximation to circular_two_body_equatorial for honest scope. Pricing for successful API calls is the published base of $0.002 per item; validation failures do not consume prepaid balance.
Where geostationary orbit calculators show up in real work
Because this capability is a pure parse engine, API pricing is the published base of $0.002 per successful item and failed validation does not consume balance.
Technical questions
What happens if the period is zero?
The request fails with invalid_input. A zero rotation period makes the geostationary radius formula singular, so the API rejects it instead of returning Infinity or NaN.