Natal Chart How It Works
1. Birth Data In
The calculation starts from four pieces of data: your birth date, birth time, birth location (latitude and longitude), and the timezone that location was observing at that moment, including any daylight saving offset in effect that day. Birth time and location matter more here than almost anywhere else in the chart, because they're what the house calculation (below) depends on; get either wrong and every house placement shifts. Local birth time is converted to Universal Time (UTC), then to a Julian day number, a single continuous count of days astronomers use so any two moments in history can be compared as plain numbers.
2. Ephemeris: Where Everything Actually Was
With a Julian day in hand, an ephemeris (a precomputed table of planetary motion, in our case the Swiss Ephemeris) returns two numbers for each of the ten planets (plus the Moon's North Node, Chiron, and Lilith): its ecliptic longitude (0°–360°, its position around the zodiac circle) and its speed (how many degrees per day it's currently moving, and in which direction). Longitude is what everything downstream (sign, house, and aspect) is computed from; speed is what later distinguishes an aspect that's tightening from one that's loosening.
3. Sign: Dividing the Circle into 12
A planet's sign is read directly off its longitude: the 360° circle splits into twelve 30° slices in order, so a longitude of 0°–30° is Aries, 30°–60° is Taurus, and so on around to Pisces at 330°–360°. No further calculation happens here. It's a single division: `floor(longitude / 30)` picks the slice.
4. House: Where the Cusps Fall
Houses divide the sky into 12 slices too, but unlike signs, their boundaries, the house cusps, aren't fixed at round numbers. They're computed from your exact birth time and location, because they track the sky's actual rotation overhead at that moment and place. A planet's house is found by walking around the 12 cusps and checking which pair of consecutive boundaries the planet's longitude falls between (with a wraparound check for the point where house 12 crosses back to house 1). Houses 1, 4, 7, and 10, the **angular houses**, mark the four cardinal points of the sky at your birth moment (rising, lowest point, setting, and highest point). Houses 2, 5, 8, 11 (**succedent**) and 3, 6, 9, 12 (**cadent**) carry progressively less structural weight. That three-tier weighting is stored directly as a lookup (angular houses score 1, succedent houses 0.85, cadent houses 0.7) and feeds straight into the strength formula below.
5. Aspect: Checking Every Planet Pair
Every planet is checked against every other planet exactly once. For each pair, the calculation takes the absolute difference between their two longitudes and, if that's over 180°, subtracts it from 360°, because the angular distance between two points on a circle is never more than half the circle. That single number, between 0° and 180°, is then compared against nine fixed target angles, each with its own allowed window (the orb, below): - **Conjunction (0°, orb 8°** - **Opposition) 180°, orb 8°** - **Trine (120°, orb 6°** - **Square) 90°, orb 6°** - **Sextile (60°, orb 4°** - **Quincunx) 150°, orb 3°** - **Semi-sextile (30°, orb 2°** - **Semi-square) 45°, orb 2°** - **Sesquiquadrate (135°, orb 2°** If the pair's angular distance falls inside a target's orb window, that's a match) the pair has that aspect. The nine windows never overlap each other, so a given pair can match at most one aspect.
6. Orb: How Exact Is the Match
The orb is simply how far the pair's actual angle sits from the aspect's exact target, `|angle − target|`. A conjunction at 0.5° off is a far tighter, more exact match than one at 7.9° off, even though both still qualify as "a conjunction" under the 8° window. This orb value carries forward directly into the strength score next: it's the dominant input, not just a pass/fail gate.
7. Strength: Turning Orb + House into One Number (0–100)
Strength combines two factors already computed above, and nothing else: - **Orb factor**, `1 − (orb / aspect's max orb)`. An exact match (orb = 0) scores 1.0; a match sitting right at the edge of its allowed window scores close to 0. - **House factor** (the *higher* of the two planets' house weights from step 4 (angular = 1, succedent = 0.85, cadent = 0.7). Only the more angular of the two houses counts) there is no additional bonus for the two planets sharing the same house. The two factors multiply together, scale to 0–100, and round to a whole number: `strength = round(orbFactor × houseFactor × 100)`. The result is a single ranking that lets us tell you not just *what* aspects exist on your chart, but which ones actually carry the most weight.
8. Applying vs. Separating
Because planets keep moving, an aspect that matches right now is either still tightening or already loosening. The calculation projects both planets' longitudes forward by a small time step using their current speed, recomputes the orb at that future moment, and compares: if the projected orb is smaller than the current one, the aspect is applying (still building toward exact); if it's larger, it's separating (already past its peak and easing off).
9. Try It Yourself
The calculator below runs the exact same aspect-matching and strength formula described above, not a simplified stand-in, so you can plug in two longitudes and houses and see precisely how a match, orb, and strength score come out the other side.