iCalendar Event Generator
Generate a basic .ics calendar event.
Overview
The iCalendar event generator builds a single .ics file from a short form: title, start time, end time, location, and description. Send it as an email attachment or host it as a downloadable link and any modern calendar client — Apple Calendar, Outlook, Google Calendar, Thunderbird — will offer to add the event with one click.
Event organisers running webinars, small business owners confirming appointments, and freelancers handing clients calendar attachments reach for this when one-click "add to calendar" is more reliable than a typed-out time. Long-tail searches that lead here include "create .ics file online", "generate iCalendar event", and "make calendar invite attachment".
How it works
The output conforms to RFC 5545 (iCalendar). The file opens with a BEGIN:VCALENDAR envelope that names the producer (PRODID) and declares the spec version (VERSION:2.0), then contains a single VEVENT block with the event-level properties: SUMMARY (title), DTSTART and DTEND (timestamps), LOCATION, DESCRIPTION, and a stable UID.
Timestamps are emitted in the YYYYMMDDTHHMMSSZ UTC form so clients in any timezone resolve them correctly. The UID is generated deterministically from the event content so the same input produces the same UID, which means a recipient who imports twice gets one event rather than a duplicate. Long descriptions are line-folded at 75 octets as the spec requires.
Examples
- Send a meeting invite via email as a
.icsattachment that recipients can accept in one click. - Generate an "add to calendar" download link for a conference website.
- Create a reminder for a recurring monthly bill payment.
- Produce an event file with a video-meeting URL in the location field.
FAQ
Will recipients see this as a true invitation?
A bare .ics adds the event to a calendar but does not solicit an RSVP. For true invitations with accept/decline tracking, send through a mail server that adds ATTENDEE and ORGANIZER properties.
How do I create an all-day event?
Provide a date without a time component. The output uses the VALUE=DATE form rather than a UTC timestamp, which all modern clients interpret as an all-day event.
Does it support recurring events?
The generator focuses on single events. For recurrence, hand-edit the RRULE line afterwards or build a CSV of individual occurrences and bulk-convert.
Why does the timestamp end in Z?
The trailing Z denotes UTC. Calendar clients localise the display, so a UTC event shows up correctly in the viewer's own timezone.
Can I include emoji or accented characters?
Yes. The file is emitted in UTF-8 and modern clients render Unicode in SUMMARY and DESCRIPTION correctly.