============================================================ */ (function(){ 'use strict'; function init(){ var root = document.getElementById('zssb'); if(!root) return; /* ── State ──────────────────────────────────────── */ var s1Type = 'sleeper'; // 'sleeper' or 'offduty' var s2Type = 'sleeper'; /* ── Toggle button setup ────────────────────────── */ function setupToggle(slpId, offId, callback){ var slpBtn = document.getElementById(slpId); var offBtn = document.getElementById(offId); if(!slpBtn || !offBtn) return; slpBtn.addEventListener('click', function(){ slpBtn.classList.add('active'); offBtn.classList.remove('active'); callback('sleeper'); }); offBtn.addEventListener('click', function(){ offBtn.classList.add('active'); slpBtn.classList.remove('active'); callback('offduty'); }); } setupToggle('zssb-s1-sleeper', 'zssb-s1-offduty', function(t){ s1Type = t; }); setupToggle('zssb-s2-sleeper', 'zssb-s2-offduty', function(t){ s2Type = t; }); /* ── Format decimal hours → "Xh Ym" ─────────────── */ function fmtHrs(h){ if(isNaN(h) || h < 0) return '0h 0m'; var hh = Math.floor(h); var mm = Math.round((h - hh) * 60); if(mm === 60){ hh++; mm = 0; } if(hh === 0 && mm === 0) return '0h 0m'; if(hh === 0) return mm + 'm'; if(mm === 0) return hh + 'h'; return hh + 'h ' + mm + 'm'; } /* ── Add decimal hours to a time string ─────────── */ function addHrs(timeStr, hrs){ if(!timeStr || timeStr === '') return null; var parts = timeStr.split(':'); if(parts.length < 2) return null; var totalMins = parseInt(parts[0], 10) * 60 + parseInt(parts[1], 10) + Math.round(hrs * 60); totalMins = ((totalMins % 1440) + 1440) % 1440; var h = Math.floor(totalMins / 60); var m = totalMins % 60; return (h < 10 ? '0' : '') + h + ':' + (m < 10 ? '0' : '') + m; } /* ── Convert 24hr "HH:MM" → 12hr "H:MM AM/PM" ─── */ function to12hr(t24){ if(!t24) return null; var p = t24.split(':'); var h = parseInt(p[0], 10); var m = p[1]; var ampm = h >= 12 ? 'PM' : 'AM'; h = h % 12; if(h === 0) h = 12; return h + ':' + m + ' ' + ampm; } /* ── Warning helpers ─────────────────────────────── */ function showWarn(msg){ var w = document.getElementById('zssb-warn'); var wm = document.getElementById('zssb-wmsg'); if(w && wm){ wm.textContent = msg; w.classList.add('show'); } } function hideWarn(){ var w = document.getElementById('zssb-warn'); if(w) w.classList.remove('show'); } /* ── Status bar progress ─────────────────────────── */ function setStatus(step){ var pills = ['zssb-pill-1', 'zssb-pill-2', 'zssb-pill-3']; for(var i = 0; i < pills.length; i++){ var el = document.getElementById(pills[i]); if(el){ el.classList[i < step ? 'add' : 'remove']('active'); } } } /* ════════════════════════════════════════════════ MAIN CALCULATION — FMCSA 49 CFR §395.1(g) ════════════════════════════════════════════════ */ function calc(){ hideWarn(); setStatus(2); /* Read inputs */ var drivenBefore = parseFloat(document.getElementById('zssb-driven').value) || 0; var drivenBetween = parseFloat(document.getElementById('zssb-driven-between').value) || 0; var s1h = parseFloat(document.getElementById('zssb-s1-hrs').value) || 0; var s1m = parseFloat(document.getElementById('zssb-s1-min').value) || 0; var s2h = parseFloat(document.getElementById('zssb-s2-hrs').value) || 0; var s2m = parseFloat(document.getElementById('zssb-s2-min').value) || 0; var s1Start = document.getElementById('zssb-s1-start').value; var s2Start = document.getElementById('zssb-s2-start').value; /* Convert to decimal hours */ var split1 = s1h + (s1m / 60); var split2 = s2h + (s2m / 60); /* ── Validation ────────────────────────────────── */ if(split1 <= 0 && split2 <= 0){ showWarn('Please enter the duration for at least one split rest period.'); return; } if(split1 < 0 || split2 < 0){ showWarn('Rest period durations cannot be negative.'); return; } if(drivenBefore < 0 || drivenBetween < 0){ showWarn('Driving hours cannot be negative.'); return; } var totalDriven = drivenBefore + drivenBetween; if(totalDriven > 11){ showWarn('Total hours driven (' + totalDriven.toFixed(2) + ' hrs) exceeds the 11-hour driving limit.'); return; } /* ── FMCSA Split Sleeper Berth Logic ───────────── RULE 1: Combined rest >= 10 hours RULE 2: The longer period must be >= 7 hrs AND in sleeper berth RULE 3: The shorter period must be >= 2 hrs (sleeper or off-duty) ─────────────────────────────────────────────────── */ var totalRest = split1 + split2; var combinedOk = totalRest >= 10; var longSplit = Math.max(split1, split2); var shortSplit = Math.min(split1, split2); var longIsS1 = split1 >= split2; var longType = longIsS1 ? s1Type : s2Type; /* Long split: must be >= 7 hrs AND sleeper berth */ var longOk = (longSplit >= 7) && (longType === 'sleeper'); /* Short split: must be >= 2 hrs (any type) */ var shortOk = (shortSplit >= 2); /* Single-split detection (only one period entered) */ var oneSplit = (split1 > 0 && split2 === 0) || (split1 === 0 && split2 > 0); var isCompliant = false; var reason = ''; if(oneSplit){ isCompliant = false; reason = 'Only one split period entered. Please enter both Split 1 and Split 2 durations to check full FMCSA compliance.'; } else { var failReasons = []; if(!longOk){ if(longSplit < 7){ failReasons.push('Longer split (' + fmtHrs(longSplit) + ') is under the required 7-hour minimum.'); } else { failReasons.push('Longer split (' + fmtHrs(longSplit) + ') must be in the sleeper berth, not off-duty.'); } } if(!shortOk){ failReasons.push('Shorter split (' + fmtHrs(shortSplit) + ') is under the required 2-hour minimum.'); } if(!combinedOk){ failReasons.push('Combined rest (' + fmtHrs(totalRest) + ') is under the 10-hour minimum required.'); } isCompliant = longOk && shortOk && combinedOk; if(isCompliant){ reason = 'Both splits meet FMCSA requirements. Your 14-hour clock is paused during both rest periods and restarts at the end of Split 2.'; } else { reason = failReasons.join(' '); } } /* ── Remaining drive time ───────────────────────── */ var driveRemaining = Math.max(0, 11 - totalDriven); /* ── Timeline data (if start times provided) ──── */ var timelineData = null; if(s1Start && s1Start !== ''){ var s1End = addHrs(s1Start, split1); var midDrive = s2Start && s2Start !== '' ? s2Start : (s1End ? addHrs(s1End, drivenBetween) : null); var s2End = midDrive ? addHrs(midDrive, split2) : null; timelineData = { s1Start: to12hr(s1Start), s1End: to12hr(s1End), s2Start: s2Start && s2Start !== '' ? to12hr(s2Start) : (midDrive ? to12hr(midDrive) : null), s2End: to12hr(s2End), resumeTime: s2End ? to12hr(s2End) : null }; } /* ── Render results ──────────────────────────────── */ renderResults(isCompliant, reason, { split1: split1, split2: split2, totalRest: totalRest, longSplit: longSplit, shortSplit: shortSplit, longOk: longOk, shortOk: shortOk, combinedOk: combinedOk, longType: longType, drivenBefore: drivenBefore, drivenBetween: drivenBetween, totalDriven: totalDriven, driveRemaining:driveRemaining, s1Type: s1Type, s2Type: s2Type, oneSplit: oneSplit }, timelineData); setStatus(3); } /* ════════════════════════════════════════════════ RENDER RESULTS ════════════════════════════════════════════════ */ function renderResults(isCompliant, reason, d, tl){ /* Element refs */ var resEl = document.getElementById('zssb-res'); var banner = document.getElementById('zssb-banner'); var bannerStatus= document.getElementById('zssb-banner-status'); var bannerReason= document.getElementById('zssb-banner-reason'); var bannerSvg = document.getElementById('zssb-banner-svg'); var cardsEl = document.getElementById('zssb-cards'); var breakdownEl = document.getElementById('zssb-breakdown'); var timelineEl = document.getElementById('zssb-timeline'); var tlWrap = document.getElementById('zssb-timeline-wrap'); /* ── Compliance Banner ──────────────────────────── */ if(d.oneSplit){ banner.className = 'compliance-banner non-compliant'; bannerStatus.textContent = 'Incomplete — Enter Both Splits'; bannerSvg.innerHTML = ''; } else if(isCompliant){ banner.className = 'compliance-banner compliant'; bannerStatus.textContent = '✅ FMCSA Compliant — Valid Split'; bannerSvg.innerHTML = ''; } else { banner.className = 'compliance-banner non-compliant'; bannerStatus.textContent = '❌ Non-Compliant — Invalid Split'; bannerSvg.innerHTML = ''; } bannerReason.textContent = reason; /* ── Summary Cards ──────────────────────────────── */ var cards = []; if(!d.oneSplit){ cards.push({ v: fmtHrs(d.split1), u: d.s1Type === 'sleeper' ? 'SLEEPER' : 'OFF-DUTY', n: 'Split 1 Duration', cls: d.s1Type === 'sleeper' ? 'blue' : 'orange' }); cards.push({ v: fmtHrs(d.split2), u: d.s2Type === 'sleeper' ? 'SLEEPER' : 'OFF-DUTY', n: 'Split 2 Duration', cls: d.s2Type === 'sleeper' ? 'blue' : 'orange' }); cards.push({ v: fmtHrs(d.totalRest), u: 'TOTAL REST', n: 'Combined Off-Duty', cls: d.combinedOk ? 'green' : 'red' }); cards.push({ v: fmtHrs(d.driveRemaining), u: 'REMAINING', n: 'Drive Time Left', cls: d.driveRemaining > 4 ? 'green' : (d.driveRemaining > 2 ? 'orange' : 'red') }); } cardsEl.innerHTML = cards.map(function(c){ return '
' + '
' + c.v + '
' + '
' + c.u + '
' + '
' + c.n + '
' + '
'; }).join(''); /* ── Breakdown Table ────────────────────────────── */ var rows = []; if(!d.oneSplit){ rows.push({lbl: 'Split 1 (' + (d.s1Type === 'sleeper' ? 'Sleeper Berth' : 'Off-Duty') + ')', val: fmtHrs(d.split1), cls: ''}); rows.push({lbl: 'Split 2 (' + (d.s2Type === 'sleeper' ? 'Sleeper Berth' : 'Off-Duty') + ')', val: fmtHrs(d.split2), cls: ''}); rows.push({lbl: 'Combined Rest Total', val: fmtHrs(d.totalRest) + (d.totalRest >= 10 ? ' ✓' : ' ✗ (Need ≥10h)'), cls: d.combinedOk ? 'ok' : 'fail'}); rows.push({lbl: 'Longer Split ≥7 hrs in Sleeper Berth', val: d.longOk ? '✓ Pass' : '✗ Fail', cls: d.longOk ? 'ok' : 'fail'}); rows.push({lbl: 'Shorter Split ≥2 hrs (any type)', val: d.shortOk ? '✓ Pass' : '✗ Fail', cls: d.shortOk ? 'ok' : 'fail'}); rows.push({lbl: 'Hours Driven Before Split 1', val: fmtHrs(d.drivenBefore), cls: 'info'}); rows.push({lbl: 'Hours Driven Between Splits', val: fmtHrs(d.drivenBetween), cls: 'info'}); rows.push({lbl: 'Total Hours Driven', val: fmtHrs(d.totalDriven) + ' / 11 hrs max', cls: d.totalDriven < 11 ? 'ok' : 'fail'}); rows.push({lbl: 'Drive Time Remaining After Splits', val: fmtHrs(d.driveRemaining), cls: d.driveRemaining > 0 ? 'ok' : 'fail'}); rows.push({lbl: '14-Hour Clock Paused During Splits', val: isCompliant ? 'Yes — Both periods excluded' : 'Not applicable (fix issues above)', cls: isCompliant ? 'ok' : 'fail'}); } breakdownEl.innerHTML = rows.map(function(r){ return '
' + '' + r.lbl + '' + '' + r.val + '' + '
'; }).join(''); /* ── Timeline ───────────────────────────────────── */ if(!d.oneSplit){ tlWrap.style.display = 'block'; var items = []; items.push({ dot: 'drive', label: 'Started Driving', desc: 'Drove ' + fmtHrs(d.drivenBefore) + ' before first rest period.' }); items.push({ dot: 'sleep', label: 'Split 1 Begins' + (tl && tl.s1Start ? ' at ' + tl.s1Start : ''), desc: fmtHrs(d.split1) + ' ' + (d.s1Type === 'sleeper' ? 'in Sleeper Berth' : 'Off-Duty') + (tl && tl.s1End ? ' → Ends: ' + tl.s1End : '') }); if(d.drivenBetween > 0){ items.push({ dot: 'drive', label: 'Resumed Driving Between Splits', desc: 'Drove ' + fmtHrs(d.drivenBetween) + ' between the two rest periods.' }); } items.push({ dot: 'sleep', label: 'Split 2 Begins' + (tl && tl.s2Start ? ' at ' + tl.s2Start : ''), desc: fmtHrs(d.split2) + ' ' + (d.s2Type === 'sleeper' ? 'in Sleeper Berth' : 'Off-Duty') + (tl && tl.s2End ? ' → Ends: ' + tl.s2End : '') }); if(isCompliant){ items.push({ dot: 'done', label: '14-Hour Clock Restarts' + (tl && tl.resumeTime ? ' at ' + tl.resumeTime : ''), desc: 'Both splits complete. ' + fmtHrs(d.driveRemaining) + ' drive time remaining.' }); } else { items.push({ dot: 'off', label: 'Non-Compliant — Cannot Resume', desc: 'Fix the split issues above before resuming driving.' }); } timelineEl.innerHTML = items.map(function(it){ return '
' + '
' + '
' + '
' + it.label + '
' + '
' + it.desc + '
' + '
'; }).join(''); } else { tlWrap.style.display = 'none'; } /* ── Show results panel ─────────────────────────── */ resEl.classList.add('show'); setTimeout(function(){ resEl.scrollIntoView({ behavior: 'smooth', block: 'nearest' }); }, 100); } /* ════════════════════════════════════════════════ RESET ════════════════════════════════════════════════ */ function resetAll(){ /* Clear number inputs */ var numIds = ['zssb-driven', 'zssb-driven-between', 'zssb-s1-hrs', 'zssb-s1-min', 'zssb-s2-hrs', 'zssb-s2-min']; numIds.forEach(function(id){ var el = document.getElementById(id); if(el) el.value = ''; }); /* Clear time inputs */ ['zssb-s1-start', 'zssb-s2-start'].forEach(function(id){ var el = document.getElementById(id); if(el) el.value = ''; }); /* Reset toggle states */ s1Type = 'sleeper'; s2Type = 'sleeper'; ['zssb-s1-sleeper', 'zssb-s2-sleeper'].forEach(function(id){ var el = document.getElementById(id); if(el) el.classList.add('active'); }); ['zssb-s1-offduty', 'zssb-s2-offduty'].forEach(function(id){ var el = document.getElementById(id); if(el) el.classList.remove('active'); }); /* Hide warning and results */ hideWarn(); var resEl = document.getElementById('zssb-res'); if(resEl) resEl.classList.remove('show'); setStatus(1); } /* ── Event Listeners ──────────────────────────────── */ var calcBtn = document.getElementById('zssb-btn'); if(calcBtn) calcBtn.addEventListener('click', calc); var rstBtn = document.getElementById('zssb-reset'); if(rstBtn) rstBtn.addEventListener('click', resetAll); /* Enter key triggers calculation */ var numFields = ['zssb-driven', 'zssb-driven-between', 'zssb-s1-hrs', 'zssb-s1-min', 'zssb-s2-hrs', 'zssb-s2-min']; numFields.forEach(function(id){ var el = document.getElementById(id); if(el) el.addEventListener('keydown', function(e){ if(e.key === 'Enter') calc(); }); }); } /* end init() */ /* ── Safe DOM-ready execution ───────────────────────── */ if(document.readyState === 'loading'){ document.addEventListener('DOMContentLoaded', init); } else { init(); } })();
Life Path Compatibility Calculator
Calculate your Life Path Numbers & discover your numerology compatibility score instantly.
Inputs
Your Birth Date
Partner’s Birth Date
Relationship Type
!
Please select both birth dates to calculate compatibility.
Results
References & Notes
  • Formula: Life Path = Reduce(Month) + Reduce(Day) + Reduce(Year), reduced again to a single digit or Master Number.
  • Master Numbers 11, 22, 33 are preserved at every reduction step instead of being collapsed to a single digit.
  • Numbers 1, 3, 5, 7, 9 (odd) and 2, 4, 6, 8 (even) sharing the same group typically show stronger natural compatibility.
  • Life Path Numbers 1, 4, 5, 7 are considered Karmic Life Path Numbers and may carry extra relationship lessons.
  • This tool is built for entertainment, self-reflection & educational purposes — not a scientific relationship predictor.

Life Path Compatibility Calculator: Find Your Numerology Match Instantly

Curious whether you and your partner, friend, or potential match are actually compatible on a soul level? The Zo Calculator life path compatibility calculator instantly reveals how your numerology numbers interact, so you can understand the strengths and friction points in any relationship. Just enter both birth dates, and our tool does the rest in seconds — no manual math required.


What This Calculator Tells You

When you run the numbers through ZoCalculator.com, here’s exactly what you get back:

  • Your individual Life Path Number and your match’s Life Path Number, calculated automatically
  • A clear compatibility score showing how well the two numbers align
  • A written breakdown of relationship strengths based on your numerology pairing
  • Potential challenge areas to be mindful of in communication or long-term planning
  • A note on whether either person carries a Karmic Life Path number (1, 4, 5, or 7) that may add deeper lessons to the relationship
  • A simple verdict — Strong Match, Workable Match, or Challenging Match — for quick reference

How the Calculator Works (The Formula & Logic)

A Life Path Number is a single digit (or master number) derived from your full birth date, and it’s considered the foundation of your numerology profile. Once both numbers are known, compatibility is judged by how those two digits relate to each other numerically and energetically.

Life Path Number Calculation Method

The standard method — and the one most people search for when they ask how to calculate your life path number — works like this:

  1. Reduce the month of birth to a single digit
  2. Reduce the day of birth to a single digit
  3. Reduce the year of birth to a single digit
  4. Add those three results together, then reduce again until you reach a single digit (unless you land on a Master Number: 11, 22, or 33, which are kept as-is)

In simple terms:

Life Path Number = (Reduced Month + Reduced Day + Reduced Year), reduced to a single digit

This is the Pythagorean approach, which is the most widely used system online today. If you’ve also seen references to the Chaldean numerology life path number calculation from birth date, know that it’s a different, older system that assigns slightly different values to letters and dates and is mostly used for name-based numerology rather than birth-date life path readings — our calculator uses the standard Pythagorean method, which is what almost every modern numerology how-to-calculate-life-path-number guide references.

Once both individual numbers are found, the calculator compares them using a compatibility logic built around numerical harmony — primarily whether both numbers fall into “odd-number” or “even-number” energy groups, or whether a Master Number is involved.


Standard Ratings & Classifications (Comparison Chart)

Life Path NumberMost Compatible WithCompatibility Level
11, 3, 5, 9Strong (Odd-Number Harmony)
22, 4, 6, 8Strong (Even-Number Harmony)
31, 3, 5, 9Strong (Odd-Number Harmony)
42, 4, 6, 8Strong (Even-Number Harmony)
51, 3, 5, 9Strong (Odd-Number Harmony)
62, 4, 6, 8Strong (Even-Number Harmony)
71, 3, 5, 9Strong, but values independence
82, 4, 6, 8Strong (Even-Number Harmony)
91, 3, 5, 9Strong, naturally humanitarian
112, 6, 11Master Number — Intuitive Bond
224, 8, 22Master Number — Builder Bond
336, 9, 33Master Number — Nurturing Bond

Step-by-Step Practical Example

Let’s walk through how the life path calculator compatibility logic actually plays out with two real birth dates.

Step 1: Calculate Person A’s Life Path Number (born August 24, 1990) Month: 8 → Day: 2+4=6 → Year: 1+9+9+0=19 → 1+9=1 Total: 8+6+1=15 → 1+5=6

Step 2: Calculate Person B’s Life Path Number (born March 15, 1988) Month: 3 → Day: 1+5=6 → Year: 1+9+8+8=26 → 2+6=8 Total: 3+6+8=17 → 1+7=8

Step 3: Compare the two numbers Both 6 and 8 fall into the even-number harmony group, so this pairing checks out as a Strong Match — typically marked by emotional stability, shared values around home or responsibility, and complementary communication styles.


How to Use Zo Calculator’s Life Path Compatibility Calculator Tool

  1. Go to the life path number compatibility calculator on ZoCalculator.com
  2. Enter the first person’s full birth date (month, day, year)
  3. Enter the second person’s full birth date in the same format
  4. Click “Calculate Compatibility”
  5. Review your individual Life Path Numbers, displayed instantly above your match result
  6. Read your compatibility score and the written explanation underneath it
  7. Scroll down for tips on how to strengthen the relationship based on your specific number pairing

Practical Applications and Real-World Uses

  • Dating and relationships: Couples use this tool early on to understand each other’s communication tendencies before deeper commitment
  • Friendship insight: Friends curious about why they “click” or clash often calculate life path number numerology together for fun and self-awareness
  • Premarital reflection: Some couples use compatibility numerology alongside other planning steps before marriage
  • Family dynamics: Parents and adult children sometimes use it to better understand generational personality differences
  • Business partnerships: A few entrepreneurs check life path compatibility for co-founders as one small data point among many
  • Content creators and astrologers: Numerology coaches use the tool to quickly generate compatibility readings for clients

Important Notes & Technical Limitations

  • This calculator is built for entertainment, self-reflection, and educational purposes — it is not a scientifically validated relationship predictor
  • Results are based on the Pythagorean numerology system; users following the Chaldean numerology life path number calculation from birth date method may get different individual digits
  • Master Numbers (11, 22, 33) are not reduced further by default, which is standard practice but differs from some simplified online calculators
  • Compatibility scores reflect general numerological patterns, not a guarantee of relationship success or failure — real compatibility depends on communication, values, and effort

Helpful References & Sources

  • Wikipedia.org — general overview of numerology systems and history
  • Britannica.com — background on the Pythagorean number theory that underpins modern numerology
  • LibraryOfCongress.gov — archival resources on the historical study of numerology and symbolic number systems

🙋 Frequently Asked Questions (FAQs)

How to calculate your life path number?

Add the reduced digits of your birth month, day, and year together, then keep reducing the total until you reach a single digit or a Master Number (11, 22, or 33). This single-digit result is your Life Path Number, and it’s the same starting point used in our compatibility calculator.

How do you calculate your life path number step by step?

Break your birth date into three parts — month, day, and year — reduce each one to a single digit, then add all three together. Reduce the final sum again if it’s not already a single digit, and that’s your Life Path Number.

How do I calculate my life path number without a tool?

You can do it manually with simple addition: sum every digit in your full birth date, then keep adding the resulting digits together until only one digit remains. It’s the exact same logic the Zo Calculator uses, just done by hand instead of automatically.

What is the Chaldean numerology life path number calculation from birth date?

The Chaldean system is an older numerology method that assigns different numeric values and tends to focus more on name-based calculations rather than birth dates alone. Most modern life path calculators, including this one, use the more common Pythagorean method instead.

What does a karmic life path calculator show?

A karmic life path calculator highlights life path numbers like 1, 4, 5, and 7, which numerologists associate with specific life lessons or recurring challenges to work through. It’s a more specialized reading than a standard life path number calculation.

Is the life path number calculation method the same for everyone?

Yes, the core method — reducing month, day, and year separately before summing them — is consistent across the Pythagorean system, which is what the majority of online calculators and guides use. Variations mainly appear with the older Chaldean approach.

Can two people with the same life path number be compatible?

Yes, sharing the same Life Path Number often means shared values and similar approaches to life, though it can sometimes mean shared blind spots too. The compatibility calculator factors this in as part of a Strong Match scenario.

Does life path compatibility mean a relationship will work?

No, numerology compatibility is just one fun, reflective data point and not a relationship guarantee. Real compatibility still depends on communication, shared goals, and mutual effort.

How is calculate life path number numerology different from a horoscope?

Numerology is based entirely on your birth date numbers, while horoscopes are based on the position of stars and planets at your birth time. They’re separate systems, though both fall under the broader umbrella of self-discovery tools.

What is the most compatible life path number for me?

It depends on your own Life Path Number — generally, numbers within the same odd or even group (or shared Master Numbers) show the strongest compatibility scores. Enter both birth dates into the calculator above to see your specific match instantly.


Explore Related Calculators on Zo Calculator