# Chinese Zodiac Calculator (生肖)

> Finds the Chinese zodiac animal (生肖 shengxiao), sexagenary year (干支 ganzhi), stem element, yin/yang, nayin (纳音) and fixed element for a birth date, using either the Chinese New Year boundary or the 立春 (Lichun) boundary, plus the traditional relationship groups (六合, 三合, 六冲, 六害, 相刑) and 本命年 years.

- Calculator id: `chinese-zodiac` · Category: Chinese Calendar (`lunar`) · Tool name: `find_chinese_zodiac`
- Canonical page: https://tttkmbb.com/lunar/chinese-zodiac · This document: https://tttkmbb.com/lunar/chinese-zodiac.md · JSON definition: https://tttkmbb.com/lunar/chinese-zodiac.json

## Purpose

Finds the Chinese zodiac animal (生肖 shengxiao), sexagenary year (干支 ganzhi), stem element, yin/yang, nayin (纳音) and fixed element for a birth date, using either the Chinese New Year boundary or the 立春 (Lichun) boundary, plus the traditional relationship groups (六合, 三合, 六冲, 六害, 相刑) and 本命年 years.

**Use when:** You need someone's Chinese zodiac sign and element from a Gregorian birth date, especially for January–February births where the boundary matters, or the sign's traditional compatibility groups.

**Do not use when:** You need a full Bazi chart with month, day and hour pillars (use bazi-four-pillars), or the Western star sign (use zodiac).

## Input

| Parameter | Type | Unit | Required | Description |
| --- | --- | --- | --- | --- |
| `birth_date` | date |  | required | Gregorian birth date (civil date in China Standard Time), 1900–2100. |
| `boundary` | enum: lunar_new_year \| lichun |  | optional, default "lunar_new_year" | Which event starts the zodiac year: Chinese New Year (popular usage, default) or 立春 around 4 February (astrological usage). |
| `reference_year` | integer |  | optional | Optional Gregorian year for which to report the age and whether it is a 本命年. (min 1900, max 2100) |

## Output

| Field | Type | Unit | Description |
| --- | --- | --- | --- |
| `zodiac` | string |  | Animal sign in English. |
| `zodiac_cn` | string |  | Animal sign character. |
| `year_ganzhi` | string |  | Sexagenary year, e.g. 庚午. |
| `year_ganzhi_pinyin` | string |  | Pinyin, e.g. Gengwu. |
| `year_english` | string |  | Stem element and animal, e.g. Metal Horse. |
| `stem_element` | string |  | Element of the heavenly stem with its character. |
| `yin_yang` | string |  | Polarity of the stem (and branch) of the year. |
| `nayin` | string |  | Nayin melodic element of the year ganzhi. |
| `animal_fixed_element` | string |  | Element of the earthly branch: Rat Water, Ox Earth, Tiger Wood, Rabbit Wood, Dragon Earth, Snake Fire, Horse Fire, Goat Earth, Monkey Metal, Rooster Metal, Dog Earth, Pig Water. |
| `year_used` | integer |  | Year number the birth date was assigned to under the chosen boundary. |
| `chinese_new_year_date` | date |  | Date of 正月初一 in the Gregorian year of birth. |
| `lichun_datetime` | string |  | Instant of 立春 in the Gregorian year of birth (China Standard Time). |
| `boundary_note` | string |  | Whether the birth date fell before or after the chosen boundary, and what the other convention would give. |
| `benmingnian_years` | string_list |  | Zodiac years of the same animal from the birth year to birth year + 96, with their ganzhi. |
| `secret_friend` | string |  | Six-harmony partner of the sign. |
| `trine_partners` | string |  | The two other signs of the same triangle of affinity. |
| `clash` | string |  | Opposite sign on the 12-branch circle. |
| `harm` | string |  | Six-harm counterpart of the sign. |
| `punishment` | string |  | Punishment partners: 寅巳申 and 丑戌未 groups, the 子卯 pair, or self-punishment (自刑) for 辰午酉亥. |
| `age_in_reference_year` | integer | years | Age reached on the birthday in reference_year (reference_year − Gregorian birth year); only when reference_year is given. |
| `is_benmingnian_in_reference_year` | boolean |  | true when the zodiac year numbered reference_year has the same animal as the birth year; only when reference_year is given. |
| `reference_year_zodiac` | string |  | Ganzhi and animal of the year numbered reference_year; only when reference_year is given. |

## Formula

`year_used = Gregorian year, minus 1 when birth_date is before Chinese New Year (or before 立春 with boundary = lichun); ganzhi index = (year_used − 4) mod 60; animal = branch = index mod 12; 六合 partner = (13 − b) mod 12; 三合 = b ± 4; 六冲 = b + 6; 六害 partner = (7 − b) mod 12`

Popular usage starts the zodiac year at Chinese New Year; Chinese astrology (Bazi) starts it at 立春, so a person born between the two dates can have a different sign under each convention. Relationship groups follow the classical branch tables (六合 子丑 寅亥 卯戌 辰酉 巳申 午未; 三合 申子辰 亥卯未 寅午戌 巳酉丑; 六冲 opposite branches; 六害 子未 丑午 寅巳 卯辰 申亥 酉戌; 相刑 寅巳申, 丑戌未, 子卯, 自刑 辰午酉亥). Traditional calendar/cultural reference calculation; not a prediction, medical, legal or financial advice.

