How we calculate
Every result on this site comes from the same calculation engine. This page explains what it does and shows how closely it matches NASA.
Where the positions come from
The engine is built on Astronomy Engine, an open-source library by Don Cross, published under the MIT licence. We use version 2.1.19 without changes. It models the orbits of the Sun, Moon and planets and reports where each one appears from Earth at any moment.
On top of that we add our own code for the things astrology needs: zodiac signs, the dates a planet changes sign, the Moon's nodes, and the search for the moments a planet returns to an earlier position.
Which zodiac
We use the tropical zodiac, the one used by most Western astrology. It starts at the point where the Sun crosses the equator at the March equinox, and each sign covers 30 degrees from there. Positions are measured as seen from the centre of the Earth, and they include the small corrections for the time light takes to arrive and for the wobble of the Earth's axis.
Sidereal and Vedic systems use a different starting point, so their signs differ from ours by about 24 degrees.
Checked against NASA
NASA's Jet Propulsion Laboratory publishes the positions used to navigate spacecraft, through a service called Horizons. We took values from Horizons and compared them with our own. The gap is given in arcseconds; there are 3,600 arcseconds in one degree.
Saturn
The largest gap across 13 dates is 5.4 arcseconds, which is 0.0015 of a degree. Saturn takes about 17 minutes to move that far at its fastest.
| Date | NASA JPL | This site | Gap |
|---|---|---|---|
| Jan 1, 1960 | 279.4563° | 279.4549° | 5.0″ |
| Dec 31, 1969 | 32.0648° | 32.0646° | 0.8″ |
| Jan 1, 1980 | 176.9885° | 176.9870° | 5.4″ |
| May 5, 1988 | 272.0756° | 272.0763° | 2.8″ |
| Dec 31, 1989 | 285.5646° | 285.5645° | 0.4″ |
| Jan 1, 2000 | 40.4000° | 40.4004° | 1.8″ |
| Dec 31, 2009 | 184.5033° | 184.5018° | 5.1″ |
| Jan 6, 2018 | 272.0761° | 272.0763° | 0.7″ |
| Jan 1, 2020 | 291.4451° | 291.4446° | 1.9″ |
| Jan 1, 2030 | 48.3978° | 48.3972° | 2.1″ |
| Feb 15, 2047 | 272.0763° | 272.0763° | 0.2″ |
| Jun 12, 2047 | 272.0765° | 272.0763° | 0.7″ |
| Dec 21, 2076 | 272.0752° | 272.0763° | 4.2″ |
Venus
The largest gap across 10 dates is 4.8 arcseconds. Venus crosses that distance in about 2 minutes.
| Date | NASA JPL | This site | Gap |
|---|---|---|---|
| Jan 1, 1950 | 316.9795° | 316.9793° | 0.8″ |
| Jan 1, 1960 | 238.9038° | 238.9035° | 1.1″ |
| Dec 31, 1969 | 274.3134° | 274.3134° | 0.1″ |
| Jan 1, 1980 | 311.8083° | 311.8084° | 0.1″ |
| Dec 31, 1989 | 306.3051° | 306.3043° | 2.7″ |
| Jan 1, 2000 | 241.2300° | 241.2294° | 2.0″ |
| Dec 31, 2009 | 277.4305° | 277.4307° | 0.5″ |
| Jan 1, 2020 | 314.5457° | 314.5455° | 0.5″ |
| Dec 31, 2029 | 289.7893° | 289.7907° | 4.8″ |
| Jan 1, 2040 | 243.7428° | 243.7426° | 0.6″ |
The Sun
The solar return calculator depends on the Sun's position to the second. Across 9 dates the largest gap is 0.8 arcseconds, which the Sun covers in about 19 seconds.
| Date | NASA JPL | This site | Gap |
|---|---|---|---|
| Mar 1, 1950 | 339.8396° | 339.8396° | 0.0″ |
| Mar 19, 1960 | 358.3976° | 358.3977° | 0.3″ |
| Apr 7, 1970 | 16.7625° | 16.7627° | 0.7″ |
| Apr 25, 1980 | 34.9402° | 34.9402° | 0.2″ |
| May 14, 1990 | 52.9494° | 52.9492° | 0.8″ |
| Jun 1, 2000 | 70.8090° | 70.8092° | 0.7″ |
| Jun 20, 2010 | 88.5896° | 88.5895° | 0.1″ |
| Jul 8, 2020 | 106.3009° | 106.3009° | 0.0″ |
| Jul 27, 2030 | 124.0433° | 124.0432° | 0.2″ |
Mercury and Mars
Across 9 dates each, the largest gap is 3.4 arcseconds for Mercury and 2.2 arcseconds for Mars.
| Date | NASA JPL | This site | Gap |
|---|---|---|---|
| Mar 1, 1950 | 319.1756° | 319.1759° | 1.1″ |
| Mar 19, 1960 | 343.5296° | 343.5300° | 1.6″ |
| Apr 7, 1970 | 31.2594° | 31.2588° | 2.0″ |
| Apr 25, 1980 | 16.3227° | 16.3228° | 0.1″ |
| May 14, 1990 | 38.2764° | 38.2763° | 0.4″ |
| Jun 1, 2000 | 92.6928° | 92.6923° | 1.9″ |
| Jun 20, 2010 | 78.3935° | 78.3926° | 3.4″ |
| Jul 8, 2020 | 96.2604° | 96.2610° | 2.0″ |
| Jul 27, 2030 | 150.4643° | 150.4638° | 1.5″ |
| Date | NASA JPL | This site | Gap |
|---|---|---|---|
| Mar 1, 1950 | 189.2378° | 189.2376° | 0.7″ |
| Mar 19, 1960 | 319.0082° | 319.0084° | 0.8″ |
| Apr 7, 1970 | 51.8439° | 51.8440° | 0.3″ |
| Apr 25, 1980 | 147.8303° | 147.8299° | 1.2″ |
| May 14, 1990 | 347.2193° | 347.2196° | 0.8″ |
| Jun 1, 2000 | 79.5012° | 79.5014° | 0.7″ |
| Jun 20, 2010 | 156.8110° | 156.8104° | 2.2″ |
| Jul 8, 2020 | 5.8612° | 5.8610° | 0.7″ |
| Jul 27, 2030 | 106.9413° | 106.9414° | 0.1″ |
Juno and Chiron
Astronomy Engine does not cover asteroids or Chiron, so these are the two bodies whose orbits we work out ourselves. The method is the same for both, described here for Juno. We take Juno's position and speed from Horizons at 11 dates, 20 years apart, and calculate its path between them day by day under the gravity of the Sun and the eight planets. Each stretch starts from the nearer NASA value, so no result is more than ten years from one. As a check, a full 20-year stretch calculated from one NASA value lands within 2 arcseconds of the next.
The calculator stores that path as 739 positions, one every 100 days from 1898 to 2100, and fills in the days between. Compared with Horizons' own answer for where Juno appears from Earth, the largest gap across 11 dates is 0.8 arcseconds.
| Date | NASA JPL | This site | Gap |
|---|---|---|---|
| Jan 1, 1930 | 268.0081° | 268.0081° | 0.2″ |
| Jan 1, 1941 | 157.5751° | 157.5752° | 0.1″ |
| Jan 2, 1952 | 276.5630° | 276.5631° | 0.2″ |
| Jan 2, 1963 | 176.3467° | 176.3467° | 0.1″ |
| Jan 2, 1974 | 286.4320° | 286.4318° | 0.5″ |
| Jan 2, 1985 | 190.5777° | 190.5779° | 0.8″ |
| Jan 3, 1996 | 295.9768° | 295.9769° | 0.3″ |
| Jan 3, 2007 | 202.9812° | 202.9812° | 0.1″ |
| Jan 3, 2018 | 307.0139° | 307.0139° | 0.1″ |
| Jan 3, 2029 | 212.7405° | 212.7405° | 0.1″ |
| Jan 4, 2040 | 319.1847° | 319.1848° | 0.2″ |
Chiron moves more slowly, so its path is stored as 370 positions, one every 200 days. The largest gap across 11 dates is 0.4 arcseconds.
| Date | NASA JPL | This site | Gap |
|---|---|---|---|
| Jan 1, 1930 | 39.7820° | 39.7821° | 0.2″ |
| Jan 1, 1941 | 119.6928° | 119.6928° | 0.1″ |
| Jan 2, 1952 | 275.3975° | 275.3975° | 0.0″ |
| Jan 2, 1963 | 337.1516° | 337.1516° | 0.0″ |
| Jan 2, 1974 | 16.3933° | 16.3933° | 0.1″ |
| Jan 2, 1985 | 64.1061° | 64.1061° | 0.1″ |
| Jan 3, 1996 | 193.6958° | 193.6959° | 0.4″ |
| Jan 3, 2007 | 307.9300° | 307.9299° | 0.4″ |
| Jan 3, 2018 | 354.6920° | 354.6919° | 0.4″ |
| Jan 3, 2029 | 33.9377° | 33.9377° | 0.2″ |
| Jan 4, 2040 | 99.6820° | 99.6821° | 0.3″ |
The Moon's North Node
The largest gap across 4 dates is 8.3 arcseconds. For this comparison both values are measured against the fixed reference frame astronomers call J2000, because that is how Horizons reports them. On Jan 1, 2000 that corresponds to a North Node at 3°57′ Leo in the zodiac of that date.
| Date | NASA JPL | This site | Gap |
|---|---|---|---|
| May 5, 1988 | 351.7636° | 351.7618° | 6.4″ |
| Jan 1, 2000 | 123.9581° | 123.9560° | 7.2″ |
| Jan 6, 2018 | 135.0255° | 135.0238° | 6.3″ |
| Oct 10, 2026 | 328.5158° | 328.5135° | 8.3″ |
Black Moon Lilith
Lilith is the far point of the Moon's orbit, and it comes in two versions. Mean Lilith is the average position. We take it from the standard formula for the Moon's mean orbit and project it onto the zodiac, which is how the ephemerides astrologers use list it. The dates it changes sign are fixed by that formula, and the automatic tests hold them in place.
True Lilith is worked out from the Moon's position and speed at one instant. It is far more delicate than any other figure on this site: a change of one part in ten thousand in the Moon's speed can move it by a tenth of a degree or more. Against positions derived from Horizons orbit data, ours differs by up to 0.14 degrees. That is why the Lilith calculator shows true Lilith in whole degrees only.
| Date | From NASA JPL data | This site | Gap |
|---|---|---|---|
| May 5, 1988 | 148.817° | 148.953° | 0.137° |
| Jan 1, 2000 | 252.998° | 252.964° | 0.034° |
| Jan 6, 2018 | 266.311° | 266.256° | 0.055° |
| Oct 10, 2026 | 282.666° | 282.540° | 0.126° |
Midheaven and Ascendant
These two points depend on how far the sky has turned at your birthplace, which astronomers call local sidereal time. Ours agrees with Horizons to within 0.36 seconds of time at Chicago's coordinates. One second of sidereal time moves the Midheaven by about 15 arcseconds.
| Date (UT) | NASA JPL | This site |
|---|---|---|
| Jun 15, 1995 | 7h 13m 50.5s | 7h 13m 50.6s |
| Jan 1, 2000 | 12h 51m 14.0s | 12h 51m 13.7s |
| Oct 11, 2026 | 3h 29m 07.1s | 3h 29m 07.1s |
From the sidereal time, the Midheaven and Ascendant follow by standard spherical trigonometry. We check that step a second way: for each test chart we place a point at the calculated degree and confirm, with the astronomy library's own sky-position routine, that the Midheaven lies exactly on the meridian and the Ascendant exactly on the eastern horizon.
These same values run as automatic tests every time the site is rebuilt. If a change to the code moved any result outside its limit, the tests would fail.
Dominant planet
The dominant planet is a different kind of result. The planet positions behind it are as exact as everything above, but the scoring that turns them into one answer is a choice, not a measurement. Astrologers have never agreed on a single method. Ours is set out in full on the dominant planet calculator page, and the calculator lists the reason for every point it gives.
Birth time and time zone
When you enter a birth time, you also choose the time zone of your birthplace. The engine converts that clock time to Universal Time using the time zone records built into your browser, which include past daylight saving rules. Those records are reliable from 1970 onward and less complete before that for some places.
When you leave the time out, the engine uses midday. It then works out the earliest and latest moments your birth date could have fallen anywhere in the world and tells you how much the answer could change.
Birthplaces
Calculators that need a birthplace look it up in a list of 34,132 cities and towns, each with its latitude, longitude and time zone. The list comes from GeoNames, which publishes it under the Creative Commons Attribution 4.0 licence, and covers places with more than 15,000 people. Only the part of the list matching the first letter you type is downloaded, and the search happens on your device.
Limits you should know about
- The calculators accept birth years from 1900 to 2100.
- When a planet is almost standing still, a gap of a few arcseconds can move an exact date by several hours.
- True Black Moon Lilith is accurate to about a fifth of a degree, not to the arcsecond like the planets. Mean Lilith does not have this limit.
- A birthday on the very day a planet or node changed sign needs a birth time to settle the sign. The calculators say so when it applies.
- Houses are counted in whole signs from the Ascendant. Other house systems, such as Placidus, can put a point one house away.
- The city list leaves out places with fewer than 15,000 people. For a town that is missing, the nearest larger city in the same time zone gives a result within a fraction of a degree.
- Close to the Arctic and Antarctic circles the Ascendant behaves unusually, and results there should be treated with care.
Your details stay with you
All of this runs in your browser. The birthday you enter is not sent to us. See the privacy page.