{{ summaryHeading }}{{ summaryValue }}{{ summaryLine }}

{{ summaryAnnouncement }}
Calendar event details
Use the calendar-facing name recipients should recognize.
{{ issueFor('title') }}
Choose all-day for holidays, closures, or date-only events.
The event begins on this date.
{{ issueFor('start_date') }}
Use 24-hour time.
{{ issueFor('start_time') }}
Named zones need a test import in the target calendar, especially near daylight-saving changes.
Use 1 to 10,080 minutes.
min
{{ issueFor('duration_minutes') }}
Use 1 to 30 calendar days.
days
{{ issueFor('duration_days') }}
Leave blank when the event has no shared location.
Add agenda, access, or preparation notes that should travel with the event.
Calendar applications may apply their own reminder policies after import.
Confirmed is the neutral default for a normal published event.
Busy is the normal default for meetings; Free fits informational holds.
Leave blank or enter one email address.
{{ issueFor('organizer_email') }}
{{ values.ics_text }}
{{ exportAnnouncement }}

Import checks

{{ row.label }}

{{ row.status }}{{ row.detail }}

{{ row.action }}

PropertyValueImport noteCopy
{{ row.property }}{{ row.value }}{{ row.note }}

Introduction:

A date copied from a web page still leaves work for the reader: choose the right calendar, retype the time, interpret the time zone, and avoid an off-by-one-day mistake. An iCalendar file packages that information as structured event data that calendar applications can import.

Files with the .ics extension usually contain iCalendar content. A VEVENT block carries the event title, start, end, place, description, status, availability, organizer, and optional alarm. Each property follows format rules, so punctuation and line breaks cannot always be copied into the file unchanged.

UTC time
A fixed instant marked with Z. Recipients see the corresponding local time in their calendar.
Named time zone
A wall-clock time tagged with an identifier such as Europe/London.
Floating time
A wall-clock time with no zone marker. The importing calendar supplies the context.
All-day date
A date-only value whose end boundary is non-inclusive.

The time basis changes what an import means. UTC is suitable when everyone should refer to one instant. A named zone expresses a local civil time, but correct daylight-saving interpretation depends on the importer recognizing the identifier and its rules. Floating time is useful only when the same clock reading should apply in the recipient's current calendar context.

All-day events need special care because the end date is the first day after the event. A one-day closure on September 1 starts on September 1 and ends on September 2 in the file. A three-day event starting September 1 ends on September 4. Treating the visible last day as DTEND shortens the event by one day.

An ICS file can request a reminder and can name an organizer, but importing it does not send an invitation or create an RSVP workflow. Calendar applications may also apply their own policies to alarms, availability, unknown time zones, and duplicate event identifiers. Testing the downloaded file in the intended application remains part of publication.

How to Use This Tool:

Choose the event's time meaning first; optional details come after the boundary is correct.

  1. Enter the Event title and choose Timed event or All-day event.
  2. Set the start date and duration. Timed events also need a start time and minute duration; all-day events use a day count.
  3. Choose Time basis for a timed event. Use UTC for a fixed instant, a named zone for a specific civil time, or floating time only when importer-local interpretation is intended.
  4. Add location, description, reminder, status, availability, and organizer only when they belong in the imported event. An organizer address identifies an owner but does not send mail.
  5. Review the start, end, and Time basis entries in the event ledger, download the calendar file, and test-import it into the target calendar before distributing it.

Interpreting Results:

The displayed event window is the first check. For an all-day event, confirm that the visible last day is one day before the encoded end date. For a timed event, confirm that the start plus duration produces the intended end and does not cross midnight unexpectedly.

A Review result asks for an import test rather than declaring the file invalid. Floating and named-zone times depend on importer context; alarms may be ignored or changed; an organizer property does not create meeting delivery. The generated file is ready only when the target calendar shows the intended time, duration, availability, and reminder.

Technical Details:

The generated calendar contains one VEVENT inside a VCALENDAR envelope. Timing is derived before the event properties are serialized, which keeps the displayed window and encoded start and end values on the same rule path.

Formula Core:

A timed event adds a duration in minutes to the selected start. An all-day event adds a duration in days and stores that exclusive boundary as the end date.

tend = tstart+d minutes Dend = Dstart+n days

Timed duration ranges from 1 to 10,080 minutes. All-day duration ranges from 1 to 30 days. Date addition follows Gregorian month lengths and leap-year rules; minute addition carries into following dates when necessary.

Transformation Core:

iCalendar timing and serialization rules
Input meaning Generated form Review point
All-day DTSTART;VALUE=DATE and non-inclusive DTEND;VALUE=DATE No time-zone marker is attached.
Floating Local date-time without Z or TZID The importer supplies the time context.
UTC Date-time ending in Z The instant is fixed across zones.
Named zone DTSTART;TZID=… and DTEND;TZID=… No embedded VTIMEZONE definition is added.

Backslashes, commas, semicolons, and line breaks are escaped in iCalendar text values. Content lines use CRLF endings and are folded at 75 UTF-8 octets; continuation lines begin with one space and allow 74 additional octets after that prefix.

The event identifier is derived from the normalized title, start, and end, making it stable for the same event window. Generation time supplies DTSTAMP. Optional reminders become a display alarm with a negative duration such as -PT15M or -P1D. Status accepts confirmed, tentative, or cancelled; availability becomes opaque for busy time or transparent for available time.

Titles allow up to 160 characters, locations 240, descriptions 4,000, and an optional organizer must resemble one email address. Supported reminder leads are 5, 10, 15, 30, or 60 minutes and one day.

Privacy and Accuracy Notes:

Event data is assembled in the browser and is not sent to a calendar-generation service. The downloaded file may contain locations, meeting links, descriptions, and organizer addresses, so review it before sharing. Named-zone events rely on the importing calendar's zone database because the file does not embed VTIMEZONE; test dates near daylight-saving changes especially carefully.

References: