Methodology

How we calculate your chart.

Here is what a chart on zodiacs.org claims, how each part is calculated, and where its precision has honest limits.

The ephemeris

Planetary positions come from Astronomy Engine, an open-source astronomical library accurate to about one arcminute (a sixtieth of a degree). We compute apparent geocentric tropical longitudes of date — the standard frame of Western astrology — including light-time, aberration, and nutation. The Moon uses a dedicated high-accuracy lunar model; the lunar node is the true node, derived from the Moon's instantaneous orbit.

Every change to the engine must pass an automated accuracy gate before it ships: positions are compared against NASA JPL Horizons reference data at multiple epochs (including a 1907 chart), with tolerances of a few hundredths of a degree for planets. The test suite also checks the sky against itself: at sunrise the computed ascendant must match the Sun's position; at solar noon the midheaven must.

Angles and houses

The ascendant and midheaven are computed from Greenwich apparent sidereal time, your birthplace coordinates, and the obliquity of the ecliptic (IAU 2006). We offer whole sign houses (the oldest system — each house is one complete sign) and Placidus (the most common modern system, computed by iterative semi-arc division). Placidus is mathematically undefined near the poles; above 66° latitude we fall back to whole sign and say so on the chart.

Progressions, returns, and composites

Secondary progressions use the day-for-a-year method: one civil day after birth stands for one tropical year (365.2422 days) of life. We progress the planets only — progressed house angles require a convention we haven't adopted, so we don't show them. A solar-return chart is a full chart cast for the instant the Sun returns to its natal longitude, accurate to the same standard as every other chart here. A composite chart takes the shorter-arc midpoint of each pair of matching planets across two charts; composite houses require a location convention we won't fake, so composite charts are shown without houses.

Time zones

A birth chart is only as good as its clock conversion. We resolve your birth time against the complete IANA time zone history of your birthplace: daylight saving in all its regional weirdness, wartime clock changes, and pre-standardization local mean time — including offsets with seconds, like Mexico City's −6:36:36 before 1922.

  • Skipped times (spring-forward gaps) shift forward across the gap — the standard convention — and the chart says so.
  • Repeated times (fall-back folds) use the earlier pass, flagged on the chart.
  • Very old dates use the local mean time of your birthplace's reference zone, the same convention professional software applies. For births before civil time standardization, a chart can differ by a few clock minutes from tools that use the exact town meridian — we flag these charts too.

Every result lists its computed UTC instant, so the conversion is yours to check.

Birthplace search

Place lookup runs against a bundled index of ~34,000 cities from GeoNames (CC BY 4.0), each carrying its IANA time zone. Coordinates are stored to ~1 km precision — far finer than a birth chart needs.

Privacy

The entire calculation happens in your browser. Your birth date, time, and place are not sent to a chart API, and there is no account requirement or analytics attached to birth data. Charts you save live in your browser's local storage first, deletable by you at any time. If you choose account sync, saved charts upload to your Supabase account and are protected by row-level security.

Honest limits

  • Chiron and the asteroids aren't included yet (the engine's remit is major bodies); they're planned via public-domain JPL data.
  • Unknown birth times get a noon chart: planets are exact to the day, but rising sign and houses genuinely require the clock, and we won't pretend otherwise.
  • Supported birth years: 1800–2199.

Daily publication system

Zodiacs.org is maintained through automated editorial systems rather than a traditional human editorial staff. A model is not allowed to invent a sky fact or approve its own output. The daily system starts with a deterministic noon-UTC snapshot: body positions, lunar phase, and any exact events covered by that month’s committed transit file. Missing event coverage is labeled as unavailable rather than presented as a quiet day.

Today’s short readings are rendered from versioned local sentence templates. Every published line carries stable evidence IDs for its source position or event and, where relevant, the derived solar house. A separately implemented astronomy audit recomputes positions, lunar state, event geometry, and the monthly day slice. A deterministic copy check then rebuilds all twelve readings, checks their IDs, rejects unsafe certainty and restricted advice, tests sign-to-sign distinctness, and compares hashes. That copy check intentionally reuses the versioned renderer and is not described as an independent second implementation. The same process is replayed across the previous 30 days on every run.

Those evidence IDs establish the astronomical input and the derived whole-sign solar house. Phrases about a house’s life themes are versioned editorial conventions, not astronomical measurements; the template ID identifies that interpretive layer instead of disguising it as an observed fact.

AI agents may propose new templates or a constrained selection system in a future edition, but free-form model text cannot pass the current release gate. The editorial constitutionis public. The exact policy version, generation mode, source hashes, and verification result for the live edition are available in the daily publication record. Material fixes appear in the correction log.

Found a discrepancy? We treat accuracy reports as bugs. The sky is checkable, and so is our arithmetic.