{{ result.summaryTitle }}
{{ result.primary }}
{{ result.summaryLine }}
{{ badge.label }}
Calendar ICS Generator inputs
Use the calendar-facing name attendees should see.
{{ fieldErrors.title }}
Pick the event start date.
{{ fieldErrors.start_date }}
Use 24-hour local time for the selected timezone.
{{ fieldErrors.start_time }}
Use the same timezone the calendar event should honor.
Set the meeting length in minutes.
min
{{ fieldErrors.duration_minutes }}
Add a room, address, or video link.
Agenda, dial-in notes, owner context, or attendee prep.
Writes date-only DTSTART/DTEND fields for events without a start time.
Use 1 for a single all-day event.
day(s)
{{ fieldErrors.duration_days }}
Leave off when the importing calendar should choose its own reminders.
Most standalone invitations use Confirmed.
Use Busy for meetings and Free for FYI holds.
Optional. Use a valid email address, or leave blank.
{{ fieldErrors.organizer_email }}
{{ result.icsText || result.icsPlaceholder }}
Field Value Calendar note Copy
{{ row.field }} {{ row.value }} {{ row.note }}
Check Status Detail Copy
{{ row.check }} {{ row.status }} {{ row.detail }}
{{ jsonPayloadText }}
Customize
Advanced
:

Calendar files are easiest to trust when they behave like structured event data, not copied prose. An ICS file is a portable iCalendar text file that can carry one event from a form, schedule page, email, project note, or publishing workflow into calendar applications. People use it for one-off meetings, public event downloads, holiday files, travel reminders, office closures, webinars, and any situation where a recipient should be able to import an event instead of retyping it.

The file format is plain text, but the meaning is not loose. A calendar application reads named content lines such as SUMMARY, DTSTART, DTEND, LOCATION, DESCRIPTION, STATUS, TRANSP, and VALARM. A comma in a meeting title, a line break in an agenda, or an all-day end date can change how the import is read when those details are written casually.

iCalendar
The calendar data format behind many .ics files.
VEVENT
The event block that holds the title, timing, place, status, and optional reminder.
Floating time
A wall-clock time with no UTC marker and no named time zone attached.
Exclusive end
The end value marks the first instant or date after the event, which is especially important for all-day events.

Timing is the part most likely to surprise people. A timed event starts at a date and time, then ends after a minute duration. UTC represents a fixed instant. A named time zone keeps the local wall-clock time and asks the importing calendar to apply that zone's rules. A floating time has no zone context at all, so it is best for simple personal imports where the recipient's local calendar should decide the wall-clock meaning.

All-day events use dates rather than clock times, and their end date is exclusive. A one-day holiday that starts on September 1 ends at the start of September 2 in the file, even though the visible event occupies only September 1. This convention prevents calendars from treating the event as a timed midnight-to-midnight meeting.

Event details becoming VEVENT lines and an ICS file for calendar import.

A successful import still deserves a sanity check. Calendar applications vary in how they display organizer fields, reminders, availability blocking, and named time zones. For anything public, shared with attendees, tied to travel, or near a daylight-saving change, the safest test is to import a copy into the calendar application that recipients will actually use.

How to Use This Tool:

Start with the event information people will see, then use the generated checks to confirm the file is safe to import.

  1. Enter Event title. This becomes SUMMARY, appears in the suggested filename, and must be present before export is enabled.
  2. Choose Start date. For a timed event, add Start time in 24-hour time and keep All-day event off.
  3. Select Timezone. Use Floating local time for wall-clock imports without a zone, UTC for one fixed instant, or a named zone when the event should stay tied to that location's local time.
  4. Set Duration for timed events. For an all-day entry, turn on All-day event and set All-day length from 1 to 30 days; the start time is not used for date-only events.
  5. Add Location and Description if they should travel with the event. The generated ICS text escapes line breaks, commas, semicolons, and backslashes in text fields.
  6. Open Advanced only when needed. Choose a reminder, set Status, choose Availability, or add an optional Organizer email.
  7. Review Event Fields and Calendar Checks. If download remains disabled, fix the highlighted title, date, time, duration, all-day length, or organizer email field, then confirm Download readiness shows Pass.

Interpreting Results:

ICS file ready means the required values can produce a complete text/calendar file. ICS needs input means export is blocked until at least one validation issue is fixed. The first value to inspect is DTEND, because calendar applications read it as the actual end value, not as a note about duration.

The time mode changes what the same-looking clock value means. Floating local time has no zone marker. UTC adds a Z marker and represents an exact instant. A named zone writes a TZID value, so the importing calendar must recognize the zone and apply its own daylight-saving rules.

  • Use Event Fields to check DTSTART, DTEND, TRANSP, STATUS, VALARM, and ORGANIZER before sharing the file.
  • Use Calendar Checks to confirm escaping, line folding, reminder inclusion, organizer validity, and download readiness.
  • Do not treat a ready file as proof that every calendar application will display it identically. Import a test copy for all-day, multi-day, cross-midnight, or named-zone events.

Technical Details:

iCalendar represents an event as content lines inside a VCALENDAR object. A single-event export commonly writes one VEVENT with a generated UID, a creation timestamp, start and end timing, summary, optional location and description, status, availability, public class, optional organizer, and optional display alarm.

