Lifein4k downloadsShow contact's birthday reminder, support Gregorian/Lunar calendar conversion, astrological sign and zodiac sign, calendar view
Report a bug · Request a feature
An Obsidian plugin designed to help you easily manage important birthday information for friends, family, colleagues, and clients. The plugin supports Gregorian/Lunar calendar conversion, zodiac and Chinese animal sign display, intelligent calendar view, and automatically adapts to sidebar and main window layouts.
Whether you use Obsidian for personal life management or as a CRM tool for client relationships, this plugin makes birthday reminders elegant and efficient.
(Preview below)
This plugin is fully AI-generated, so please bear with me if there are any issues.
| Feature | Description |
|---|---|
| Configurable Birthday Property | ✨ Customize frontmatter property name – supports any naming like birthday, date_of_birth, DOB, etc. |
| Intelligent Birthday Calculation | Automatically calculates next birthday date and days remaining, accurately determines if this year's birthday has passed |
| Automatic Age Calculation | Automatically calculates upcoming age based on birth date |
| Lunar Calendar Conversion | Uses solarlunar for precise Gregorian to Lunar conversion, supports leap months |
| Zodiac & Animal Signs | Automatically displays zodiac sign and Chinese animal sign, adding cultural interest |
| Folder Filtering | Scan specific folders to avoid scanning entire vault |
| Lunar Birthday | ✨ Record birthdays by the lunar calendar, leap month supported |
| Daily Reminder | Send one notification a day listing today's and upcoming birthdays |
| Search & Sort | Filter by name or alias (with a one-click clear button), sort by days left / name / age |
| Setting | Description |
|---|---|
| Birthday Property Name | ✨ Customize frontmatter property name, default birthday, supports date_of_birth, DOB, etc. |
| Target Folder | Specify folder path to scan |
| Lunar Birthday Property | ✨ Frontmatter property for lunar birthdays, format YYYY-MM-DD, leap month as 2023-02L-01 |
| Alias Property | ✨ Frontmatter property whose aliases are also matched when searching, default aliases; accepts a YAML list or a comma-separated line |
| Daily Reminder | Desktop system notification (Notice on mobile) summarizing today and upcoming birthdays |
| Reminder Time | Time of day for the daily check, 24-hour, default 09:00 |
| Remind Ahead | Extra days to remind in advance, comma separated, e.g. 1,3,7 |
| Visible Months | Number of months to display in calendar view (1-6 months) |
| Color Scheme | 5 theme colors to choose from |
| Show Lunar Calendar | Toggle lunar date display |
| Show Zodiac & Animal | Toggle zodiac and animal sign display |
| Show Calendar View | Toggle monthly calendar display |
| Show Statistics | Toggle statistics cards display at top |
| Highlight Today's Birthdays | Toggle special highlighting for today's birthdays |
| Language | Chinese/English switching |
No longer limited to the birthday property name! You can use any property name you prefer:
Option 1: Use default property
birthday: 1990-05-20
Option 2: Customize to date_of_birth
date_of_birth: 1990-05-20
Option 3: Customize to DOB
DOB: 1990-05-20
Simply configure the corresponding property name in plugin settings, and it will be automatically recognized!
Just add the birthday property to your note's frontmatter, and all features work automatically.
The plugin checks once a minute and sends a notification on the first check after the configured time (default 09:00), merging today's and upcoming birthdays into one message:
Today: John (36 years old), Mary (30 years old)
3d away: Alex (28 years old)
Besides Gregorian birthdays, you can record birthdays by the lunar calendar. The plugin converts the lunar date to its Gregorian equivalent every year:
lunar_birthday: 1990-04-26
For a leap month, append L to the month, e.g. 2023-02L-01. If a particular year has no such leap month, the plugin falls back to the regular month instead of skipping the birthday. Lunar entries carry a "Lunar" badge and also appear in reminder summaries.
The search box matches both name and aliases, so typing part of either is enough:
birthday: 1990-05-20
aliases: [Johnny, Little Li]
Aliases can be a YAML list or a single comma-separated line (aliases: Johnny, Little Li). When a row is matched only through an alias, it is labelled "Alias: Johnny" — so you never wonder why someone showed up in the results.
The × button inside the search box appears whenever it has content; clicking it clears the field and keeps focus.
Uses the professional solarlunar library, supporting precise lunar conversion for years 1900-2100, correctly handling leap months.
Click any birthday card or birthday name in the calendar to immediately open the corresponding note – no manual searching required.
ResizeObserver to monitor window changes for real-time layout adjustment
The plugin is now available in the Obsidian Community Plugin Store! 🎉
Birthday Reminderhttps://github.com/ichris007/Obsidian-Birthday-Remindermain.js, manifest.json, styles.css) from the Releases page.obsidian/plugins/birthday-reminder/date_of_birth, enter it here07Relations/)The plugin reads three properties. All are optional — use whichever you need:
| Property | Purpose | Example |
|---|---|---|
birthday |
Gregorian birthday (name is configurable) | birthday: 1990-05-20 |
lunar_birthday |
Lunar birthday, leap month with L |
lunar_birthday: 2023-02L-01 |
aliases |
Aliases, matched when searching | aliases: [Johnny, Little Li] |
A complete note header might look like this:
---
birthday: 1990-05-20
lunar_birthday: 1990-04-26
aliases: [Johnny, Little Li]
---
If a note has both the Gregorian and lunar properties, it produces two entries (the same person appears twice). Fill in only one of them.
onunload no longer detaches leaves (that used to snap the panel back to its default location even after you moved it). Swapped the deprecated Notice.noticeEl for messageElpadStart, Object.entries) that degrade to any when @types/node is not in the type environment, and added ES2017 to tsconfig's lib so the compiler no longer depends on that referenceNotice on mobile) summarizing today and the next N days; click it to open the panel. Falls back to an in-app notice when notification permission is denied. New command "Check today's birthday reminders", which always answers with an in-app notice so it stays visible even when the OS silently drops system notificationslunar_birthday property (YYYY-MM-DD, leap month as 2023-02L-01). The next occurrence is converted to its Gregorian date every year, falling back to the regular month when that year has no such leap monthgetSettingDefinitions() overridebirthMonth/birthDay variable extractionminAppVersion to 1.12.7 to resolve "no appropriate version found" errorSetting class + display() method for better stabilitygetSettingDefinitions() for future migrationany types – Complete type safety overhaul1.13.0voidbirthday, date_of_birth, DOB, etc.)MIT License
date_of_birth property. Can it be supported?A: Yes! Simply change the "Birthday Property Name" in plugin settings to date_of_birth.
A: Currently only one property name is supported, but you can choose the one you use most frequently and unify other notes accordingly.
A: The plugin uses the professional solarlunar library, supporting precise lunar conversion for years 1900-2100, including leap month handling.
A: Yes! The plugin automatically detects window width – switches to compact mode when width is less than 450px, and full mode when width is 450px or greater.
A: Add lunar_birthday: 1990-04-26 to the note's frontmatter, where the year is the lunar year. For a leap month, append L to the month: lunar_birthday: 2023-02L-01. If a particular year has no such leap month, the plugin falls back to the regular month. To use a different property name, change "Lunar Birthday Property" in settings; leave it empty to disable lunar birthdays.
A: Once a day, on the first check after the configured time (default 09:00), and only if there is something to report. On desktop it uses a system notification, on mobile a notice. Clicking it opens the panel. You can also run "Birthday Reminder: Check today's birthday reminders" manually at any time.
A: Yes. The plugin reads the aliases property by default and matches both name and aliases:
---
birthday: 1990-05-20
aliases: [Johnny, Little Li]
---
A single comma-separated line (aliases: Johnny, Little Li) works too. When a row is matched only through an alias, it shows "Alias: Johnny" so you know why it appeared. Change the property name in Settings → Data source → "Alias property"; leave it empty to search names only.
A: Check these in order:
lastNotifiedDate in the plugin data to test againNotification.permission is always granted on macOS, so the plugin cannot tell whether the master switch under System Settings → Notifications → Obsidian is off. If it is off, automatic reminders fail silently. Verify Obsidian's notification permission there and check whether Focus/Do Not Disturb is enabledTo confirm the plugin itself is fine, run "Birthday Reminder: Check today's birthday reminders" — it always answers with an in-app notice. If it shows content, your data is fine and the problem is the system notification permission.