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.

Running…

What is being verified

Four Pillars chart

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.

Element distribution

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.

Timezone, DST and True Solar Time

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.

Language compliance

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.
11990-05-20 14:30
EDT (DST active)
New York City
America/New_York · 40.71, -74.01
+1h13:37
+7.8 min
庚午 辛巳 乙酉 癸未庚午 辛巳 乙酉 癸未
match
W 13.1 · F 25.3 · E 17.2 · M 34.3 · W 10.1Wood / Water
Depleted Energy
PASS
21990-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.7Wood / Water
Depleted Energy
PASS
32023-07-01 23:30
EDT, late-Rat hour
New York City
America/New_York · 40.71, -74.01
+1h22:30
+0.4 min
癸卯 戊午 庚申 丁亥癸卯 戊午 庚申 丁亥
match
W 14.6 · F 21.9 · E 16.7 · M 21.9 · W 25.0Metal / Earth
Depleted Energy
PASS
42023-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.3Earth / Fire
Depleted Energy
PASS
52023-11-05 01:30
EST/EDT fall-back ambiguity
New York City
America/New_York · 40.71, -74.01
+1h00:50
+20.3 min
癸卯 壬戌 丁卯 庚子癸卯 壬戌 丁卯 庚子
match
W 24.4 · F 14.4 · E 12.2 · M 14.4 · W 34.4Fire / Fire
Depleted Energy
PASS
62000-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.2Earth / Metal
Abundant Energy
PASS
71975-08-15 04:45
BST (DST active)
London
Europe/London · 51.51, -0.13
+1h03:39
−5.4 min
乙卯 甲申 癸巳 甲寅乙卯 甲申 癸巳 甲寅
match
W 51.0 · F 13.7 · E 8.8 · M 13.7 · W 12.7Water / Water
Depleted Energy
PASS
82010-06-21 18:00
CEST, summer solstice
Paris
Europe/Paris · 48.85, 2.35
+1h16:08
−52.0 min
庚寅 壬午 壬寅 戊申庚寅 壬午 壬寅 戊申
match
W 21.0 · F 16.2 · E 21.0 · M 20.0 · W 21.9Water / Metal
Depleted Energy
PASS
92010-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.5Wood / Fire
Abundant Energy
PASS
101995-09-09 09:09
CEST
Berlin
Europe/Berlin · 52.52, 13.41
+1h08:05
−4.0 min
乙亥 乙酉 癸卯 丙辰乙亥 乙酉 癸卯 丙辰
match
W 39.8 · F 10.8 · E 11.8 · M 11.8 · W 25.8Water / Fire
Abundant Energy
PASS
112022-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.3Fire / Metal
Abundant Energy
PASS
121988-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.0Fire / Metal
Abundant Energy
PASS
132001-12-25 11:00
AEDT (southern summer)
Sydney
Australia/Sydney · -33.87, 151.21
+1h10:05
+5.2 min
辛巳 庚子 壬戌 乙巳辛巳 庚子 壬戌 乙巳
match
W 9.8 · F 24.5 · E 16.7 · M 28.4 · W 20.6Water / Wood
Abundant Energy
PASS
141969-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.9Fire / Wood
Depleted Energy
PASS
151993-10-30 16:00
NZDT
Auckland
Pacific/Auckland · -36.85, 174.76
+1h14:55
−4.6 min
癸酉 壬戌 甲申 辛未癸酉 壬戌 甲申 辛未
match
W 12.7 · F 5.9 · E 24.5 · M 34.3 · W 22.5Wood / Wood
Depleted Energy
PASS
162015-04-01 05:30
NZDT, DST ends Apr 5
Auckland
Pacific/Auckland · -36.85, 174.76
+1h04:04
−25.4 min
乙未 己卯 丁未 壬寅乙未 己卯 丁未 壬寅
match
W 37.3 · F 18.6 · E 34.3 · M 0.0 · W 9.8Fire / Metal
Abundant Energy
PASS
171999-07-04 13:45
EDT
Toronto
America/Toronto · 43.71, -79.40
+1h12:23
−21.6 min
己卯 庚午 丁巳 丙午己卯 庚午 丁巳 丙午
match
W 11.5 · F 55.2 · E 19.8 · M 13.5 · W 0.0Fire / Water
Abundant Energy
PASS
181999-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.1Fire / Metal
Abundant Energy
PASS
192008-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.7Metal / Wood
Abundant Energy
PASS
202020-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.6Water / Metal
Depleted Energy
PASS
211997-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.8Fire / Metal
Abundant Energy
PASS
222012-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.5Fire / Wood
Depleted Energy
PASS
231980-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.5Water / Wood
Abundant Energy
PASS
242018-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.0Earth / Water
Abundant Energy
PASS
251991-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.7Fire / Wood
Depleted Energy
PASS
262005-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.0Earth / Metal
Abundant Energy
PASS
272016-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.8Earth / Water
Abundant Energy
PASS
281978-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.0Metal / Earth
Depleted Energy
PASS
291949-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.0Wood / Wood
Depleted Energy
PASS
302026-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.5Wood / Metal
Abundant Energy
PASS

What the algorithm does, in order

01 · Resolve the timezone

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.

02 · Apply daylight saving

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.

03 · Correct to True Solar Time

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.

04 · Build the chart in two reference frames

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.

05 · Score the five elements

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.

06 · Derive the anchors

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.

An honest limit. The astronomical part of this pipeline is well defined and testable, and the checks above are real. Reading meaning into a chart is an interpretive tradition, not a measurement. WuWay is explicit about which half it is doing.

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.