Endearist

Birthday Reminder Calendar

Paste names and dates, choose your reminder lead time, then download and import a .ics file with recurring birthday events.

Takes ~60 seconds No data stored Free, no signup
Reminders

February 29 repeats only in leap years, with no February 28 or March 1 fallback. Duplicate rows remain separate events.

With saving off, the list stays in this tab. Previously saved data stays until you clear it. To restore after reload, enable saving again.

The link contains only reminder offsets. Deliberately share the birthday list as the downloaded file.

Endearist launch list

Optional: one email at launch. Your birthday list is not passed to this form.

Endearist is in development.

Join the launch list: one email when it opens. Platforms, plans and capabilities need their own approval; signup creates no app access or purchase.

Join the launch list

Want to keep the shared context too? Use the contact list template. Copy the name and day/month manually; this link sends none of your entries.

How the Birthday Reminder Calendar Works

The tool above does three things in order. First, paste your birthday list into the text box — one line per person, in practically any reasonable date format. Second, choose how far in advance you want a reminder: one day before, one week before, or both. Third, click "Download .ics" and the tool builds a calendar file entirely in your browser and hands it to you as a download — no server round-trip, no processing delay.

The preview panel above the download button shows every entry the parser recognised before you commit to a download, so you can catch a typo or a misread date first. If a line can't be parsed, the tool tells you which line and why, right there in the interface, instead of silently dropping it.

Once you have the .ics file, import it into your calendar — see "How to Import" below for the steps in Apple Calendar, Google Calendar, and Outlook.

Why a Real Calendar Beats a Phone Reminder

A one-off phone reminder fires once. After you import this file, the birthday events recur each year in the calendar you chose. They may appear on your other devices if that calendar account syncs. The download itself is a snapshot: changes to your list here do not update events you already imported. Download and import a new file when your list changes, checking for duplicates in your calendar.

A paper birthday book or the birthday page in a physical planner has the opposite problem: it never interrupts you. It only helps if you remember to open it during the right week. Imported recurring calendar events can appear in the daily view you already check, with reminders if your calendar app supports and enables them.

For the people who genuinely matter to you — the inner fifty of your social circle, the ones worth a real message rather than a belated emoji — a calendar entry is a qualitatively different commitment than a notification. It makes the birthday visible. It tells you on Monday that Saturday is someone's day. That lead time is what turns a birthday from a last-minute panic into a moment you can make count.

What .ics Files Actually Are

The .ics format is defined by RFC 5545, the iCalendar standard. Calendar applications such as Apple Calendar, Google Calendar and Microsoft Outlook can import these files. Importing a downloaded file adds a snapshot of its events; it does not set up a feed that refreshes when your source list changes.

The .ics files produced by this tool use RRULE:FREQ=YEARLY for recurring all-day birthdays. Each entry includes a VALARM block for each selected reminder offset (one day before, one week before, or both). With both reminders off, it contains no alarms. Check your calendar app's notification settings after import; some apps may ignore imported alerts.

February 29 stays a leap-day birthday. The yearly rule has no February 28 or March 1 fallback. Without a birth year, DTSTART uses a date placeholder (1970, or leap year 2000 for February 29), never an inferred age. Exact duplicate input rows remain separate events; check the preview and remove accidental duplicates yourself.

How to import and replace the file

Create a dedicated birthday calendar first so replacing an earlier import does not affect your other appointments.

Apple Calendar on macOS: File → Import, choose the .ics file, then select your birthday calendar. See Apple’s import instructions. Import on Mac and sync the selected account to other devices where supported.

Google Calendar on a computer: Settings → Import & export, choose the file and destination calendar, then Import. See Google’s import instructions.

Outlook.com / Outlook on the web: Calendar → Add calendar → Upload from file, choose the .ics file and destination calendar, then Import. See Microsoft’s import instructions. Desktop menus differ by version.

These are vendor-documented paths, not a completed import test of this export. Check ordinary birthdays, leap-day dates and selected alerts in your client. On a later change, clear only the previous events in the dedicated birthday calendar before importing the replacement. A second import may create duplicates, regardless of stable event UIDs.

Privacy: local entries and options-only links

Entering, editing and exporting names, dates and the calendar name happen in this browser. These actions do not upload the list. The separate optional launch-list form receives your email and its own form fields, never the birthday inputs.

Saving is off by default. Turn on “Save this list in this browser” to use localStorage in this browser profile. After reload, enable it again to restore into an empty editor. Current edits take priority. Turning saving off leaves the saved copy until you use “Clear saved list”; that button works with saving off too.

“Copy options link” contains only reminder offsets. Share the downloaded file deliberately if you want to share names and dates. Legacy links included the list in unencrypted Base64 query parameters: opening one may already have sent it to a server, history or logs. They are no longer imported. Removing the parameter after loading cannot undo that initial request.

