ThaatKnow your element. Know yourself. Know your edge.

How a BaZi chart is calculated

A BaZi (八字) chart is four pillars: one each for the year, month, day and hour of birth. Each pillar is a heavenly stem over an earthly branch. The stem of the day pillar is your core element — what BaZi books call the day master, and the rest of the chart is read around it.

Getting the pillars right is calendar arithmetic, and it can go wrong without anyone noticing: a year started on 1 January or at Chinese New Year, months switched on fixed dates, or an hour read straight off the clock all give a chart that looks fine and is not. This page shows each step Thaat takes, with the numbers produced by the same code that draws your chart.

Step 1: your clock time becomes an exact instant

A birth time on its own is ambiguous. 09:30 in London and 09:30 in Tokyo are eight or nine hours apart, depending on the season, and the same city can change its offset from one season or decade to the next. Thaat looks up the UTC offset that was in force at the birthplace on the birth date in the IANA time zone database, the record of the world’s clock changes that computers use, including past daylight saving time. Its records are reliable from 1970 on; for earlier births it covers many places, but not every local clock change.

Each row below is what the engine reads for a birth at noon on that date:

Birth at noon inUTC offset used
London, 15 January 1970UTC+1
London, 15 January 1990UTC+0
São Paulo, 15 January 2000UTC−2
São Paulo, 15 January 2022UTC−3
New York, 4 July 1990UTC−4
New York, 4 January 1990UTC−5

Step 2: the year pillar changes at Lichun

The BaZi year starts at Lichun (立春, also written Li Chun: Start of Spring), the moment the sun reaches 315° along the ecliptic. That falls on 3, 4 or 5 February. It is not 1 January, and it is not Chinese New Year, which follows the moon and moves between 21 January and 20 February. Someone born on 1 February belongs to the previous BaZi year, and so does their zodiac animal.

Lichun is an instant, not a date. Thaat compares the birth instant with the term instant, so the answer is the same in every time zone, even when the local date is still the day before.

Example: Lichun 1990 fell at 4 Feb 10:14 Beijing time, which was 21:14 on 3 February 1990 in New York. A baby born in New York at 21:00 that evening has the year pillar Ji Si (己巳), the Snake; one born at 21:30 has Geng Wu (庚午), the Horse, although the local date is the same.

Step 3: months change at the twelve jie terms

The solar year is divided into 24 solar terms, one for every 15° the sun moves along the ecliptic. Every second term, a jie (節), starts a BaZi month, so the months follow the sun, not the calendar. Each month has a fixed branch, starting with Yin (寅) at Lichun. The month’s stem follows from the year’s stem.

The instants shift by about a day between years and fall at any hour, so a calculator that switches months on fixed dates gets everyone born near a boundary wrong. These are the twelve jie of the BaZi year that began in 2026, as Thaat’s engine computes them:

Jie termSunBeijing timeUTCMonth pillar
立春 LichunStart of Spring315°4 Feb 04:023 Feb 20:02庚寅 Geng Yin
惊蛰 JingzheAwakening of Insects345°5 Mar 21:595 Mar 13:59辛卯 Xin Mao
清明 QingmingClear and Bright15°5 Apr 02:404 Apr 18:40壬辰 Ren Chen
立夏 LixiaStart of Summer45°5 May 19:485 May 11:48癸巳 Gui Si
芒种 MangzhongGrain in Ear75°5 Jun 23:485 Jun 15:48甲午 Jia Wu
小暑 XiaoshuMinor Heat105°7 Jul 09:567 Jul 01:56乙未 Yi Wei
立秋 LiqiuStart of Autumn135°7 Aug 19:427 Aug 11:42丙申 Bing Shen
白露 BailuWhite Dew165°7 Sep 22:417 Sep 14:41丁酉 Ding You
寒露 HanluCold Dew195°8 Oct 14:298 Oct 06:29戊戌 Wu Xu
立冬 LidongStart of Winter225°7 Nov 17:527 Nov 09:52己亥 Ji Hai
大雪 DaxueMajor Snow255°7 Dec 10:527 Dec 02:52庚子 Geng Zi
小寒 XiaohanMinor Cold285°5 Jan 2027 22:095 Jan 2027 14:09辛丑 Xin Chou

Step 4: the day pillar comes from the 60-day count

Days carry a stem-branch name in a cycle of 60 that runs on without regard to months or years. The day pillar is that name for the date of birth in local solar time. It changes at local midnight.

Schools differ about the hour from 23:00 to midnight. Thaat keeps it on the same date: someone born at 23:40 local solar time keeps that date’s day pillar, and only the hour pillar moves to the next day’s count. Other schools start the new day at 23:00.

Find your day pillar and day master from your birth date

Step 5: the hour pillar uses true local solar time

The hour pillar is one of twelve two-hour blocks. Thaat measures it by the sun at the birthplace, not by the clock, as many BaZi practitioners do; not every school applies this correction. Clock time is the average solar time of the time zone’s central meridian, so two corrections are applied:

  • Longitude: 4 minutes for every degree east or west of the zone meridian (15° per hour of offset).
  • The equation of time: the real sun runs up to about 16 minutes ahead of or 14 minutes behind the average over the year. Thaat computes it for the birth instant as the sun’s mean longitude minus its right ascension.
