Google Calendar has no concept of the lunar calendar. Its "Yearly" repeat option keeps the same Gregorian date every year — but a Chinese lunar birthday lands on a different Gregorian date each year, drifting by 10–11 days. So a lunar birthday added as a normal yearly event is wrong from the second year on.
The reliable fix is to subscribe to an ICS feed that pre-computes the correct Gregorian date of the lunar birthday for the next 20 years. MoonCal generates that feed for you. This guide shows the whole flow in about five minutes.
Step 1 — Create a MoonCal calendar
- Go to usemooncal.com and create a calendar (free — you can even try it before signing up).
- Give it a name, such as "Family birthdays".
- Pick a calendar language: English event titles or 中文. This only affects the text shown in your calendar app.
Step 2 — Add the lunar birthday
- Click "Add event".
- Title: e.g. "Mom's birthday".
- Event type: Birthday.
- Date type: Lunar.
- Enter the lunar month and day. If the birthday falls in a leap month, tick "This is a leap month" and choose a fallback for years without that leap month — usually "Use the same regular month".
- Optional: enter the birth year so the title shows the age each year, e.g. "Mom's birthday (66)".
- Pick reminders (1 day and 3 days before are on by default), then Save.
Step 3 — Subscribe in Google Calendar (desktop)
You can only add a calendar by URL from Google Calendar on the web (desktop). The Google Calendar mobile app has no "add by URL" option — but once you add it on the web, it syncs down to your phone automatically.
- In MoonCal, on the calendar detail page, click "Copy" next to the subscription URL.
- Open Google Calendar in a browser at calendar.google.com.
- In the left sidebar, find "Other calendars" and click the + button next to it.
- Choose "From URL".
- Paste the MoonCal subscription URL and click "Add calendar".
- The calendar appears under "Other calendars". Open its settings to rename it or change its color.
How long until events appear?
Subscribed calendars don't update the instant you add the URL — Google fetches them on its own schedule, so new events and later edits can take up to a day to show up, and there's no manual refresh button. That's normal. Because MoonCal's feed already contains 20 years of dates, the slow refresh almost never affects the birthdays you actually care about.
Want the exact refresh intervals — including how Google compares with Apple, Outlook and Fastmail — and fixes for a subscription that looks empty? See the dedicated guide on how often Google Calendar refreshes ICS subscriptions, linked under Related guides below.
Reminders and age labels
Every MoonCal event carries a 1-day and 3-day reminder (VALARM). Google Calendar shows the events, but note that for subscribed (read-only) calendars Google often does not fire notifications from the feed's own alarms. If you want push reminders, the most reliable approach on Google is to keep notifications enabled for that calendar in its settings, or mirror the key birthdays as your own events.
If you filled in the birth year, the age is baked into the event title (e.g. "Mom's birthday (66)") and recomputed every year, so you always see which birthday is coming up.
Common gotchas
- Trying to add the URL in the phone app — there's no option there. Add it once on the web; it syncs to mobile.
- Expecting instant updates — Google can take up to a day to refresh a subscribed calendar.
- Recording the lunar birthday as a Gregorian "Yearly" repeat — it drifts 10–11 days a year. Delete it and use a Lunar date in MoonCal.
- Pasting a webcal:// link — use the plain https:// URL that MoonCal gives you for "From URL".