{"id":2264,"date":"2026-01-30T22:28:22","date_gmt":"2026-01-30T20:28:22","guid":{"rendered":"https:\/\/science-x.net\/?page_id=2264"},"modified":"2026-01-30T22:38:36","modified_gmt":"2026-01-30T20:38:36","slug":"orbit-speed-period-calculator","status":"publish","type":"page","link":"https:\/\/science-x.net\/?page_id=2264","title":{"rendered":"Orbit Speed &amp; Period Calculator"},"content":{"rendered":"\n<div class=\"eco-tool wp-block-group\" id=\"eco-tool-orbit-3e8b4\">\n  <div class=\"eco-tool__header\">\n    <h2 class=\"eco-tool__title\">Orbit Speed &#038; Period Calculator<\/h2>\n    <p class=\"eco-tool__lead\">\n      Estimate orbital speed and period around Earth based on orbital altitude. Uses a circular-orbit approximation (educational).\n    <\/p>\n  <\/div>\n\n  <form class=\"eco-tool__form\" id=\"eco-orbit-form-3e8b4\" novalidate>\n    <div class=\"eco-tool__grid3\">\n      <!-- Preset -->\n      <div class=\"eco-tool__field\">\n        <label class=\"eco-tool__label\" for=\"eco-orbit-preset-3e8b4\">Orbit preset<\/label>\n        <select class=\"eco-tool__input\" id=\"eco-orbit-preset-3e8b4\">\n          <option value=\"custom\" selected>Custom altitude<\/option>\n          <option value=\"iss\">ISS (~420 km)<\/option>\n          <option value=\"starlink\">Starlink (~550 km)<\/option>\n          <option value=\"gps\">GPS (~20,200 km)<\/option>\n          <option value=\"geo\">Geostationary (~35,786 km)<\/option>\n        <\/select>\n        <div class=\"eco-tool__hint\">Pick a preset or enter your own altitude.<\/div>\n      <\/div>\n\n      <!-- Altitude -->\n      <div class=\"eco-tool__field\" id=\"eco-orbit-alt-wrap-3e8b4\">\n        <label class=\"eco-tool__label\" for=\"eco-orbit-alt-3e8b4\">Orbital altitude (km)<\/label>\n        <input class=\"eco-tool__input\" id=\"eco-orbit-alt-3e8b4\" type=\"number\" min=\"100\" step=\"1\" value=\"420\" inputmode=\"numeric\" \/>\n        <div class=\"eco-tool__hint\">LEO is roughly 160\u20132,000 km.<\/div>\n      <\/div>\n\n      <!-- Explanation -->\n      <div class=\"eco-tool__field\">\n        <label class=\"eco-tool__label\">Assumptions<\/label>\n        <div class=\"eco-tool__noteBox\">\n          Circular orbit around Earth. Ignores atmospheric drag, inclination, and Earth\u2019s oblateness.\n        <\/div>\n        <div class=\"eco-tool__hint\">Good for a quick estimate.<\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"eco-tool__actions\">\n      <button type=\"button\" class=\"wp-element-button eco-tool__btn\" id=\"eco-orbit-calc-3e8b4\">Calculate<\/button>\n      <button type=\"button\" class=\"wp-element-button eco-tool__btn eco-tool__btn--ghost\" id=\"eco-orbit-reset-3e8b4\">Reset<\/button>\n      <div class=\"eco-tool__error\" id=\"eco-orbit-error-3e8b4\" aria-live=\"polite\"><\/div>\n    <\/div>\n  <\/form>\n\n  <div class=\"eco-tool__result\" id=\"eco-orbit-result-3e8b4\" hidden>\n    <h3 class=\"eco-tool__subtitle\">Result<\/h3>\n\n    <div class=\"eco-tool__cards\">\n      <div class=\"eco-tool__card\">\n        <div class=\"eco-tool__metric-label\">Orbital speed<\/div>\n        <div class=\"eco-tool__metric-value\" id=\"eco-orbit-speed-3e8b4\">\u2014<\/div>\n        <div class=\"eco-tool__metric-sub\" id=\"eco-orbit-speed-sub-3e8b4\"><\/div>\n      <\/div>\n\n      <div class=\"eco-tool__card\">\n        <div class=\"eco-tool__metric-label\">Orbital period<\/div>\n        <div class=\"eco-tool__metric-value\" id=\"eco-orbit-period-3e8b4\">\u2014<\/div>\n        <div class=\"eco-tool__metric-sub\" id=\"eco-orbit-orbits-3e8b4\"><\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"eco-tool__card eco-tool__card--wide\">\n      <div class=\"eco-tool__metric-label\">Orbital radius<\/div>\n      <div class=\"eco-tool__metric-value\" id=\"eco-orbit-radius-3e8b4\">\u2014<\/div>\n      <div class=\"eco-tool__metric-sub eco-tool__muted\" id=\"eco-orbit-note-3e8b4\"><\/div>\n    <\/div>\n\n    <p class=\"eco-tool__note\">\n      For geostationary orbit, the period should come out close to one day.\n    <\/p>\n  <\/div>\n\n  <details class=\"eco-tool__details\">\n    <summary class=\"eco-tool__summary\">How we calculate<\/summary>\n    <div class=\"eco-tool__details-body\">\n      <p class=\"eco-tool__text\">\n        We use Earth\u2019s gravitational parameter \u03bc and Earth radius R.\n        For a circular orbit at radius r = R + altitude:\n        speed v = \u221a(\u03bc \/ r), period T = 2\u03c0 \u221a(r\u00b3 \/ \u03bc).\n      <\/p>\n      <ul class=\"eco-tool__list\" id=\"eco-orbit-factors-3e8b4\"><\/ul>\n    <\/div>\n  <\/details>\n<\/div>\n\n<style>\n.eco-tool{\n  border: 1px solid rgba(0,0,0,.12);\n  border-radius: 12px;\n  padding: 16px;\n}\n\n.eco-tool__grid3{\n  display: grid;\n  grid-template-columns: 1fr;\n  gap: 16px;\n}\n@media (min-width: 860px){\n  .eco-tool__grid3{ grid-template-columns: 1fr 1fr 1fr; }\n}\n\n.eco-tool__field{\n  display: flex;\n  flex-direction: column;\n  gap: 6px;\n}\n\n.eco-tool__label{ font-weight: 600; }\n\n.eco-tool__input{\n  height: 44px;\n  padding: 0 12px;\n  border: 1px solid rgba(0,0,0,.2);\n  border-radius: 10px;\n  font: inherit;\n  background: #fff;\n  box-sizing: border-box;\n}\n\n.eco-tool select.eco-tool__input{\n  appearance: none;\n  padding-right: 40px;\n}\n\n.eco-tool__hint{\n  font-size: .92em;\n  opacity: .78;\n  min-height: 38px;\n}\n\n.eco-tool__noteBox{\n  border: 1px solid rgba(0,0,0,.12);\n  border-radius: 12px;\n  padding: 12px;\n  background: rgba(0,0,0,.02);\n  min-height: 44px;\n}\n\n.eco-tool__actions{\n  display: flex;\n  gap: 10px;\n  margin-top: 16px;\n  align-items: center;\n  flex-wrap: wrap;\n}\n\n.eco-tool__btn{ padding: 10px 22px; }\n.eco-tool__btn--ghost{\n  background: transparent !important;\n  border: 1px solid rgba(0,0,0,.2) !important;\n}\n.eco-tool__btn--ghost:hover,\n.eco-tool__btn--ghost:focus{\n  background: rgba(0,0,0,.06) !important;\n  border-color: rgba(0,0,0,.35) !important;\n}\n\n.eco-tool__error{\n  font-weight: 600;\n  min-height: 1.2em;\n  flex: 1 1 240px;\n}\n\n.eco-tool__result{ margin-top: 16px; }\n.eco-tool__subtitle{ margin: 0 0 10px; }\n\n.eco-tool__cards{\n  display: grid;\n  gap: 10px;\n  grid-template-columns: 1fr;\n}\n@media (min-width: 860px){\n  .eco-tool__cards{ grid-template-columns: 1fr 1fr; }\n}\n\n.eco-tool__card{\n  border: 1px solid rgba(0,0,0,.12);\n  border-radius: 12px;\n  padding: 12px;\n}\n\n.eco-tool__card--wide{ margin-top: 10px; }\n\n.eco-tool__metric-label{ opacity: .85; font-weight: 600; }\n.eco-tool__metric-value{ font-size: 1.6em; font-weight: 800; margin-top: 6px; line-height: 1.1; }\n.eco-tool__metric-sub{ opacity: .85; margin-top: 6px; }\n.eco-tool__muted{ opacity: .8; }\n\n.eco-tool__details{ margin-top: 14px; }\n.eco-tool__summary{ cursor: pointer; font-weight: 700; }\n.eco-tool__details-body{ margin-top: 10px; }\n.eco-tool__text{ margin: 0 0 10px; }\n.eco-tool__list{ padding-left: 18px; }\n\n.eco-tool__note{ margin-top: 10px; opacity: .9; }\n<\/style>\n\n<script>\n(function(){\n  const S = \"3e8b4\";\n  const el = (id) => document.getElementById(id + \"-\" + S);\n\n  const presetEl = el(\"eco-orbit-preset\");\n  const altEl = el(\"eco-orbit-alt\");\n  const calcBtn = el(\"eco-orbit-calc\");\n  const resetBtn = el(\"eco-orbit-reset\");\n  const errorEl = el(\"eco-orbit-error\");\n\n  const resultEl = el(\"eco-orbit-result\");\n  const speedEl = el(\"eco-orbit-speed\");\n  const speedSubEl = el(\"eco-orbit-speed-sub\");\n  const periodEl = el(\"eco-orbit-period\");\n  const orbitsEl = el(\"eco-orbit-orbits\");\n  const radiusEl = el(\"eco-orbit-radius\");\n  const noteEl = el(\"eco-orbit-note\");\n  const factorsEl = el(\"eco-orbit-factors\");\n\n  \/\/ Earth constants\n  const R_EARTH_KM = 6371;                \/\/ km\n  const MU_KM3_S2 = 398600.4418;          \/\/ km^3 \/ s^2  (Earth gravitational parameter)\n\n  const PRESETS = {\n    custom: null,\n    iss: 420,\n    starlink: 550,\n    gps: 20200,\n    geo: 35786\n  };\n\n  function setError(msg){ errorEl.textContent = msg || \"\"; }\n\n  function fmt(n, digits){\n    const d = (typeof digits === \"number\") ? digits : 2;\n    return (Math.round(n * Math.pow(10,d)) \/ Math.pow(10,d)).toLocaleString(undefined,{\n      minimumFractionDigits:d,\n      maximumFractionDigits:d\n    });\n  }\n\n  function fmtInt(n){ return Math.round(n).toLocaleString(); }\n\n  function updatePreset(){\n    const p = presetEl.value;\n    if (p !== \"custom\") {\n      altEl.value = String(PRESETS[p]);\n    }\n  }\n\n  function fillFactors(){\n    factorsEl.innerHTML = [\n      `<li><strong>Earth radius (R):<\/strong> ${fmtInt(R_EARTH_KM)} km<\/li>`,\n      `<li><strong>Earth \u03bc:<\/strong> ${MU_KM3_S2.toLocaleString()} km\u00b3\/s\u00b2<\/li>`,\n      `<li><strong>Formulas:<\/strong> v = \u221a(\u03bc\/r), T = 2\u03c0 \u221a(r\u00b3\/\u03bc)<\/li>`\n    ].join(\"\");\n  }\n\n  function calculate(){\n    setError(\"\");\n\n    const alt = Number(altEl.value);\n    if (!Number.isFinite(alt) || alt < 100){\n      setError(\"Please enter a valid altitude (minimum 100 km).\");\n      resultEl.hidden = true;\n      return;\n    }\n\n    const r = R_EARTH_KM + alt; \/\/ km\n    const v = Math.sqrt(MU_KM3_S2 \/ r); \/\/ km\/s\n    const T = 2 * Math.PI * Math.sqrt(Math.pow(r, 3) \/ MU_KM3_S2); \/\/ seconds\n\n    const vKmh = v * 3600;\n    const minutes = T \/ 60;\n    const hours = T \/ 3600;\n    const orbitsPerDay = 24 \/ hours;\n\n    speedEl.textContent = `${fmt(v, 3)} km\/s`;\n    speedSubEl.textContent = `${fmtInt(vKmh)} km\/h`;\n\n    periodEl.textContent = `${fmt(minutes, 1)} minutes`;\n    orbitsEl.textContent = `\u2248 ${fmt(orbitsPerDay, 2)} orbits per day`;\n\n    radiusEl.textContent = `${fmtInt(r)} km`;\n    noteEl.textContent = `Orbital radius = Earth radius + altitude (${fmtInt(R_EARTH_KM)} + ${fmtInt(alt)}).`;\n\n    resultEl.hidden = false;\n  }\n\n  function reset(){\n    presetEl.value = \"iss\";\n    altEl.value = \"420\";\n    setError(\"\");\n    resultEl.hidden = true;\n  }\n\n  \/\/ init\n  fillFactors();\n  presetEl.value = \"iss\";\n  updatePreset();\n\n  presetEl.addEventListener(\"change\", updatePreset);\n  calcBtn.addEventListener(\"click\", calculate);\n  resetBtn.addEventListener(\"click\", reset);\n})();\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Orbit Speed &#038; Period Calculator Estimate orbital speed and period around Earth based on orbital altitude. Uses a circular-orbit approximation (educational). Orbit preset Custom altitudeISS (~420 km)Starlink (~550 km)GPS (~20,200&hellip;<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":2295,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_sitemap_exclude":false,"_sitemap_priority":"","_sitemap_frequency":"","footnotes":""},"_links":{"self":[{"href":"https:\/\/science-x.net\/index.php?rest_route=\/wp\/v2\/pages\/2264"}],"collection":[{"href":"https:\/\/science-x.net\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/science-x.net\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/science-x.net\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/science-x.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2264"}],"version-history":[{"count":3,"href":"https:\/\/science-x.net\/index.php?rest_route=\/wp\/v2\/pages\/2264\/revisions"}],"predecessor-version":[{"id":2267,"href":"https:\/\/science-x.net\/index.php?rest_route=\/wp\/v2\/pages\/2264\/revisions\/2267"}],"up":[{"embeddable":true,"href":"https:\/\/science-x.net\/index.php?rest_route=\/wp\/v2\/pages\/2295"}],"wp:attachment":[{"href":"https:\/\/science-x.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2264"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}