Hour branchAnimalLocal solar time
子 ZiRat23:00–01:00
丑 ChouOx01:00–03:00
寅 YinTiger03:00–05:00
卯 MaoRabbit05:00–07:00
辰 ChenDragon07:00–09:00
巳 SiSnake09:00–11:00
午 WuHorse11:00–13:00
未 WeiGoat13:00–15:00
申 ShenMonkey15:00–17:00
酉 YouRooster17:00–19:00
戌 XuDog19:00–21:00
亥 HaiPig21:00–23:00

Daylight saving time drops out on its own, because the offset in step 1 already includes it. In wide time zones the gap between clock and sun can reach two hours. The hour’s stem then follows from the day’s stem.

Without a birth time Thaat does not guess an hour. The chart has three pillars, and the element balance and every other count are made from those three.

A worked example: 14 March 1992, 09:30, London

Every value in this example is computed by the engine when the page is built, from the same functions the calculator uses.

  1. Clock time to an instant. London on 14 March 1992 was on UTC+0 (British summer time started later that month), so 09:30 on the clock is 14 Mar 09:30 UTC.
  2. Year. Lichun 1992 fell at 4 Feb 13:48 UTC (4 Feb 21:48 Beijing time). The birth is after it, so the year pillar is Ren Shen (壬申): the year of the Monkey.
  3. Month. The last jie term before the birth was Jingzhe (Awakening of Insects) at 5 Mar 07:52 UTC, which starts the Mao month. The month pillar is Gui Mao (癸卯).
  4. Day. The 60-day count gives 14 March 1992 the day pillar Ji Chou (己丑). Its stem makes this person’s day master Yin Earth, the Garden Soil.
  5. Hour. London lies at 0.13° west, −0.5 min from the zone meridian. The equation of time that morning was −9.2 min. Together that moves 09:30 to 09:20 local solar time, inside the Si block (09:00–11:00), so the hour pillar is Ji Si (己巳).
YearMonthDayHour
壬申Ren Shen癸卯Gui Mao己丑Ji Chou己巳Ji Si

Without the birth time, the same date gives three pillars: 壬申 癸卯 己丑. The day master does not change.

About the Yin Earth day master

How we test it

The engine’s calendar comes from lunar-typescript, an open-source library. We check its output, and our own time conversion around it, against sxtwl (寿星天文历), a separately written calendar library in C++ and Python. The test set has 2,233 birth moments on 1,389 dates from 1924 to 2030, chosen to hit the traps: Lichun on several days of early February, Chinese New Year before Lichun, every month’s start days, and the hours just before and after each jie instant from 1950 to 2030. All four pillars must match in every case.

What that test does not cover: every case is set in Beijing time on the 120° east meridian, where the longitude correction is zero, and every hour is even, the middle of a two-hour block, so the hour boundaries themselves are not tested there. Time zones, daylight saving time and solar time have their own tests: historical offsets for New York, London, Sydney, São Paulo, Tokyo and Bangkok; the same instant written in two different zones must give the same chart; and Lichun 1990 seen from New York.

Both libraries also build on the same family of astronomical algorithms, so agreement between them mainly proves that the pillar logic and the time handling are right. As a check from outside, our tests compute the sun’s position with a separate, simpler formula at every jie instant from 1924 to 2030, 1,284 in all. Each one lands within 0.01° of its term, about a quarter of an hour of the sun’s motion. And the engine’s Lichun for 2024, 2025 and 2026 is the minute the Hong Kong Observatory publishes: 4 Feb 2024 16:27, 3 Feb 2025 22:10 and 4 Feb 2026 04:02 Hong Kong time.

Download the 2,233 test cases (JSON)

What this page does not claim

Correct pillars make a chart that matches the calendar. They say nothing about whether BaZi describes people well; that part is a traditional interpretive framework, and Thaat offers it for self-reflection, not as a prediction of events.

A chart is only as exact as the birth time you enter. If your recorded time may be rounded, or sits within a few minutes of an hour boundary, look at both neighbouring hour pillars.

Is BaZi accurate? What the evidence on interpretation shows

Calculate your free chart

Questions about the calculation

Does Thaat use true solar time?

Yes, for the day and hour pillars. The birth time is converted with the UTC offset in force at the birthplace on that date, then corrected for the city’s longitude and for the equation of time. The year and month pillars are compared with the solar-term instants directly.

When does the BaZi year start?

At Lichun, the instant the sun reaches 315° of ecliptic longitude, on 3, 4 or 5 February. Not on 1 January and not at Chinese New Year. A birth in January, or in February before Lichun, belongs to the previous BaZi year.

What if I don’t know my birth time?

Leave it empty. The chart is then built from three pillars (year, month and day), which is enough for your core element. You need the time to be sure of every pillar only if you were born within an hour or two of midnight, or on the day a jie term starts a new month.

A personality and strengths framework for self-reflection and entertainment, not a prediction of future events.