## Data Sources

- Chinese zodiac (Wikipedia) — https://en.wikipedia.org/wiki/Chinese_zodiac (reference, retrieved 2026-09-24)
- Chinese calendar (Wikipedia) – calendar rules as standardised in GB/T 33661-2017 — https://en.wikipedia.org/wiki/Chinese_calendar (reference, retrieved 2026-09-24)
- Hong Kong Observatory – Gregorian-Lunar Calendar Conversion Table — https://www.hko.gov.hk/en/gts/time/conversion.htm (government, retrieved 2026-09-24)

Data freshness: `static`. Deterministic formula with fixed constants; results never go stale. Inputs supplied by the caller determine the output.

## API

- `GET https://tttkmbb.com/api/v1/calculate/chinese-zodiac?birth_date=…`
- `POST https://tttkmbb.com/api/v1/calculate/chinese-zodiac` with JSON body `{"inputs": {…}}`
- Response: unified envelope (`success`, `request`, `result.values`, `result.units`, `sources`, `freshness`, `timestamp`, `next_actions`, `links`); see https://tttkmbb.com/docs/response-format.md
- Schema: https://tttkmbb.com/api/v1/calculators/chinese-zodiac · OpenAPI operationId `find_chinese_zodiac` in https://tttkmbb.com/openapi.json
- Authentication: none. Rate limit: fair use, see https://tttkmbb.com/docs/rate-limits.md.

## MCP

- Server: `https://tttkmbb.com/mcp` (Streamable HTTP, JSON-RPC 2.0, no auth)
- Tool: `find_chinese_zodiac` (dedicated) or `run_calculator` with `{"calculator_id": "chinese-zodiac", "inputs": {…}}`

## Example

- 1990-02-10, New Year boundary (CNY 1990-01-27): inputs `{"birth_date":"1990-02-10","boundary":"lunar_new_year","reference_year":2026}` → `{"zodiac":"Horse","zodiac_cn":"马","year_ganzhi":"庚午","year_ganzhi_pinyin":"Gengwu","year_english":"Metal Horse","year_used":1990,"chinese_new_year_date":"1990-01-27","secret_friend":"Goat (羊)","clash":"Rat (鼠)","age_in_reference_year":36,"is_benmingnian_in_reference_year":true}`
- 1990-02-03 with the 立春 boundary (立春 1990-02-04): inputs `{"birth_date":"1990-02-03","boundary":"lichun"}` → `{"zodiac":"Snake","year_ganzhi":"己巳","year_used":1989,"year_english":"Earth Snake","trine_partners":"Rooster (鸡) and Ox (牛)"}`

```
GET https://tttkmbb.com/api/v1/calculate/chinese-zodiac?birth_date=1990-02-10&boundary=lunar_new_year&reference_year=2026
```

## Limitations

You need a full Bazi chart with month, day and hour pillars (use bazi-four-pillars), or the Western star sign (use zodiac). Popular usage starts the zodiac year at Chinese New Year; Chinese astrology (Bazi) starts it at 立春, so a person born between the two dates can have a different sign under each convention. Relationship groups follow the classical branch tables (六合 子丑 寅亥 卯戌 辰酉 巳申 午未; 三合 申子辰 亥卯未 寅午戌 巳酉丑; 六冲 opposite branches; 六害 子未 丑午 寅巳 卯辰 申亥 酉戌; 相刑 寅巳申, 丑戌未, 子卯, 自刑 辰午酉亥). Traditional calendar/cultural reference calculation; not a prediction, medical, legal or financial advice. All values are computed from the formula above; no measurement or live data is involved.

## FAQ

**Which boundary should I use?**

For the popular zodiac sign (new-year greetings, birth-year animal) use Chinese New Year. For Bazi/Four Pillars charts and most feng shui schools use 立春 (about 4 February); only births between 立春 and Chinese New Year (or vice versa) are affected.

**What is the 'fixed element' of an animal?**

The element of the animal's earthly branch (e.g. Horse = 午 = Fire), which never changes; the stem element (Metal Horse, Fire Horse …) cycles with the year.

**What is a 本命年?**

A year with the same animal as your birth year (every 12 years, e.g. ages 12, 24, 36 …). Tradition treats it as a year to take care in; this is a cultural reference, not a forecast.

## Related

- [Sexagenary Cycle Calculator (干支)](https://tttkmbb.com/lunar/sexagenary-cycle.md) — Full 60-year cycle table and the years sharing a ganzhi.
- [Chinese Nominal Age Calculator (虚岁)](https://tttkmbb.com/lunar/lunar-age.md) — Nominal age (虚岁) and next 本命年 from the same birth date.
- [Zodiac Sign Calculator](https://tttkmbb.com/everyday/zodiac.md) — Western star sign for the same birth date.
