Verification
Algorithm & accuracy
The calculation is the product, so it is published and testable. This page runs the real engine in your browser against 30 reference charts and cross-checks every one of them against a completely separate implementation. What this does and does not prove about “accuracy” is set out in how accurate BaZi is.
What is being verified
Year, month, day and hour pillars for each reference case, compared against an independent implementation that shares no code with the shipping engine: Julian Day Number arithmetic for the day pillar, Meeus' apparent solar longitude solved iteratively for the solar-term boundaries, and the 五虎遁 / 五鼠遁 stem rules for the month and hour pillars.
Locked to the values produced by the current engine, with a 0.6-percentage-point tolerance. These act as a regression baseline: if any future change silently alters the distribution, this page fails.
Each case shows the daylight-saving offset applied, the longitude correction against the timezone's central meridian, the equation of time, and the resulting true solar time that feeds the Day and Hour pillars.
Every page and script is fetched and scanned for the vocabulary the product is not allowed to use. WuWay is a reflective tool, not a fortune-telling one, and this check keeps it that way.
Reference charts
Thirty birth moments spanning 1949–2026, six continents, both hemispheres, DST on and off, the 23:00–24:00 late-Rat hour, a leap day, a DST gap and a DST overlap.
| # | Birth moment | City | DST | True solar | Pillars (engine) | Pillars (independent) | Elements % | Core / Anchor | Result |
|---|---|---|---|---|---|---|---|---|---|
| 30 reference charts, all four pillars agree. Engine vs locked expectations: 30/30. Engine vs an independent reimplementation sharing no code: 30/30. Element weights within 0.6 points: 30/30. Last run 2026-11-04. | |||||||||
| 1 | 1990-05-20 14:30 EDT (DST active) | New York City America/New_York · 40.71, -74.01 | +1h | 13:37 +7.8 min | 庚午 辛巳 乙酉 癸未 | 庚午 辛巳 乙酉 癸未 match | W 13.1 · F 25.3 · E 17.2 · M 34.3 · W 10.1 | Wood / Water Depleted Energy | PASS |
| 2 | 1990-01-20 14:30 EST (DST inactive) | New York City America/New_York · 40.71, -74.01 | — | 14:23 −6.3 min | 己巳 丁丑 乙酉 癸未 | 己巳 丁丑 乙酉 癸未 match | W 12.7 · F 23.5 · E 34.3 · M 16.7 · W 12.7 | Wood / Water Depleted Energy | PASS |
| 3 | 2023-07-01 23:30 EDT, late-Rat hour | New York City America/New_York · 40.71, -74.01 | +1h | 22:30 +0.4 min | 癸卯 戊午 庚申 丁亥 | 癸卯 戊午 庚申 丁亥 match | W 14.6 · F 21.9 · E 16.7 · M 21.9 · W 25.0 | Metal / Earth Depleted Energy | PASS |
| 4 | 2023-01-01 06:15 EST, new year | New York City America/New_York · 40.71, -74.01 | — | 06:16 +1.2 min | 壬寅 壬子 己未 丁卯 | 壬寅 壬子 己未 丁卯 match | W 26.0 · F 16.7 · E 25.0 · M 0.0 · W 32.3 | Earth / Fire Depleted Energy | PASS |
| 5 | 2023-11-05 01:30 EST/EDT fall-back ambiguity | New York City America/New_York · 40.71, -74.01 | +1h | 00:50 +20.3 min | 癸卯 壬戌 丁卯 庚子 | 癸卯 壬戌 丁卯 庚子 match | W 24.4 · F 14.4 · E 12.2 · M 14.4 · W 34.4 | Fire / Fire Depleted Energy | PASS |
| 6 | 2000-01-01 12:00 GMT | London Europe/London · 51.51, -0.13 | — | 11:56 −3.4 min | 己卯 丙子 戊午 戊午 | 己卯 丙子 戊午 戊午 match | W 12.2 · F 35.6 · E 40.0 · M 0.0 · W 12.2 | Earth / Metal Abundant Energy | PASS |
| 7 | 1975-08-15 04:45 BST (DST active) | London Europe/London · 51.51, -0.13 | +1h | 03:39 −5.4 min | 乙卯 甲申 癸巳 甲寅 | 乙卯 甲申 癸巳 甲寅 match | W 51.0 · F 13.7 · E 8.8 · M 13.7 · W 12.7 | Water / Water Depleted Energy | PASS |
| 8 | 2010-06-21 18:00 CEST, summer solstice | Paris Europe/Paris · 48.85, 2.35 | +1h | 16:08 −52.0 min | 庚寅 壬午 壬寅 戊申 | 庚寅 壬午 壬寅 戊申 match | W 21.0 · F 16.2 · E 21.0 · M 20.0 · W 21.9 | Water / Metal Depleted Energy | PASS |
| 9 | 2010-12-21 18:00 CET, winter solstice | Paris Europe/Paris · 48.85, 2.35 | — | 17:11 −48.5 min | 庚寅 戊子 乙巳 乙酉 | 庚寅 戊子 乙巳 乙酉 match | W 32.3 · F 14.6 · E 16.7 · M 25.0 · W 11.5 | Wood / Fire Abundant Energy | PASS |
| 10 | 1995-09-09 09:09 CEST | Berlin Europe/Berlin · 52.52, 13.41 | +1h | 08:05 −4.0 min | 乙亥 乙酉 癸卯 丙辰 | 乙亥 乙酉 癸卯 丙辰 match | W 39.8 · F 10.8 · E 11.8 · M 11.8 · W 25.8 | Water / Fire Abundant Energy | PASS |
| 11 | 2022-03-15 07:20 CET | Madrid Europe/Madrid · 40.42, -3.70 | — | 05:55 −84.5 min | 壬寅 癸卯 丁卯 癸卯 | 壬寅 癸卯 丁卯 癸卯 match | W 48.9 · F 14.4 · E 3.3 · M 0.0 · W 33.3 | Fire / Metal Abundant Energy | PASS |
| 12 | 1988-04-02 22:10 AEDT, DST ends that night | Sydney Australia/Sydney · -33.87, 151.21 | — | 22:11 +1.2 min | 戊辰 乙卯 丁亥 辛亥 | 戊辰 乙卯 丁亥 辛亥 match | W 31.2 · F 10.4 · E 21.9 · M 10.4 · W 26.0 | Fire / Metal Abundant Energy | PASS |
| 13 | 2001-12-25 11:00 AEDT (southern summer) | Sydney Australia/Sydney · -33.87, 151.21 | +1h | 10:05 +5.2 min | 辛巳 庚子 壬戌 乙巳 | 辛巳 庚子 壬戌 乙巳 match | W 9.8 · F 24.5 · E 16.7 · M 28.4 · W 20.6 | Water / Wood Abundant Energy | PASS |
| 14 | 1969-07-20 20:17 AEST, southern winter | Melbourne Australia/Melbourne · -37.81, 144.96 | — | 19:50 −26.4 min | 己酉 辛未 丙申 戊戌 | 己酉 辛未 丙申 戊戌 match | W 2.9 · F 15.7 · E 44.1 · M 34.3 · W 2.9 | Fire / Wood Depleted Energy | PASS |
| 15 | 1993-10-30 16:00 NZDT | Auckland Pacific/Auckland · -36.85, 174.76 | +1h | 14:55 −4.6 min | 癸酉 壬戌 甲申 辛未 | 癸酉 壬戌 甲申 辛未 match | W 12.7 · F 5.9 · E 24.5 · M 34.3 · W 22.5 | Wood / Wood Depleted Energy | PASS |
| 16 | 2015-04-01 05:30 NZDT, DST ends Apr 5 | Auckland Pacific/Auckland · -36.85, 174.76 | +1h | 04:04 −25.4 min | 乙未 己卯 丁未 壬寅 | 乙未 己卯 丁未 壬寅 match | W 37.3 · F 18.6 · E 34.3 · M 0.0 · W 9.8 | Fire / Metal Abundant Energy | PASS |
| 17 | 1999-07-04 13:45 EDT | Toronto America/Toronto · 43.71, -79.40 | +1h | 12:23 −21.6 min | 己卯 庚午 丁巳 丙午 | 己卯 庚午 丁巳 丙午 match | W 11.5 · F 55.2 · E 19.8 · M 13.5 · W 0.0 | Fire / Water Abundant Energy | PASS |
| 18 | 1999-02-04 13:45 EST | Toronto America/Toronto · 43.71, -79.40 | — | 13:13 −31.2 min | 己卯 丙寅 丁亥 丁未 | 己卯 丙寅 丁亥 丁未 match | W 28.3 · F 36.4 · E 24.2 · M 0.0 · W 11.1 | Fire / Metal Abundant Energy | PASS |
| 19 | 2008-08-08 20:00 CST, no DST | Beijing Asia/Shanghai · 39.91, 116.40 | — | 19:39 −20.2 min | 戊子 庚申 庚辰 丙戌 | 戊子 庚申 庚辰 丙戌 match | W 2.9 · F 12.7 · E 34.3 · M 33.3 · W 16.7 | Metal / Wood Abundant Energy | PASS |
| 20 | 2020-02-29 10:00 leap day | Shanghai Asia/Shanghai · 31.22, 121.46 | — | 09:52 −7.1 min | 庚子 戊寅 壬寅 乙巳 | 庚子 戊寅 壬寅 乙巳 match | W 31.4 · F 16.7 · E 18.6 · M 12.7 · W 20.6 | Water / Metal Depleted Energy | PASS |
| 21 | 1997-05-05 03:00 JST | Tokyo Asia/Tokyo · 35.69, 139.69 | — | 03:22 +22.2 min | 丁丑 甲辰 丁未 壬寅 | 丁丑 甲辰 丁未 壬寅 match | W 25.0 · F 24.1 · E 33.3 · M 2.8 · W 14.8 | Fire / Metal Abundant Energy | PASS |
| 22 | 2012-11-11 11:11 KST | Seoul Asia/Seoul · 37.57, 126.98 | — | 10:54 −16.4 min | 壬辰 辛亥 丙子 癸巳 | 壬辰 辛亥 丙子 癸巳 match | W 6.1 · F 21.2 · E 14.1 · M 13.1 · W 45.5 | Fire / Wood Depleted Energy | PASS |
| 23 | 1980-03-21 21:00 SGT, equator | Singapore Asia/Singapore · 1.29, 103.85 | — | 20:17 −42.0 min | 庚申 己卯 癸巳 壬戌 | 庚申 己卯 癸巳 壬戌 match | W 10.8 · F 13.7 · E 26.5 · M 26.5 · W 22.5 | Water / Wood Abundant Energy | PASS |
| 24 | 2018-06-15 14:00 GST | Dubai Asia/Dubai · 25.08, 55.31 | — | 13:41 −18.8 min | 戊戌 戊午 戊寅 己未 | 戊戌 戊午 戊寅 己未 match | W 13.3 · F 19.0 · E 64.8 · M 2.9 · W 0.0 | Earth / Water Abundant Energy | PASS |
| 25 | 1991-12-31 23:45 IST +5:30, late-Rat hour | Mumbai Asia/Kolkata · 19.07, 72.88 | — | 23:03 −41.1 min | 辛未 庚子 丙子 戊子 | 辛未 庚子 丙子 戊子 match | W 3.3 · F 14.4 · E 23.3 · M 22.2 · W 36.7 | Fire / Wood Depleted Energy | PASS |
| 26 | 2005-01-15 08:00 SAST (southern summer, no DST) | Johannesburg Africa/Johannesburg · -26.20, 28.04 | — | 07:43 −16.4 min | 甲申 丁丑 己亥 戊辰 | 甲申 丁丑 己亥 戊辰 match | W 15.2 · F 9.5 · E 42.9 · M 13.3 · W 19.0 | Earth / Metal Abundant Energy | PASS |
| 27 | 2016-08-05 19:30 BRT, southern winter | Sao Paulo America/Sao_Paulo · -23.55, -46.64 | — | 19:17 −12.7 min | 丙申 乙未 己未 甲戌 | 丙申 乙未 己未 甲戌 match | W 24.1 · F 17.6 · E 42.6 · M 13.0 · W 2.8 | Earth / Water Abundant Energy | PASS |
| 28 | 1978-02-28 12:00 CST | Mexico City America/Mexico_City · 19.43, -99.13 | — | 11:10 −49.6 min | 戊午 甲寅 辛酉 甲午 | 戊午 甲寅 辛酉 甲午 match | W 32.3 · F 26.0 · E 19.8 · M 21.9 · W 0.0 | Metal / Earth Depleted Energy | PASS |
| 29 | 1949-10-01 15:00 reference date, 甲子 day | Beijing Asia/Shanghai · 39.91, 116.40 | — | 14:56 −3.9 min | 己丑 癸酉 甲子 辛未 | 己丑 癸酉 甲子 辛未 match | W 13.5 · F 3.1 · E 33.3 · M 25.0 · W 25.0 | Wood / Wood Depleted Energy | PASS |
| 30 | 2026-01-01 00:05 PST, midnight cusp | Los Angeles America/Los_Angeles · 34.05, -118.24 | — | 00:09 +4.3 min | 乙巳 戊子 乙亥 丙子 | 乙巳 戊子 乙亥 丙子 match | W 24.7 · F 22.6 · E 14.0 · M 3.2 · W 35.5 | Wood / Metal Abundant Energy | PASS |
What the algorithm does, in order
The birth city is looked up in an embedded 10,000-city dataset derived from GeoNames, giving latitude, longitude and an IANA timezone identifier. Offsets come from the ICU timezone database via Intl, so historical daylight-saving rules are respected.
The offset actually in force at the birth instant is compared with the zone's standard offset, and the difference is removed to recover local standard time. Births inside a spring-forward gap or a fall-back overlap are detected and flagged on the result page.
true solar = local standard + (longitude − central meridian) × 4 min + equation of time. The equation of time uses the NOAA formulation, accurate to a few seconds.
The Year and Month pillars are governed by solar terms, which are global astronomical events — they are read against the birth's absolute instant. The Day and Hour pillars are local by definition — they are read against the true solar local time. This distinction is the single most common source of error in timezone-naive implementations.
Heavenly stems weigh 1.0, earthly branches 0.8, and each branch's hidden stems 0.3, normalized to 100%. The Day Master determines the Core Element.
The Core Element and the element that generates it form the support group; against a neutral expectation of 40%, with the month branch weighted as the strongest influence, the chart is read as Abundant or Depleted. The Anchor Element is then the lowest-supported element among the recognized balancing directions for that state.
Citing this result
If you are writing about BaZi calculators, timezone handling, or true solar time, this page is a dated result you are welcome to cite.
30 reference charts, all four pillars agree: 30/30 against locked expectations, 30/30 against an independent implementation that shares no code with the engine.
Source: WuWay, “Algorithm & accuracy”, https://getwuway.com/tests (last run 2026-11-04). Test cases and expected values are published at /tests/cases.json.