How to validate an ICS or iCalendar file and read the results
If you searched for “ICS validator” or “validate ICS”, you’re usually trying to do one of these:
- figure out why an
.icsfile won’t import into Google Calendar / Outlook / Apple Calendar - fix “invalid iCalendar / invalid ICS file” errors
- stop events from showing at the wrong time (TZID/VTIMEZONE issues)
Use the free CorrectICS validator to understand what the product checks, then validate your ICS file. When supported issues can be repaired safely, CorrectICS verifies the improved file before offering a download.
What an ICS validator checks (in plain language)
An ICS validator typically checks:
- Structure:
BEGIN:VCALENDAR…END:VCALENDAR, andBEGIN:VEVENT…END:VEVENT - Required fields:
DTSTART,UID,VERSION,PRODID(and more, depending on the client) - Time zones: valid
TZIDvalues and whether a matchingVTIMEZONEis present when needed - Formatting: line folding, invalid characters, broken encodings
If your symptom is “imports fail”, start here:
If your symptom is “events at the wrong time”, start here:
If you’re seeing “validation failed / invalid ICS file” messages:
Quick workflow (what actually works)
- Open the ICS validation tool.
- Upload your
.icsand read the first error. - Fix that error manually, or try safe repair when CorrectICS reports that supported repair is available.
- Re-validate and repeat until the file imports.
The most common “validate ICS” failures
1) Missing required fields
The usual culprits are missing DTSTART, missing UID, or malformed VERSION.
2) Timezone problems (TZID/VTIMEZONE)
Wrong-time imports are commonly caused by:
- invalid timezones like
TZID=EST(useAmerica/New_York) - missing or mismatched
VTIMEZONEblocks (Outlook is especially sensitive)
Deep dive:
- Fix ICS time zone errors (TZID/VTIMEZONE)
- TZID=EST is invalid in ICS (use America/New_York)
- Outlook missing VTIMEZONE in ICS
3) Broken wrappers or malformed lines
One missing END:VEVENT can cause some clients to stop parsing entirely.
Developer note: validate in CI
If you generate .ics files, treat the output like an API response: validate it before shipping.
- Generate correct ICS files (best practices + templates)
- Validate & fix programmatically (Node, Python, Bash)
Validate your .ics file and see what can be repaired
Review the diagnostics first. When supported issues can be repaired safely, CorrectICS verifies the improved file before offering a download.