There are a several iCalendar validators available on the web, so why did we develop this one?  First, we wanted to develop a fresh-looking application using modern web technologies that rivaled HTML validators available on the web. We also wanted to validate against the latest iCalendar specification, RFC 5545, and to leverage our iCalendar parsing code from the open source program, Zap Calendar.  We believe we have achieved these goals and feel we have the best iCalendar validator available today on the web.  Some of the features in our validator include:

  • Validate by URL, file or text snippet,
  • Support for permalinks to post validations in e-mails and web posts
  • Link to line number in the source file where the error or warning occurred
  • Link to the referring specification section concerning the error or warning
  • JSON support for processing errors and warnings by other programs

This site includes the iCalendar specification formatted in HTML and subdivided into separate article sections.  This allows us to link to the appropriate section with the referring error or warning, a feature unique to our validator.

It is recommended that more than one validator be used when testing iCalendar feeds, since validators vary in what iCalendar specifications are validated.  Also, an error in an iCalendar feed does not necessarily indicate the feed will not work.  Many parsers are forgiving with some errors, but to eliminate the errors in a feed will provide compatibility with more iCalendar readers.

You can access the validator at

We welcome your feedback! Let us know if you have a problem or question with the validator tool as well as any comments or suggestions.  Send us a message using the Contact Us link.

Version History

March 2024

Fixed bug when looking at iCalendar feed's "Content-Type". Some feeds would show content-type of "" instead of actual content type.

February 2024

"agent_type" is now sent when validating by URL and checking for the MIME content type

February 2024

Added check for lines that don't include a colon (":")
Fixed an error that occurred in the validation when a bad time was entered within a date-time field

January 2024

Added check for missing END:VCALENDAR and other END: components at end of file (i.e. END:VEVENT).

April 2023

Added check that DTEND is not earlier than DTSTART
Added check for additional duplicate properties
Fixed issue with duplicate UID check, now recognizes duplicates when using RECURRENCE-ID

February 2020

Added check for valid date and time values
Added check for DQUOTE in property parameters

August 2018

Misc. bug fixes

August 2018

Misc. bug fixes

July 2018

Added check to verify DTEND date does not occur before DTSTART date
Added check to verify DTSTART and DTEND have the same value types (can't mix date and date-time types)
Added warning for domain names in UID property as per RFC 7986 specification
Fixed bug when checking TZID in DTSTART or DTEND against TZID defined in VTIMEZONE

April 2018

Security fix

April 2018

Added check for deprecated features as described in Appendix A.3.
Modified check for UID uniquess added in version 1.8 to not check for uniqueness if RECURRENCE-ID item is present.
Added syntax check for RECUR property

December 2017

Added check for UID uniqueness
Validator now ignores byte order mark at the beginning of the file (can appear in some iCalendar URLs)
Validator now checks specifically for iCalendar version number 2.0 and generates a warning if not at that level
Removed beta designation

1.7 Beta
November, 2016

Added JSON permalink option to format errors and warnings in JSON format for processing by other programs.
Misc. bug fixes

1.6 Beta
September, 2016

Misc. bug fixes

1.5 Beta
September, 2016

Click to line # now works when permalink had warnings or errors
White space at end of "BEGIN" and "END" lines no longer causing mismatch errors.
MIME media type is now a case-insensative check.

1.4 Beta
July, 2016

Added time zone check against DTSTART and DTEND values that are specified in UTC
Added RECURRENCE-ID time zone checks
Fixed bad permalinks when "&" items were in URL

1.3 Beta
January, 2016

Added a permalink to the validation results page when validating a URL
Validator now checks for the proper MIME type (text/calendar) when validating an icalendar URL
Improved checking of VTIMEZONE parameters

1.2 Beta
November, 2015

RRULE check now performs a complete check of all parameters
TZID in DTSTART, DTEND and EXDATE is checked if it exists in VTIMEZONE items
Added line count and file size info

1.1 Beta
October, 2015

Fixed issue with date-time check when date-time ended with "Z"
Fixed VFREEBUSY check
STATUS check now works with VTODO and VJOURNAL elements

1.0 Beta
October, 2015

Added checks for valid data in TRANSP, DTSTART, DTEND, DTSTAMP, STATUS and RRULE items (RRULE check does a partial check of RRULE options in this release)
Increased file size maximum from 256KB to 512KB

0.4 Beta
September, 2015

Added property checks for VALARM elements

0.3 Beta
July, 2015

Added totals for events, time zones, journals, to-do's and free/busy items.

0.2 Beta
July, 2015

Misc. fixes

0.1 Beta
June, 2015

Initial version