Loading...
Loading...
Every calculation on Dekho Panchang is derived from first principles using the same mathematics that powered the observatories of Ujjain. No black-box APIs. No guesswork. Every result is reproducible.
Dekho Panchang was built on a single conviction: astronomical accuracy is non-negotiable. The Vedic calendar tradition rests on observations that ancient Indian astronomers refined over millennia — observations so precise that the Surya Siddhanta's sidereal year (365.2563627 days) differs from the modern value by less than two seconds per year.
We honour that tradition by doing every computation from first principles. Planetary positions, tithi boundaries, nakshatra transitions, sunrise/sunset times, dasha dates — all are calculated using peer-reviewed astronomical algorithms and verified against independent reference data before release.
There are no external astrology APIs. Every result you see on this site is a direct product of mathematics, running on our servers, from the parameters you provide. This means every result is fully reproducible: given the same date, time, and geographic coordinates, the same calculation will always produce the same answer.
Accurate planetary positions are the foundation of everything else. We use a two-tier engine:
Primary — Swiss Ephemeris (DE431 / VSOP87): The Swiss Ephemeris is based on JPL's DE431 lunar theory and the VSOP87 planetary theory, the same mathematical foundations used by major observatories worldwide. It achieves sub-arcsecond accuracy for all planets from 13,200 BCE to 17,191 CE — far beyond what any panchang calculation requires.
Fallback — Jean Meeus "Astronomical Algorithms" (1991): When the full Swiss Ephemeris is not available, we fall back to Jean Meeus's algorithms, the gold standard for computational astronomy in software. Accuracy: Sun positions within ~0.01°, Moon within ~0.5°. This fallback is clearly flagged in the output via internal warnings.
Corrections applied: All positions include nutation (the 18.6-year wobble of Earth's rotational axis), aberration (the apparent shift of stars due to Earth's orbital velocity), and light-time correction (the time taken for reflected sunlight to reach the observer — significant for outer planets). The result is the apparent topocentric position as seen from the observer's location.
Ayanamsha: We use the Lahiri Ayanamsha (Chitrapaksha) by default — the official standard adopted by India's Calendar Reform Committee in 1957. The current value is approximately 24°09'. All planetary positions displayed on this site are sidereal (nirayana), computed by subtracting the Lahiri ayanamsha from the tropical ecliptic longitude.
Verification: Computed positions have been cross-checked against NASA/JPL Horizons ephemeris data for multiple test dates and locations, confirming agreement within instrument-grade tolerances.
A tithi is defined as 12° of elongation between the Moon and the Sun along the ecliptic. There are 30 tithis in a lunar month (15 in Shukla Paksha, 15 in Krishna Paksha). We compute the exact moment the elongation crosses each 12° boundary using a bisection algorithm, converging to within 0.0001° — producing start and end times accurate to the nearest minute. Because the Moon's elliptical orbit causes its speed to vary from ~12°/day to ~15°/day, no fixed-duration approximation is used. All boundaries are computed from the precise instantaneous elongation.
The 27 nakshatras each span exactly 13°20' (360° ÷ 27) of sidereal longitude. The Moon's nakshatra at any moment is computed from its sidereal longitude: ⌊λ_moon_sidereal ÷ 13.333°⌋. Transition times are computed via bisection to arc-minute precision. The 28th nakshatra Abhijit (used in Muhurta) spans 276°40'–280°53'20" sidereal longitude and is computed separately.
Each of the 27 yogas corresponds to 13°20' of the sum of the Sun's and Moon's sidereal longitudes: yoga = ⌊(λ_sun + λ_moon) mod 360° ÷ 13.333°⌋. Because this sum advances faster than either body alone, each yoga lasts roughly 0.9 days on average, though actual duration varies considerably with the Moon's velocity.
A karana is half a tithi — 6° of Sun-Moon elongation. Each tithi contains two karanas. The cycle of 11 karanas (4 fixed Sthira karanas + 7 repeating Chara karanas) follows the rules in Brihat Parashara Hora Shastra exactly: Vishti (Bhadra) falls at positions 7, 14, 21, and 28 of the 60-karana cycle. This enables classical muhurta inauspiciousness calculations that flag Vishti karanas automatically.
The weekday lord is derived from the Julian Day Number: weekday = ⌊JD + 1.5⌋ mod 7, where 0 = Sunday, 1 = Monday, …, 6 = Saturday. This matches the UTC weekday convention (Date.getUTCDay()). The vara lord (Surya, Chandra, Mangala, Budha, Guru, Shukra, Shani) follows from this weekday index per classical Jyotish.
Sunrise/Sunset Algorithm: We use the Meeus algorithm with the full geometric solar position, not simplified tables. Atmospheric refraction of exactly 34' (arcminutes) is applied at the horizon — matching the classical definition used in Indian panchang tradition. The "upper limb" convention is used: sunrise is the moment the upper edge of the Sun's disc first appears above the geometrical horizon after applying refraction.
Observer elevation: Altitude above sea level is factored into the horizon dip calculation. This matters for mountainous regions: at 2000 m elevation, sunrise can be several minutes earlier than at sea level due to the extended line of sight.
Accuracy: Sunrise and sunset times computed by this engine are within ±1 minute of NASA solar tables and United States Naval Observatory (USNO) data for all test locations (including equatorial, mid-latitude, and high-latitude sites). Polar day/night edge cases are handled gracefully.
Moonrise/Moonset: The Moon requires special treatment because its parallax (~1°) is the largest of any solar system body visible to the naked eye. We apply horizontal parallax correction (the difference between the Moon's geocentric and topocentric positions) before computing rise/set times. This correction can shift the computed moonrise by up to 60 minutes depending on the Moon's distance and the observer's latitude.
Vimshottari Dasha is the primary dasha system used. The 120-year cycle is divided among nine planets (grahas) with the following durations: Ketu 7y, Venus 20y, Sun 6y, Moon 10y, Mars 7y, Rahu 18y, Jupiter 16y, Saturn 19y, Mercury 17y. The starting point is determined by the Moon's position within its birth nakshatra: the fraction of the nakshatra remaining at birth multiplies the planet's dasha duration to give the balance of the first dasha.
Date arithmetic: All dasha dates are computed using millisecond-precision arithmetic: `new Date(baseDate.getTime() + years × 365.25 × 86400 × 1000)`. This avoids the month-truncation error that plagues many dasha calculators (where a 7.5-year dasha calculated via setMonth() can drift by weeks over successive periods). No fixed-interval shortcuts are used anywhere.
UTC internal representation: All birth times are converted to UTC immediately upon entry. Dasha dates are computed in UTC and converted to the observer's local timezone only for display. This prevents the class of bug where a birth time of 10:30 IST is incorrectly computed as 10:30 UTC.
Additional dasha systems: Yogini Dasha (36-year cycle), Chara Dasha (Jaimini system using sign periods), and Narayana Dasha (sign-based with reversals for odd/even signs) are all available. Each follows its classical rules as described in the primary Jyotish texts.
House (Bhava) System: We use the Whole Sign house system by default, the oldest and most widely used system in classical Jyotish. The Lagna (Ascendant) degree is computed from the Local Sidereal Time and the observer's geographic latitude using the standard astronomical formula. All 12 bhavas are then whole signs counted from the Lagna sign.
Planetary Dignities (per BPHS Ch. 3–4): Each planet's condition is assessed by its placement in its sign of exaltation, debilitation, moolatrikona, own sign, or friend/enemy sign. The canonical tables from Brihat Parashara Hora Shastra are used — exaltation degrees, moolatrikona ranges, and natural friendship/enmity tables are defined once in a single canonical source file and referenced everywhere to prevent drift.
Shadbala (Six-fold Strength): All six components are computed per BPHS Ch. 21–27: Sthana Bala (positional strength — uccha, moolatrikona, own sign, great friend, friend, neutral, enemy, great enemy, debilitation), Dig Bala (directional strength — Jupiter/Mercury strong in East/1st, Sun/Mars in South/10th, Saturn in West/7th, Moon/Venus in North/4th), Kaala Bala (temporal strength — day/night, paksha, tribhaga, abda, masa, vara, hora, ayana), Cheshta Bala (motional strength — retrograde planets get the maximum), Naisargika Bala (permanent natural strength — Sun > Moon > Venus > Jupiter > Mercury > Mars > Saturn), Drik Bala (aspectual strength from other planets).
Ashtakavarga: The Sarvashtakavarga and Prashtarashtakavarga are computed following BPHS Ch. 66–72 exactly. Each planet contributes bindus (dots) to the 12 rashi positions based on its natal placement relative to the other planets and the Lagna. The total bindus across all 8 significators give the Sarvashtakavarga, used for transit strength prediction.
Yoga Detection: 30+ classical yogas are detected, including all five Mahapurusha Yogas (Ruchaka, Bhadra, Hamsa, Malavya, Shasha), Gajakesari Yoga, Chandra-Mangala Yoga, Adhi Yoga, Neecha Bhanga Raja Yoga, Viparita Raja Yoga, and major Raja Yoga combinations. Each yoga has a frequency-validated detection condition — we measure expected occurrence rates in random charts to ensure "rare" yogas are not triggering in 40% of charts (a common failure mode in other implementations).
Combustion and Planetary War (Graha Yuddha): Combustion is computed with BPHS-specified orbs, with reduced orbs for retrograde Mercury (12°) and Venus (8°) per BPHS. Planetary war is detected when two planets are within 1° of each other in longitude; the winner is determined by northern latitude (greater positive latitude = victor), per the Surya Siddhanta rule.
Tithi-based determination: Every festival and vrat is defined by its masa (month), paksha (fortnight), and tithi — exactly as prescribed in the Dharmasindhu and Nirnaya Sindhu. These are the canonical texts governing festival observance in the Smarta and Vaishnava traditions respectively. The engine evaluates each tithi's presence across the calendar day to determine the correct observance date.
Amanta month convention: All festival definitions use Amanta (new-moon-to-new-moon) month names, the convention used in all major Jyotish references. During Krishna Paksha, Purnimanta months are one month ahead of Amanta — the engine always compares against the Amanta masa to prevent the class of error where festivals fall a full month early.
Kala-Vyapti rules: The "time prevalence" rule determines which calendar day gets a tithi that spans two days. The nine classical kala windows (Madhyahna, Pradosh, Nishita, Arunodaya, Chandrodaya, Pratah, Aparahna, Sunrise, Sunset) are evaluated in priority order per Nirnaya Sindhu. For example, Ekadashi fasting is observed on the day when Ekadashi tithi is present at Arunodaya (pre-dawn), not merely any time during the calendar day.
Adhika Masa (Leap Month) Detection: The intercalary month is detected astronomically from New Moon positions: when two consecutive New Moons fall within the same solar month (i.e., the Sun does not transit a rashi boundary between them), the first lunar month is declared Adhika. This produces correctly-placed leap months verified against the Indian Government's official Saka calendar.
The foundational text of Parashari Jyotish. Primary authority for planetary dignities (Ch. 3–4), house significations (Ch. 11–12), Shadbala (Ch. 21–27), Ashtakavarga (Ch. 66–72), and yoga identification. All our tables for exaltation degrees, moolatrikona ranges, natural friendships, and house lordships are sourced directly from BPHS and cross-checked against multiple critical editions.
The foundational astronomical text used for core constants: sidereal year length, planetary revolution periods, and eclipse computation theory. The text's formula for the Moon's mean motion (13°10'35" per day) informs our anomaly calculations. The Graha Yuddha (planetary war) victor rule — greater northern latitude wins — is sourced directly from this text.
The two definitive smriti digests governing festival and vrat observance rules across Smarta and Vaishnava traditions. The Dharmasindhu by Kasinatha Upadhyaya and the Nirnaya Sindhu by Kamalakara Bhatta provide the kala-vyapti (time-prevalence) rules and the specific tithi, paksha, and masa conditions for all major festivals encoded in the festival engine.
Used for yoga interpretation and planet-in-sign significations in the interpretive commentary (Tippanni) system. Particularly relied upon for graha phala (planetary effects) in the 12 rashis and for interpreting Raja Yoga and Dhana Yoga combinations.
Supplementary authority for Chara and Yogini dasha rules and for Jaimini Karaka determination. The text's treatment of Atma Karaka, Amatya Karaka, and other Jaimini-specific karakas informs the Jaimini-system computations.
The computational backbone of the astronomical engine. Meeus's algorithms for solar and lunar position, sunrise/sunset, Julian Day conversions, and atmospheric refraction are implemented directly. Known limitations: Jupiter retrograde stations can be ~40 days late vs. Swiss Ephemeris values with the simplified series; Saturn ~13 days late. These fallback-mode limitations are flagged internally.
Sunrise / Sunset
±1 minute
of NASA solar tables and USNO data for all test locations
Tithi / Nakshatra boundaries
±1–2 minutes
of multiple independent panchang reference sources
Planetary positions (Sun)
~0.01°
via Meeus; sub-arcsecond via Swiss Ephemeris
Planetary positions (Moon)
~0.5°
via Meeus; sub-arcsecond via Swiss Ephemeris
Festival dates
Exact day
verified against the Indian Government's official Saka calendar and multiple traditional panchangs
Dasha date precision
Millisecond
no month-truncation approximations; all arithmetic in UTC epoch time
Before any astronomical computation is released, it is spot-checked against at least three independent reference sources for at least three test dates and locations. All computations are cross-checked against NASA/JPL Horizons ephemeris data and verified against the Indian Government's official calendar data. Where discrepancies exceed the stated tolerances, the computation is revised before release.
No external astrology APIs. Every value computed by Dekho Panchang is derivable from the input parameters (date, time, latitude, longitude) alone. Given the same inputs, the same outputs will always result. This is a deliberate architectural choice: it means our results are auditable, and any discrepancy can be traced to a specific algorithm step.
Timezone from coordinates only. We never use the browser's system timezone for birth chart computations. Geographic coordinates are converted to an IANA timezone identifier using a coordinate-based lookup, and all local-time conversions use that resolved timezone. This prevents the class of error where a birth time of "10:30 IST" is silently computed as "10:30 in the server's timezone."
Historical timezone corrections. Our timezone resolution is aware of historical timezone changes. For example, India operated on UTC+6:30 from September 1941 to October 1945 during World War II, and on UTC+5:30:20 (LMT-based) before 1906. Birth charts for these periods use the correct historical offset.
Single canonical source for constants. Every Jyotish constant (exaltation degrees, moolatrikona ranges, sign lords, natural friendships, karana cycles, nakshatra boundaries) is defined exactly once in a canonical source file and imported everywhere else in the codebase. This eliminates the class of error — common in multi-file astrological software — where the same table has different values in different modules, producing inconsistent results on different pages.
Midnight-crossing time ranges. Choghadiya, Hora, Varjyam, and Amrit Kalam windows that cross midnight are handled with wrap-aware comparison logic (`if end < start, check now >= start OR now < end`), preventing the "NOW badge never appears for night slots" class of bug.
The story behind the project, the author, and the philosophy.
100+ modules covering Panchang basics to advanced Shadbala and Jaimini.
Dekho Panchang — dekhopanchang.com