Parse or generate an iCalendar event

Parse an RFC 5545 VEVENT or generate one interoperable UTC or all-day ICS event.

freeworks offlinenothing uploaded
TooliCal Parser
Input
Output
Put this on your own site

The frame below runs the same code as this page, in the reader's own browser. Nothing is sent to us, and nothing is sent to you.

Pick a dark background and the text and panels follow it, so the frame stays readable on a dark page.

Preview

How it works

Parsing unfolds continuation lines, separates property parameters, unescapes text, and distinguishes UTC, DATE, and TZID-labelled local values. Generation writes a VCALENDAR 2.0 wrapper with CRLF endings, escaped text, and content lines folded at 75 UTF-8 octets.

  • Parse mode is the default for pasted calendar data; generation requires UID, summary, start, and end so identity and date semantics are not invented.

Worked example

Read a folded RFC 5545 event
Unfold the summary and distinguish UTC date-time values
Input
											Mode: parse
Input: BEGIN:VCALENDAR
VERSION:2.0
BEGIN:VEVENT
SUMMARY:Team 
 standup
DTSTART:20250315T090000Z
DTEND:20250315T091500Z
LOCATION:Zoom
END:VEVENT
END:VCALENDAR
										
Output
												Found 1 event(s)

Title: Team standup
Start: 2025-03-15T09:00:00Z
End: 2025-03-15T09:15:00Z
Location: Zoom

											

When to use this

Calendar-export inspection, downloadable booking events, and scheduling integrations distinguish UTC timestamps from all-day dates.

Edge cases

  • A folded SUMMARY line is joined before its value is read.
  • A comma or semicolon inside DESCRIPTION is unescaped as text instead of treated as structural punctuation.
  • A local date-time with TZID is preserved as local rather than silently relabelled UTC.

References