Synodic period calculator
Work out the wait between matching line-ups of two planets: Earth at 365.25 days and Mars at 686.98 days meet again every 779.906893979 days, the rhythm of Mars oppositions. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Orbital
- 365.25
- Orbital
- 686.98
- Synodic period
- 779.906893979
The synodic period is the mean time between successive similar alignments of two planets as seen from one relative to the other—for example, how often Earth and Mars meet in conjunction from our sky. Given the sidereal orbital periods of both bodies in the same time unit, classical orbital mechanics yields a single closed formula: one over S equals the absolute difference of the reciprocal periods, or equivalently S equals the absolute value of P1 times P2 over P1 minus P2. Keep units consistent: days in, days out; years in, years out.
Sidereal and synodic periods are not the same
A sidereal period is the time a planet needs to complete one orbit around the Sun measured against the fixed stars. The synodic period answers a different question: how long an observer on one planet waits before the other returns to the same arrangement in the sky, such as opposition or conjunction. Because both planets keep moving, the faster one has to gain a full lap on the slower one before the same line-up happens again, so the synodic period depends on both orbits at once.
How it is calculated and common slips
The speed at which the two planets pull apart is the difference of their orbital rates, so one over the synodic period equals the difference of one over each period. With Earth at 365.25 days and Mars at 686.98 days, the result is 779.906893979 days between similar alignments, and swapping the two values gives the same answer. Mixing days with years is the most common mistake, since nothing is converted for you. Two identical periods are refused, because the planets would never fall out of step.
What the synodic period means and which inputs to send
Sidereal period is the time a planet takes to complete one orbit relative to the fixed stars about the Sun. Synodic period is different: it is how long an observer on one body must wait before the other body returns to the same relative sky configuration, such as opposition or conjunction.
Under the idealization of circular coplanar orbits and constant mean motion, the relative angular rate is the absolute difference of the two mean motions, so one over S equals the absolute value of one over P1 minus one over P2. Rearranging gives the compact product form S equals the absolute value of P1 times P2 divided by P1 minus P2. Both values must be strictly positive and finite.
Units are not converted automatically—if you mix days with years the arithmetic is meaningless—so choose one scale for both inputs.
FAQ
What happens if the two periods are equal?
When period1 equals period2 the relative mean motion is zero, the denominator vanishes, and the synodic period is undefined; the failure is not charged.
Do period units matter?
Yes. Use the same unit for both inputs. The result is returned in that unit—days and days yield days; years and years yield years. The calculator does not convert units for you.
Is the synodic period calculator free?
The browser tool runs free on your device.
Does the order of period1 and period2 matter?
No. The formula uses the absolute value of the period difference, so swapping the two bodies yields the same positive synodic period.
Is the synodic period exact for real planets?
It is the mean interval between alignments under an idealized model of circular orbits in a single plane at constant speed. Read it as the average spacing between events rather than the date of one particular opposition or conjunction.
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/synodic-period \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"period1":365.25,"period2":686.98}'const res = await fetch("https://api.kit.forhosting.com/astro/synodic-period", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"period1": 365.25,
"period2": 686.98
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/astro/synodic-period",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"period1": 365.25,
"period2": 686.98
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/astro/synodic-period", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"period1":365.25,"period2":686.98}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"period1":365.25,"period2":686.98}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/astro/synodic-period", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"period1": 365.25,
"period2": 686.98
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "astro.synodic_period",
"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
This capability evaluates that expression deterministically from finite positive inputs, rejects equal periods with a clear invalid input error because the relative mean motion vanishes, and returns structured JSON that homework checkers, planetarium tools, and lightweight astronomy pipelines can pin in continuous integration without installing an ephemeris stack.
What the synodic period means and which inputs to send
Send the required field period1 as a JSON number or numeric string for the first body’s orbital period, and period2 for the second. Aliases p1, P1, period_a, and T1 are accepted for the first period; aliases p2, P2, period_b, and T2 for the second. The two periods must not be equal: equal periods raise invalid_input because the denominator vanishes and the synodic period is undefined or infinite for identical mean motions. Identical inputs always produce identical JSON because the path is pure floating-point arithmetic with no network, no random seed, and no wall clock.
Reading the response fields and classic planet pairs
Order of the two periods does not matter: swapping Earth and Mars yields the same S because of the absolute value. Classic classroom checks include Earth at about three hundred sixty-five point two five days with Mars near six hundred eighty-seven days, giving a synodic period near seven hundred eighty days, and Earth with Venus near two hundred twenty-five days, giving a synodic period near five hundred eighty-four days. On success the response echoes period1 and period2, then reports synodic_period as the positive mean recurrence time in the same unit you supplied. The formula field is always the string S equals absolute value of P1 times P2 over P1 minus P2, and method is always synodic_period so downstream code can branch without sniffing shapes. Missing period1, missing period2, non-positive periods, equal periods, and non-finite numbers all fail with invalid_input and are not charged after the engine rejects the request. Use synodic_period alone when a dashboard only needs the number; keep formula and method when documenting the physics step for students or logging which algorithm produced a mission or outreach sketch. Pair this endpoint with orbital period or Kepler tools when the next question is how long each planet takes about the Sun, remembering that synodic time is a relative rate concept, not a substitute for sidereal year.
API usage, pricing, classroom workflows, and practical limits
Call the free in-browser synodic period calculator for homework checks, lecture demos, and quick outreach verification without installing Orekit, SPICE, or a full planetarium library. Typical examples include inferior planets with periods shorter than Earth’s and superior planets with longer periods; the absolute-value form handles both cases without a special branch. Extremely large or tiny magnitudes are bounded for isolate safety; stay within the published numeric range for reliable results. Send a JSON body with required positive period1 and period2 that are not equal. Use the prepaid API when a tutoring platform, coding-assessment sandbox, curriculum generator, or lightweight astronomy pipeline needs a stable contract under KIT balance at $0.002 per successful item; validation failures never consume balance after rejection. Authors shipping SDKs can map synodic_period into tables that compare conjunction recurrence across planet pairs, teaching how close periods produce long synodic times while very different periods produce shorter relative cycles—a companion concept to mean motion difference that students can verify by hand with a calculator before trusting multi-step lesson flows.
Integration use cases
Homework and exam verification
Students and graders compute the synodic period from two sidereal periods, compare against textbook Earth–Mars or Earth–Venus answers, and get a clear invalid_input error when the periods are equal by mistake.
Tutoring and curriculum generators
Lesson builders produce worked synodic-period examples with structured JSON for flashcards, step sheets, and auto-graded drills without embedding a full ephemeris or CAS stack.
Outreach and lightweight astronomy pipelines
Planetarium demos and scripts that need a stable conjunction-recurrence estimate from two periods call a prepaid endpoint instead of reimplementing |P1·P2/(P1−P2)| in every language.
Technical questions
How do I calculate the synodic period of two planets?
Send JSON with period1 and period2 set to the sidereal orbital periods in the same unit (for example Earth 365.25 and Mars 686.98 days). The response includes synodic_period S=|P1·P2/(P1−P2)|.