Open the app — Lunar · Solar Converter
Dates in old records are almost always lunar. When you meet something like the byeongja year, eleventh month, fifteenth day, what that is on the solar calendar does not come to mind.
The lunar calendar also has leap months, so the same sixth month, fifteenth day can come around twice in one year.
This tool holds 748,705 days, from AD 1 to 2050.
Search by solar date, by lunar date or by sexagenary cycle — you arrive at the same day.
The calendar can carry public holidays, national days, solar terms, commemorative days and folk days,
and dates of your own — a parent’s lunar birthday, say — whose solar position is recomputed each year.
Those can be exported as an iCal file and imported into Google Calendar.
Using it
Six ways in
| Tab | What you type | Example |
|---|---|---|
| Lunar | lunar date | 2025-06-15 |
| Solar | solar date | 2026-08-31 |
| Sexagenary | year pillar | 병오, 丙午 |
| Year | lunar year | 2026 |
| Julian Day | integer | 2,461,284 |
| Calendar | year-month | 2026-08 |
Dates are tidied as you type. 20260831 becomes 2026-08-31, and 2025-5-1 is accepted as written.
After a search it settles into the canonical form, so a copied link always looks the same.
Reading the result
The result comes in blocks — solar on the left, lunar on the right.
year pillar month pillar day pillar
Solar 2026 - 08 - 31 Lunar 2026 - 07 - 19
Monday 병오丙午 병신丙申 정축丁丑
On the lunar side, the pillar for each position sits under its number.
The year pillar (연주) belongs to the year, the month pillar (월건) to the month, the day pillar (일진) to the day.
Numbers and pillars are stacked, so the pairing is visible at a glance.
The weekday sits in the matching slot on the solar side, so both rows of numbers line up.
If the day is a holiday or a solar term, that is noted under the solar figures —개천절, 입춘 5시 2분. This appears not only on the calendar but on results reached by lunar date or pillar,
following whatever you picked in the Show on calendar row of the Calendar tab.
For dates within the Joseon period, the reigning king and regnal year appear underneath.1700-07-17 reads 숙종 26년 — the 26th year of King Sukjong.
From 1896 the country used the solar calendar,
so from then on it sits on the solar side and the era name comes with it — 고종 33년 건양 원년.
← and → move a day at a time, and the Previous / Next day buttons do the same.
Stepping from a lunar search keeps you on the lunar view.
Leap months show both
Searching the lunar date 2025-06-15 returns two cards.
| Lunar | Solar | |
|---|---|---|
| Ordinary | 6th month, 15th day, 2025 | 2025-07-09 |
| Leap | Leap 6th month, 15th day, 2025 | 2025-08-08 |
You do not have to choose in advance. If that year has the leap month, both appear; if not, one card.
The month reads 윤06 with a 윤달 mark, so they do not blur together.
A leap month has no month pillar. Seeing “none” there is correct — the reason is below.
Choosing what the calendar shows
The Calendar tab lays out one month, seven days to a row. The large number is solar, the small one lunar (6/15).
The top-right corner of each cell tells you what kind of day it is.
The Show on calendar row above the table turns each layer on and off.
| Layer | What appears | Data covers |
|---|---|---|
| Lunar | the lunar date in every cell | AD 1–2050 |
| Public holidays | Seollal, Chuseok, substitute holidays — in red | 2004 onward |
| National days | Samiljeol, Jeheonjeol, Gwangbokjeol, Gaecheonjeol, Hangeul Day — in red | 1949 onward |
| Solar terms | Ipchun, Gyeongchip, Haji and the rest, with the exact time | 2000 onward |
| Commemorative days | Taxpayers’ Day, Science Day and other statutory observances | 2004 onward |
| Folk days | Jeongwol Daeboreum, Hansik, Dano, the three dog days, Chilseok | 2004 onward |
| My own dates | whatever you have saved (sign-in required) | no limit |
Your choice rides along in the URL (?show=), so sending that link shows the recipient the same view.
It is also remembered in the browser, and if you are signed in it follows you to other devices.
The Print · PDF button sits at the right end of the same row. It strips the interface and fits the calendar onto one A4 sheet.
Landscape is the default; portrait is available. Choosing “Save as PDF” in the browser’s print dialog gives you a PDF.
Whatever you have turned on prints too, so you can produce a calendar with holidays and solar terms already on it.
The calendar covers 1950 onward. Date conversion itself still works from AD 1.
What the five kinds of special day are
Public holidays, national days, solar terms, commemorative days and folk days all come from
the Korea Astronomy and Space Science Institute’s special-day service,
the same institute that supplies the lunar data, so the two never disagree. The five mean quite different things.
Public holidays — days government offices close, set by the Regulations on Public Holidays.
Several of them — Seollal, Chuseok, Buddha’s Birthday — follow the lunar calendar, so their solar dates move every year.
Substitute holidays (when a holiday falls on a weekend) and one-off temporary holidays are included.
From 2026 Jeheonjeol and May Day became public holidays; Jeheonjeol had lost that status in 2008 and returned after eighteen years.
National days — the five days that mark national occasions, fixed by the National Days Act:
Samiljeol (1 March), Jeheonjeol (17 July), Gwangbokjeol (15 August), Gaecheonjeol (3 October), Hangeul Day (9 October).
Because the law fixes the dates, this tool computes them rather than fetching them — which is why national days appear
even on a 1950s calendar, where no special-day data exists.
National days and public holidays are not the same thing. From 2008 to 2025 Jeheonjeol was a national day but not a day off.
Hangeul Day spent years in the same position, and only became a national day in 2006.
Solar terms — the twenty-four points fixed by the sun alone; see “The twenty-four solar terms are solar” below.
This tool also shows the moment each term begins — 입춘 5시 2분 means Ipchun starts at 5:02 in the morning
(시 is hour, 분 minute). The same term falls at a different time each year.
Commemorative days — statutory observances under the Regulations on Various Commemorative Days, seventy to a hundred-odd each year.
Taxpayers’ Day, Science Day, Information and Communication Day and the like: not days off, but days the state has designated.
There are enough of them that this layer starts switched off.
Folk days — neither terms nor statutory observances, but days that matter in seasonal custom. Eight of them arrive:
Jeongwol Daeboreum (first full moon), Hansik, Dano, the three dog days of summer, Chilseok, and Towang Yongsa.
Most are reckoned from the lunar calendar or from the terms, so their solar dates shift each year. They are particularly useful when reading old records.
Two solar calendars
The toggle in the header switches between the Gregorian and Julian calendars.
The day after 4 October 1582 became 15 October, cutting ten days, and countries changed over at different times.
Records from that era therefore mix the two. That is why the Russian October Revolution falls in November on the Gregorian calendar.
We use the Gregorian calendar, so that side is the default.
Flip the toggle only when you are working with a record written in Julian dates.
The day you are looking at stays put while the notation changes, so switching keeps you on the same day.
Straight to the chronology
Press the East Asian Chronology button in the Chronology row below the date to open that year in the chronology.
The Year view has the same button.
The chronology runs to 1945, so for later dates the button is dimmed and cannot be clicked.
Linking straight to a date
Searching updates the address bar. Keep that link and it opens on that date next time.
calendar.hanhub.click/?solar=2026-08-31
calendar.hanhub.click/?lunar=2026-07-19
calendar.hanhub.click/?year=2026
calendar.hanhub.click/?month=2026-08
calendar.hanhub.click/?gapja=병오
calendar.hanhub.click/julian?julian=1582-10-04
Saving your own lunar dates
In many Korean families birthdays and memorial rites follow the lunar calendar. The trouble is that a lunar date
lands on a different solar date every year, so setting it to “repeat yearly” in a phone calendar drifts further off as the years pass.
The gear (⚙) button at the top right opens the settings panel. Dates saved here have their solar position
recomputed every year before they go onto the calendar. They live in your account so they survive a change of device,
which means signing in with Google is required. Each person can save up to twenty.
There are five ways to say when a date comes round.
| Repeat | Calendar | How you write it | Typical use |
|---|---|---|---|
| Yearly | lunar or solar | 1950-08-23, or just 08-23 | birthdays, memorial rites, anniversaries |
| Once | lunar or solar | 2026-03-02 | a start date, a one-off |
| Monthly | lunar or solar | 15 | rent day, the lunar full moon |
| Nth weekday of the month | solar | pick “second” and “Tuesday” | a regular meeting |
| Weekly | solar | pick “Wednesday” | a weekly stand-up |
Dates are typed the same way as in the converter: 2011-12-20, 2011-4-7 and 2011-01-01 all work,
and the hyphens appear as you type. Yearly entries can drop the year and take just 12-20 —
but giving the year lets the tool count the anniversary, so a mother born in 1950 shows up as 어머니 생신 76주년 —
her 76th. (주년 is the general counter for years elapsed; 돌 would be birthday-only and 주기 memorial-only.)
The year you enter is not itself counted: that is the day it began, not the first anniversary.
Choosing the lunar calendar brings out a leap month checkbox. Tick it for someone born in a leap month.
In years without that leap month the date falls back to the ordinary month, and the tool says so —
following the customary practice for leap-month birthdays.
Dates that do not exist are refused. There is no 31 November in any year, no 29 February in 2025,
and no leap sixth month in 2026. All of these are caught as you type them.
A repeat never runs backwards past its starting day. Give a year and it starts there —
a birthday for someone born in 1950 has no business appearing on a 1900 calendar. Leave the year out,
or use a repeat that has no year field at all (monthly, weekly, nth weekday), and it starts today:
with no known beginning, putting it on every year would stamp rent day across an 1800 calendar.
Moving it into Google Calendar
Your saved dates and the state’s special days can be exported as an iCal file (.ics) and imported into Google Calendar.
The Export to iCal block at the bottom of the settings panel does this.
- Choose what goes in. Public holidays, national days, solar terms, commemorative days, folk days and your own dates
are each toggled separately. They start matching whatever the calendar is showing. - Set the range, as in
from 2026 to 2045. Up to fifty years at a time. - Download as iCal produces
my-calendar.icsand tells you how many entries it wrote. - Open Google Calendar in a desktop browser.
Importing is not available in the phone app, so do this on a computer. - Go to gear (⚙) → Settings.
- Pick Import & export in the left-hand menu.
- Choose the file, pick which calendar receives it, and press Import.
Make a new calendar for it. Using the + next to “Other calendars” to create one named, say, Lunar dates
lets you hide or delete the whole set later. Mixed into your main calendar, they have to be removed one at a time.
A few things worth knowing:
- Lunar dates cannot be written as “repeats yearly”, because their solar position moves. Each year is written out separately,
so choosing twenty years produces twenty entries. Lunar public holidays like Seollal and Chuseok work the same way. - You will need to export again when the range runs out. If you imported through 2045, do it once more around then.
- Importing the same file twice does not duplicate anything. Every entry carries a stable identifier, so Google
recognises it and overwrites. Edit a date, export again, and the old entry is updated rather than doubled. - Solar terms carry the exact time in the title (
입춘 5시 2분). - Special-day data currently runs to 2028. Beyond that only national days and your own dates are written,
since those have fixed rules. The source data grows each year and this tool refetches it on every deploy,
so the range extends on its own over time.
Apple Calendar and Outlook read the same .ics. Double-clicking the downloaded file usually opens it directly.
Worth knowing
How a leap month is decided
The lunar month follows the synodic cycle of about 29.53 days. Twelve of them make about 354 days — some ten days short of a solar year.
Left alone, New Year would drift into summer within a few years, so a thirteenth month is inserted every two or three years.
Nineteen solar years come out almost exactly equal to 235 lunar months, so seven leap months in nineteen years all but cancels the error.
Which month gets doubled is settled by the twenty-four solar terms. They divide into odd-numbered jeolgi and even-numbered junggi, and each lunar month is assigned one junggi.
But the gap between junggi (30.44 days on average) is longer than a lunar month, so they drift, and eventually a month arrives with no junggi in it at all.
That month becomes the leap month and takes the name of the month before it.
In summer the earth moves slowly, stretching the gap to 31.4 days, so leap months cluster there.
Leap months from the 2nd to the 8th are common; a leap 11th, 12th or 1st month comes round once in centuries.
The twenty-four solar terms are solar
The terms are defined purely by the sun’s position — the ecliptic cut into twenty-four fifteen-degree steps. The moon’s phase never enters the calculation.
So on the solar calendar their dates barely move from year to year (Ipchun around 4 February, Dongji on 21–22 December), while on the lunar calendar they swing by more than ten days.
They are easy to mistake for a lunar feature because old calendars printed them beside lunar dates.
The truth is closer to the opposite: the terms are the solar element that stops the lunar calendar from drifting out of season.
Turning on Solar terms in “Show on calendar” puts the term’s name and the moment it begins into the cell —입춘 5시 2분 — Ipchun beginning at 5:02 am. The time is there because a term is not a day but an instant:
the sun crosses a fixed point, and the day containing that instant is the term’s day. So the same term falls at a different time each year,
and when it lands near midnight the day itself can shift.
The pillars are not lunar dates
The sexagenary pillars are often called “lunar”, but each has its own basis.
| Pillar | Basis |
|---|---|
| Day (일진) | a 60-day cycle tied to nothing else |
| Month (월건) | solar terms |
| Year (연주) | New Year, or Ipchun, depending on use |
The day pillar in particular is a pure 60-day cycle that has never once been broken. It keeps turning through leap months and calendar reforms alike.
That is why a single modulo on the Julian Day Number produces it.
This is also why a leap month has no month pillar. The month pillar is fixed by solar terms, and a leap month is precisely the month with no junggi to assign.
The year pillar splits by usage. For naming historical years — the Imjin War, the Gabo Reform — it turns at New Year; in fortune-telling it turns at Ipchun.
That is why the zodiac sign of someone born in January or early February differs between sources. This tool uses the New Year basis.
The Julian Day Number
It simply counts days from a fixed origin. No years, no months — one integer, which makes it the common ground between different calendars.
The origin is noon on 1 January 4713 BC, found by working backwards to the last moment when the 28-year solar cycle, the 19-year Metonic cycle and the 15-year indiction all began together (28 × 19 × 15 = 7,980 years).
The name has no direct connection to the Julian calendar or to Julius Caesar. Joseph Scaliger proposed it in 1583; the names merely coincide.
Wu Zhou notation
For 696–700 the eleventh and twelfth lunar months appear as 正 and 臘. This is not an error but the calendar as it stood.
In the first year of the Zaichu era, Wu Zetian moved the start of the year to the ja month, renaming the eleventh month jeongwol (正月) and the twelfth napwol (臘月).
The month pillars in the source follow suit.
Two corrections to the source
The data comes from the Korea Astronomy and Space Science Institute.
Two places where the source contradicts itself were corrected with evidence; nothing else was touched.
The year pillar for 511 — the source reads 신축 (辛丑), but sitting between 경인 in 510 and 임진 in 512 it has to be 신묘 (辛卯).
The standard formula that makes AD 4 a gapja year gives 신묘 as well, and against the 2,085 years in East Asian Chronology, 511 was the only year that disagreed.
The first day of the third month, 768 — the second month ran 28 days and the third 31. A synodic month can only be 29 or 30 days, so neither length is possible.
Computing the new moons for 754 months across 740–800 shows the source erring only late; this one month was a day early and had an impossible length.
Moving the first day one day later makes the months 29 and 30 days, as they should be.
Using it from code
It runs entirely in the browser with no server, but the paths and response shape match a REST API.
import { createClient } from 'https://calendar.hanhub.click/src/api.js';
const api = await createClient();
api.get('/api/v1/solar/2026-08-31'); // Gregorian → lunar and pillars
api.get('/api/v1/lunar/2026-07-19'); // lunar → solar (ordinary and leap)
api.get('/api/v1/year/2026'); // the months of that lunar year
api.get('/api/v1/month/2026-08'); // one month of calendar
api.get('/api/v1/gapja/yeonju/병오'); // years whose pillar is byeongo
A day’s result carries what you see on screen. day.reign is the reigning king and regnal year
(with the era name where there is one), and day.sources is the East Asian Chronology link.
{ "reign": { "name": "숙종", "year": 26, "label": "숙종 26년", "era": null },
"sources": [ { "id": "chronology", "name": "동양연표", "group": "chronology", "deep": true,
"outOfRange": false, "url": "https://chronology.hanhub.click/?year=1700" } ] }
The API page lets you click a path and see the response straight away.
When you need more authority
This is a tool for checking quickly.
For something you will cite, consult the original KASI data alongside it.
Found an error? Use [오류신고] at the bottom of the page to report it.
Goes well with
- To turn era names and cycle years into Western years, there is East Asian Chronology.
- To look up characters from your source, use the Korean Studies Web Dictionary.
- To type a character whose reading you don’t know, there is the Unicode Hanja IME.
- To dock several tools beside your browser, use the Korean Studies Toolkit Chrome extension.
Open the app — Lunar · Solar Converter