Timed events use date-time values. All-day events use date-only values and an exclusive end date, which means a one-day event starting on September 1 writes September 2 as DTEND. Text fields follow iCalendar text escaping so commas, semicolons, backslashes, and line breaks remain part of the event text. Long content lines are folded at the 75-octet boundary used by the format, with continuation lines beginning with a space.

Formula Core:

The end value is derived from the selected duration mode. Minute duration is used for timed events, while day duration is used for all-day events.

Etimed = Sdate-time+d minutes Eall-day = Sdate+D days reminder trigger = -m minutes before start, encoded as a duration

For example, a timed event that starts on 2026-05-20 at 14:30 and lasts 45 minutes writes an end value of 2026-05-20 at 15:15 in the selected time mode. An all-day event that starts on 2026-09-01 with a one-day length writes DTEND;VALUE=DATE:20260902, even though the visible event occupies only September 1.

Transformation Core:

Calendar ICS transformation rules
Input or setting ICS output behavior Import impact
Timed event with floating local time DTSTART and DTEND omit Z and omit TZID. The importing calendar reads the value as local wall-clock time.
Timed event with UTC DTSTART and DTEND end with Z. The event represents one fixed UTC instant.
Timed event with a named zone DTSTART;TZID=... and DTEND;TZID=... are written. The calendar application must recognize the time-zone identifier during import.
All-day event Date-only DTSTART;VALUE=DATE and DTEND;VALUE=DATE are written. The end date is exclusive, so the displayed final day is the previous date.
Reminder selected A display VALARM block is added before the event closes. Compatible calendar applications may create a reminder before the event starts.
One-day reminder selected The reminder trigger is written as a day duration rather than minutes. The reminder is requested one day before the event start.
Long content line Lines over 75 octets are folded with a leading space on continuation lines. Calendar applications unfold the line when reading the file.
Calendar ICS validation bounds
Field Accepted value Failure cue
Event title Required, 160 characters or fewer. Blank or too-long titles block export.
Start date Valid YYYY-MM-DD date. Impossible or malformed dates are rejected.
Start time Valid HH:MM time for timed events. Timed events require it; all-day events disable it.
Duration 1 to 10,080 minutes for timed events. Zero, negative, or too-large minute durations are highlighted.
All-day length 1 to 30 days for all-day events. Out-of-range day counts are highlighted.
Organizer email Blank or email-shaped value. Invalid organizer text blocks export until fixed or removed.

The generated calendar object uses a publish-style method. It can be imported or shared as an event file, but it does not send invitations, manage attendee responses, or update an event that already exists in another person's calendar.

Privacy and Accuracy Notes:

Event details are assembled in the browser for the visible ICS text, copied tables, JSON payload, and downloads. After you download or share the file, the receiving calendar application controls how the event is stored, synced, displayed, and reminded.

  • Use UTC when the event must represent the same instant for everyone.
  • Use a named zone when the event should stay attached to a place's local wall-clock time.
  • Test imports in the target calendar application when reminders, organizer display, availability blocking, or daylight-saving boundaries matter.

Worked Examples:

Launch review in a named zone. A review starts on 2026-05-20 at 14:30, uses Asia/Kuala_Lumpur, lasts 45 minutes, and has a 15-minute reminder. Event Fields should show DTSTART and DTEND with the named zone mode, VALARM should show 15 min before, and Download readiness should show Pass.

Company holiday as one all-day event. A holiday starts on 2026-09-01 with All-day event on and All-day length set to 1. The calendar entry covers one visible day, while Event Fields should show an exclusive DTEND value of 20260902.

Personal reminder with floating time. A lunch reminder at 12:30 can use Floating local time when it only needs to land on the local calendar's wall clock. Timezone mode should say Floating local time, and the generated DTSTART should not include Z or TZID.

Organizer typo blocking download. If Organizer email contains a display name without an email address, Calendar Checks marks Organizer email as needing edit and Download readiness remains blocked. Remove the value or enter a valid address, then check that the highlighted field clears.

FAQ:

What is an ICS file?

An ICS file is a text calendar file that stores event fields such as SUMMARY, DTSTART, DTEND, LOCATION, and optional reminder data for calendar import.

Why is the all-day end date one day later?

All-day DTEND is exclusive. A one-day event starts on the selected date and ends at the start of the following date.

Should I choose UTC or a named time zone?

Choose UTC for one exact instant across zones. Choose a named zone when the event should follow a place's wall-clock time, such as a local meeting or venue schedule.

Does the file send invitations?

No. The generated file uses a publish-style calendar event for import or sharing. It does not send email invitations, collect RSVP responses, or update attendee calendars by itself.

Why is download disabled?

Fix the highlighted fields first. A missing title, invalid date, invalid time, out-of-range duration, invalid all-day length, or invalid organizer email can block the .ics download.

Glossary:

ICS
A common filename extension for iCalendar event files.
iCalendar
The text-based calendar data format used by many calendar applications.
VEVENT
The event component inside an iCalendar file.
DTSTART
The field that stores the event start date or date-time.
DTEND
The exclusive end date or date-time that calendar applications use for the event.
TZID
A time-zone identifier attached to local date-time fields.
VALARM
An optional alarm component that can create a display reminder.
TRANSP
The field that tells compatible calendar applications whether the event blocks availability.

References: