Planetary positions
Positions of the Sun, Moon and planets are computed with astronomy-engine, an open-source (MIT) library based on the VSOP87 and ELP lunar theories and checked against NASA JPL Horizons. We use apparent geocentric positions (corrected for light-time and aberration) on the true ecliptic of date.
For ΔT (the difference between Earth-rotation time and uniform time) we use the same yearly values as Swiss Ephemeris from 1990 to 2150, so present and future dates agree closely with it.
Sidereal zodiac and ayanamsa
Vedic astrology measures positions against the fixed stars. We subtract the Lahiri (Chitrapaksha) ayanamsa, the standard recommended by the Government of India's Calendar Reform Committee (1955). It is computed from its 2000 value with the IAU 2006 precession formula, calibrated to Swiss Ephemeris' SE_SIDM_LAHIRI. Like Swiss Ephemeris in sidereal mode, nutation is removed from both the planets and the ayanamsa.
Accuracy test
Every release is compared with Swiss Ephemeris 2.10 at 400 random moments and places between 1900 and 2100. Differences in arc-seconds (1″ = 1/3600 of a degree):
| Quantity | Largest difference | Average difference |
|---|---|---|
| Moon | 3.3″ | 0.8″ |
| Sun | 1.6″ | 0.5″ |
| Mercury | 11.2″ | 2.0″ |
| Venus | 15.7″ | 1.8″ |
| Mars | 9.8″ | 1.5″ |
| Jupiter | 9.1″ | 2.9″ |
| Saturn | 12.0″ | 3.2″ |
| Rahu (mean node) | 0.2″ | 0.1″ |
| Ascendant | 5.3″ | 0.7″ |
| Lahiri ayanamsa | 0.14″ | 0.14″ |
For scale, a nakshatra pada is 3°20′ = 12,000″ and the Moon moves about 0.5″ per second of time. A 4″ difference therefore shifts a nakshatra end time by under ten seconds. Retrograde status matched in every test case.
Ascendant and houses
The ascendant (Lagna) is calculated from local sidereal time, the true obliquity of the ecliptic and the birth latitude. The Lagna chart uses whole-sign houses: the rising sign is the 1st house, the next sign the 2nd, and so on. Places inside the Arctic and Antarctic circles are not supported because the ascendant becomes undefined there.
Time zones
Birth places come from GeoNames with their IANA time zone. Historical offsets are applied from the IANA tz database — for India this includes the +06:30 war-time offset of 1942–45. Older city times (Calcutta Time to 1948, Bombay Time to 1955) and Local Mean Time can be chosen in the birth form's time zone settings.
Rahu and Ketu
We use the mean lunar node (Meeus, Astronomical Algorithms, eq. 47.7), as most Indian almanacs do. Ketu is exactly opposite Rahu.
Divisional charts
The sixteen Shodashavarga charts (D1 to D60) follow Brihat Parashara Hora Shastra: for example, Navamsa (D9) runs continuously from Aries through the zodiac, Dashamsha (D10) starts from the sign itself for odd signs and from the 9th for even signs, and Hora (D2) uses the Parashari Sun/Moon halves.
Vimshottari dasha
The dasha sequence starts from the lord of the Moon's nakshatra at birth. The unexpired fraction of that nakshatra gives the balance of the first Mahadasha. Sub-periods are proportional (Antardasha and Pratyantar). A dasha year is 365.2425 days.
Panchang
- Tithi: each 12° of Moon–Sun elongation. Nakshatra: each 13°20′ of the Moon's sidereal longitude. Yoga: each 13°20′ of the sum of the sidereal Sun and Moon. Karana: half a tithi.
- End times are found by searching for the exact moment the angle crosses its boundary, to within one second.
- Sunrise and sunset: upper limb of the Sun on the sea-level horizon with standard refraction, the convention used by most modern panchangs and national almanacs.
- Rahu Kaal, Yamaganda and Gulika: one-eighth of daytime, by weekday. Abhijit: the 8th of 15 day muhurtas. Brahma Muhurta: the 14th night muhurta (two muhurtas before sunrise).
- Choghadiya and Hora: eight and twelve equal parts of day and night, using actual local sunrise and sunset.
- Lunar month: named by the Sun's sidereal sign at the new moon that begins it (Amanta), with Purnimanta shown alongside; a month with no solar ingress is Adhik (intercalary).
- Vrat dates: the tithi prevailing at local sunrise (udaya tithi). Festivals with special rules (moonrise, pradosh, nishita) can differ by a day.
Kundli Milan
Ashtakoota scoring (Varna 1, Vashya 2, Tara 3, Yoni 4, Graha Maitri 5, Gana 6, Bhakoot 7, Nadi 8) follows the Muhurta Chintamani tables. Vashya uses the half-sign split of Sagittarius and Capricorn. Regional variations exist in the Vashya, Yoni and Gana tables, so scores on other sites may differ by a point or two. We note commonly accepted Nadi and Bhakoot cancellations but always show the raw score.
Doshas and yogas
Manglik dosha is checked for Mars in houses 1, 2, 4, 7, 8 and 12 from the Lagna, the Moon and Venus, with widely cited cancellations listed separately. Kaal Sarp requires all seven planets from the Sun to Saturn on one side of the nodal axis. Sade Sati periods are found from the exact moments Saturn crosses sidereal sign boundaries, merging retrograde re-entries into one period.
Horoscopes
Horoscopes are not written by hand. For each Moon sign we calculate which house every planet is transiting (counted from the Moon sign) and apply the classical gochar results of Phaladeepika (chapter 26): for example, the Moon is favourable in the 1st, 3rd, 6th, 7th, 10th and 11th houses; Jupiter in the 2nd, 5th, 7th, 9th and 11th; Saturn, Rahu and Ketu in the 3rd, 6th and 11th. Daily readings are calculated for sunrise in New Delhi (IST). Every statement on a horoscope page is shown with the transit that produces it.
We do not apply vedha (obstruction) or Ashtakavarga to sign-based horoscopes, because those need a personal chart. Your full kundli and running dasha always take precedence over a sign horoscope.
Limits
Astrology is a traditional system of interpretation, not a predictive science, and nothing here should replace professional medical, legal or financial advice. The calculations are exact; the meanings are tradition.
Questions or a discrepancy you want us to check? Contact us with the details and the source you compared against.