Check whether a calendar file is actually valid
Drop in a .ics file and see exactly what's wrong with it, line by line, in plain language instead of a parser error code. Nothing is uploaded. Everything runs in your browser.
What this checks for
Structure
The file wraps everything in a matched BEGIN:VCALENDAR / END:VCALENDAR block, every other BEGIN has a matching END, and each line follows the NAME:VALUE format the format requires.
Required fields
Every event has a UID and a DTSTART, and the calendar itself declares a VERSION and PRODID, all of which the spec requires even though some apps tolerate their absence.
Dates that don't add up
An end time that falls before its own start time, or a recurrence rule with an UNTIL date earlier than the event's first occurrence.
Timezone references
A TZID that isn't a standard zone name and isn't defined anywhere in the file with a VTIMEZONE block, a common cause of events showing up hours off.
Duplicate or orphaned events
Two events sharing the same UID, or a RECURRENCE-ID override that doesn't correspond to any actual recurring event in the file.
Unsupported recurrence patterns
An RRULE using a frequency outside DAILY, WEEKLY, MONTHLY, or YEARLY, which some calendar apps won't expand the way you'd expect.
Fixing what it finds
This tool points out problems, it doesn't rewrite the file for you. If it flags something you can't fix by hand in a text editor, exporting the calendar again from the original app (Google Calendar, Outlook, Apple Calendar) usually produces a cleaner file than trying to patch one that was exported incorrectly the first time.
Need the file converted to a spreadsheet instead of just checked? Try the ICS to CSV converter, which handles recurring events and timezones the same way this validator checks for them.