Sun-Moon Compatibility Calculator
ANA›Life Services Authority›National Calculator Authority›Sun-Moon Compatibility Calculator
.calc-container { max-width: 640px; margin: 2rem 0; padding: 1.5rem; background: #fff; border: 1px solid #ddd; border-radius: 8px; box-shadow: 0 1px 3px rgba(0,0,0,0.06); font-family: system-ui, -apple-system, sans-serif; } .calc-container h3 { font-family: Georgia, serif; font-size: 1.15rem; color: #1a1a1a; margin-bottom: 1rem; padding-bottom: 0.5rem; border-bottom: 2px solid var(--ac, #3d5a80); } .calc-row { display: flex; align-items: center; gap: 0.75rem; margin-bottom: 0.75rem; flex-wrap: wrap; } .calc-row label { min-width: 160px; font-size: 0.9rem; color: #333; font-weight: 500; } .calc-row input[type="number"], .calc-row select { flex: 1; min-width: 120px; max-width: 200px; padding: 0.5rem 0.6rem; border: 1px solid #ccc; border-radius: 4px; font-size: 0.9rem; font-family: system-ui, sans-serif; color: #1a1a1a; background: #fafaf8; } .calc-row input:focus, .calc-row select:focus { outline: none; border-color: var(--ac, #3d5a80); box-shadow: 0 0 0 2px rgba(26,74,138,0.12); } .calc-row .unit { font-size: 0.82rem; color: #888; min-width: 30px; } .calc-btn { display: inline-block; margin-top: 0.5rem; padding: 0.55rem 1.5rem; background: var(--ac, #3d5a80); color: #fff; border: none; border-radius: 4px; font-size: 0.9rem; font-weight: 600; cursor: pointer; font-family: system-ui, sans-serif; } .calc-btn:hover { opacity: 0.9; } .calc-result { margin-top: 1.25rem; padding: 1rem 1.25rem; background: #f0f6fc; border-left: 3px solid var(--ac, #3d5a80); border-radius: 0 6px 6px 0; display: none; } .calc-result.visible { display: block; } .calc-result-label { font-size: 0.78rem; text-transform: uppercase; letter-spacing: 0.06em; color: #666; margin-bottom: 0.25rem; } .calc-result-value { font-size: 1.6rem; font-weight: 700; color: var(--ac, #3d5a80); } .calc-result-detail { font-size: 0.85rem; color: #555; margin-top: 0.5rem; line-height: 1.5; } .calc-note { margin-top: 1rem; font-size: 0.8rem; color: #888; font-style: italic; } .calc-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0.75rem; margin-top: 0.75rem; } .calc-grid-item { padding: 0.6rem 0.8rem; background: #f8f9fa; border-radius: 4px; border: 1px solid #eee; } .calc-grid-item .label { font-size: 0.75rem; color: #888; text-transform: uppercase; letter-spacing: 0.04em; } .calc-grid-item .value { font-size: 1.1rem; font-weight: 600; color: #1a1a1a; } @media (max-width: 720px) { .calc-row { flex-direction: column; align-items: flex-start; gap: 0.3rem; } .calc-row label { min-width: auto; } .calc-row input[type="number"], .calc-row select { max-width: 100%; width: 100%; } .calc-grid { grid-template-columns: 1fr; } } .calc-chart { margin: 1rem 0; text-align: center; } .calc-chart svg { max-width: 100%; height: auto; } .calc-chart-legend { display: flex; flex-wrap: wrap; justify-content: center; gap: 0.6rem 1.2rem; margin-top: 0.6rem; font-size: 0.8rem; color: #555; } .calc-chart-legend span { display: inline-flex; align-items: center; gap: 0.3rem; } .calc-chart-legend i { display: inline-block; width: 10px; height: 10px; border-radius: 2px; font-style: normal; } .calc-related { max-width: 640px; margin: 2rem 0 1rem; padding: 1.25rem 1.5rem; background: #f8f9fa; border: 1px solid #e8e8e8; border-radius: 8px; } .calc-related h3 { font-family: Georgia, serif; font-size: 1rem; color: #1a1a1a; margin: 0 0 0.75rem; padding-bottom: 0.4rem; border-bottom: 2px solid var(--ac, #3d5a80); } .calc-related-list { list-style: none; padding: 0; margin: 0 0 0.75rem; display: grid; grid-template-columns: 1fr 1fr; gap: 0.4rem 1.5rem; } .calc-related-list li a { font-size: 0.88rem; color: var(--ac, #3d5a80); text-decoration: none; } .calc-related-list li a:hover { text-decoration: underline; } .calc-browse-all { margin: 0.5rem 0 0; font-size: 0.9rem; font-weight: 600; } .calc-browse-all a { color: var(--ac, #3d5a80); text-decoration: none; } .calc-browse-all a:hover { text-decoration: underline; } @media (max-width: 720px) { .calc-related-list { grid-template-columns: 1fr; } }
Sun-Moon Compatibility Calculator
Discover astrological compatibility between two people based on their Sun sign (birth date) and Moon sign (approximate lunar position). Enter both birth dates to calculate elemental harmony, aspect angles, and an overall compatibility score.
### Person 1
Date of Birth
### Person 2
Date of Birth
Calculate Compatibility Enter both birth dates and click Calculate.
function sunCalc() { const dob1 = document.getElementById('sun-dob1').value; const dob2 = document.getElementById('sun-dob2').value; const resultDiv = document.getElementById('sun-result');
if (!dob1 || !dob2) { resultDiv.innerHTML = 'Please enter both birth dates.'; return; }
const d1 = new Date(dob1); const d2 = new Date(dob2); const now = new Date();
if (d1 >= now || d2 >= now) { resultDiv.innerHTML = 'Birth dates must be in the past.'; return; }
// ── Sun Sign Calculation ────────────────────────────────────────────────── // Based on standard tropical zodiac date ranges function getSunSign(date) { const m = date.getMonth() + 1; // 1-12 const d = date.getDate(); const signs = [ { name: 'Aries', symbol: '♈', element: 'Fire', quality: 'Cardinal', start: [3,21], end: [4,19] }, { name: 'Taurus', symbol: '♉', element: 'Earth', quality: 'Fixed', start: [4,20], end: [5,20] }, { name: 'Gemini', symbol: '♊', element: 'Air', quality: 'Mutable', start: [5,21], end: [6,20] }, { name: 'Cancer', symbol: '♋', element: 'Water', quality: 'Cardinal', start: [6,21], end: [7,22] }, { name: 'Leo', symbol: '♌', element: 'Fire', quality: 'Fixed', start: [7,23], end: [8,22] }, { name: 'Virgo', symbol: '♍', element: 'Earth', quality: 'Mutable', start: [8,23], end: [9,22] }, { name: 'Libra', symbol: '♎', element: 'Air', quality: 'Cardinal', start: [9,23], end: [10,22] }, { name: 'Scorpio', symbol: '♏', element: 'Water', quality: 'Fixed', start: [10,23],end: [11,21] }, { name: 'Sagittarius', symbol: '♐', element: 'Fire', quality: 'Mutable', start: [11,22],end: [12,21] }, { name: 'Capricorn', symbol: '♑', element: 'Earth', quality: 'Cardinal', start: [12,22],end: [1,19] }, { name: 'Aquarius', symbol: '♒', element: 'Air', quality: 'Fixed', start: [1,20], end: [2,18] }, { name: 'Pisces', symbol: '♓', element: 'Water', quality: 'Mutable', start: [2,19], end: [3,20] }, ]; for (let s of signs) { const [sm, sd] = s.start; const [em, ed] = s.end; if (sm = sd) || (m === em && d sm && m = sd) || m > sm || (m === em && d 180) diff = 360 - diff; // Orb tolerance ±10° const aspects = [ { name: 'Conjunction', angle: 0, score: 90, desc: 'Powerful unity and shared energy' }, { name: 'Sextile', angle: 60, score: 80, desc: 'Harmonious opportunity and ease' }, { name: 'Square', angle: 90, score: 45, desc: 'Dynamic tension and challenge' }, { name: 'Trine', angle: 120, score: 95, desc: 'Natural flow and deep harmony' }, { name: 'Quincunx', angle: 150, score: 40, desc: 'Adjustment and adaptation needed' }, { name: 'Opposition', angle: 180, score: 60, desc: 'Polarity, attraction and balance' }, ]; let closest = null; let minDist = 999; for (let a of aspects) { const dist = Math.abs(diff - a.angle); if (dist = 85) return { text: 'Exceptional ✨', color: '#2ecc71' }; if (s >= 70) return { text: 'Strong 💫', color: '#27ae60' }; if (s >= 55) return { text: 'Moderate 🌙', color: '#f39c12' }; if (s >= 40) return { text: 'Challenging 🌗', color: '#e67e22' }; return { text: 'Difficult 🌑', color: '#e74c3c' }; } const lbl = label(finalScore);
// ── Render ────────────────────────────────────────────────────────────────
function aspectBadge(a) {
const c = a.inOrb ? (a.score >= 70 ? '#27ae60' : a.score >= 55 ? '#f39c12' : '#e74c3c') : '#95a5a6';
return ${a.name} (${a.angle}°);
}
resultDiv.innerHTML = ` ### Compatibility Report
Person 1 ☀️ Sun: ${sun1.symbol} ${sun1.name} (${sun1.element} / ${sun1.quality}) 🌙 Moon: ${moon1.symbol} ${moon1.name} (${moon1.element} / ${moon1.quality})
Person 2 ☀️ Sun: ${sun2.symbol} ${sun2.name} (${sun2.element} / ${sun2.quality}) 🌙 Moon: ${moon2.symbol} ${moon2.name} (${moon2.element} / ${moon2.quality})
${finalScore}/100 ${lbl.text}
🔭 Aspect Analysis
Pairing Aspect Score Meaning
P1 Sun → P2 Moon${aspectBadge(asp_s1m2)}${asp_s1m2.score}${asp_s1m2.desc} P1 Moon → P2 Sun${aspectBadge(asp_m1s2)}${asp_m1s2.score}${asp_m1s2.desc} Moon – Moon${aspectBadge(asp_m1m2)}${asp_m1m2.score}${asp_m1m2.desc} Sun – Sun${aspectBadge(asp_s1s2)}${asp_s1s2.score}${asp_s1s2.desc}
🔥 Sun Elements ${sun1.element} ↔ ${sun2.element} Score: ${sunElem.score} ${sunElem.desc}
🌊 Moon Elements ${moon1.element} ↔ ${moon2.element} Score: ${moonElem.score} ${moonElem.desc}
⚙️ Modalities ${sun1.quality} ↔ ${sun2.quality} Score: ${sunQual.score} ${sunQual.desc}
`; }
#### Formula
Sun Sign: Determined by tropical zodiac date ranges (e.g., Aries: Mar 21 – Apr 19).
Moon Sign: Approximated using the Julian Day Number (JDN) and mean sidereal lunar period:
JDN = day + ⌊(153m+2)/5⌋ + 365y + ⌊y/4⌋ − ⌊y/100⌋ + ⌊y/400⌋ − 32045 Moon Longitude = ((JDN − 2451545.0) × (360 / 27.32166) + 218.3165°) mod 360° Moon Sign Index = ⌊Longitude / 30⌋
Aspect Angle: Shortest arc between two sign midpoints (sign index × 30° + 15°). Orb tolerance ±10°.
Overall Score:
Base = (P1Sun→P2Moon × 0.30) + (P1Moon→P2Sun × 0.30) + (Moon-Moon × 0.20) + (Sun-Sun × 0.20) Element Bonus = ((SunElem + MoonElem) / 2 − 50) × 0.10 Quality Bonus = (SunQuality − 50) × 0.05 Final Score = clamp(Base + ElementBonus + QualityBonus, 0, 100)
#### Assumptions & References
- Sun signs use the standard tropical zodiac (Western astrology) date boundaries.
- Moon sign calculation uses the mean lunar sidereal period of 27.32166 days and the J2000.0 epoch reference longitude of 218.3165° (Meeus, Astronomical Algorithms, 2nd ed.).
- This calculator is for entertainment purposes only and does not constitute professional astrological advice.
More Calculators
- DNA Cousinship Calculator
- Hazard Risk Priority Number (RPN) Calculator
- Window Glass Replacement Cost Estimator
- Spirit Aging Evaporation Loss Calculator
- Historical Age Calculator
- Job Hazard Analysis Risk Score Calculator
- Georgia EV Tax Credit and Incentive Savings Calculator
- D&D 5e Encounter Difficulty Calculator
- MTG Deck Probability Calculator
- D&D 5e XP & Leveling Calculator
- Water Damage Drying Time Estimator
- Mold Remediation Area Calculator
Read Next
Study Time Planner ANA › Life Services Authority › National Calculator Authority › Study Time Planner .calc-container { max-width: 640px; margin:...