Who Deserves a Calendar Entry vs a Quick Message?

Robin Dunbar's research on social layer structure — most concisely described in his 1992 paper on neocortex size as a constraint on group size (Journal of Human Evolution, 22(6), 469–493; DOI: 10.1016/0047-2484(92)90081-J) — suggests that stable social networks organise into concentric layers: a support clique of roughly five people, a sympathy group of roughly fifteen, and a broader close-friends layer of roughly fifty.

A useful heuristic for your birthday calendar: if someone belongs to your inner fifty, they deserve a proper calendar entry with a reminder lead time. For your outer layers — the 150, the acquaintances — a quick note when LinkedIn or Facebook prompts you is probably enough. The calendar file is for the people whose birthday you would feel genuinely bad about missing: the ones you want to have something ready for, not just react to.

Use our Dunbar Calculator if you want to map your own social layers before deciding who goes in the list.

A calendar entry covers the birthday, but for the people in your inner fifty, the date you actually became friends is worth marking too. Our friendship anniversary calculator works out exactly how long you've been friends — years, months, and days — plus your next milestone.

A Note on Flexible Input

The parser accepts a wide range of date formats so you can paste from wherever your birthday list currently lives — a ChatGPT export, an Excel sheet, your Notes app, a WhatsApp chat history. Formats like Alice 15.03.1990, Bob March 22, Clara — 12/07/1985, and David 1987-09-30 are all handled. Lines beginning with # are treated as comments. Blank lines are silently skipped. If a line can't be parsed, the tool shows you exactly which line and why, so you can correct it without losing the rest of your list.

If your source data uses MM/DD or DD/MM slash notation ambiguously, the parser defaults to the European DD/MM convention for ambiguous cases (where both numbers are 12 or below). Unambiguous cases — like 13/04 or 04/13 — resolve correctly in both conventions.

Want more than a calendar file, such as widgets or gift notes? Our birthday reminder apps comparison covers Apple and Google's built-in options alongside Birday, Cardhop, and Covve, based on the existing vendor research.

Join the launch list: one email when it opens. Platforms, plans and capabilities need their own approval; signup creates no app access or purchase. Join the launch list.

How this test was built

The parser validates calendar dates before export. Each birthday is an all-day yearly recurrence; February 29 stays leap-only. Unknown birth years use serialization placeholders, without estimating age. Only selected reminders are written as VALARM blocks. Calendar-client imports and alert delivery are separate checks. Your input is processed locally; optional browser saving is off by default and shared links contain only reminder options. Legacy list links were not encrypted and may already have reached servers when opened.

Frequently asked questions

What file does this tool produce?
An iCalendar (.ics) file using RFC 5545. Apple Calendar, Google Calendar and Outlook document file import, but this generated fixture has not been import-tested in those clients. Check dates and alerts in your own calendar after importing.
Do I need an account?
No. Creating and downloading the file works in this browser without registration. The optional launch-list form is separate and receives your email, not your birthday list.
How do yearly birthdays and February 29 behave?
Every birthday uses RRULE:FREQ=YEARLY. February 29 recurs only in leap years: it does not fall back to February 28 or March 1. For a missing birth year, the file uses 1970, or 2000 for February 29, as a date placeholder; neither is an inferred birth year or age.
Which reminders can I choose?
No reminders, one day before, seven days before, or both. Only selected offsets produce VALARM blocks. Imported alarms and notification delivery depend on the calendar client and its settings; the export does not guarantee a notification.
What is included in a shared link?
Only the selected reminder offsets. Names, birthdays, the calendar name and raw input are excluded. To deliberately share the list, send the downloaded file yourself. Old list links were Base64, not encrypted, and may already have reached servers when opened. They are no longer imported; removing the query cannot undo an earlier request.
How does saving in this browser work?
Saving is off by default. Turn it on to save in localStorage on this browser profile. After reload, turn it on again to restore a saved list into an empty editor; current edits take priority. Turning it off stops future saving but leaves the previous saved copy. Clear saved list removes that copy and resets the editor, even with saving off.
Will a new import update the old one?
No. This file is a snapshot, not a subscription. Create a dedicated birthday calendar and check the first import there. For a replacement, clear only the earlier events in that dedicated calendar, then import the new file. Re-importing may create duplicates; stable UIDs are not a guarantee of client deduplication.
What happens to duplicate rows and invalid dates?
Exact duplicate rows are kept as separate events; same names with different birthdays also remain separate. Review the preview and remove accidental duplicates yourself. Invalid dates show an actionable error and block download until corrected; dates are never rolled into a different birthday.
Which input dates are accepted?
Use one name and date per line: 1990-03-15, 15.03.1990, 15 March, or March 15. A birth year is optional. Ambiguous slash dates use day/month, in both languages. Blank lines and lines starting with # are ignored. Check the preview before downloading.