ICS Validator
Find out why a .ics file won't import: every error, named and located.
runs entirely in your browserDrag a .ics file anywhere onto this box, or paste the calendar text below. It never leaves your browser.
need more advanced event creation? Just Schedule Me builds calendar events for you — from a screenshot, a photo, or a line of text.
The answer to "why won't this import?"
Calendar apps are famously unhelpful when an .ics file is malformed. Google Calendar says the file could not be processed. Outlook imports nothing and explains less. Apple Calendar sometimes takes the file and silently skips half the events. None of them tell you which line is wrong.
This validator does. It reads the file against RFC 5545 (the iCalendar standard every one of those apps implements) and lists what it finds, grouped by the event it belongs to and named by the property at fault: a DTSTART that is missing or is not a date iCalendar defines, a DTEND that falls before its start, a DURATION that is not a valid ISO 8601 interval, a time zone identifier nothing can resolve.
Each finding is a sentence you can act on rather than a spec citation, because the goal is a file that imports, not a lecture about the RFC.
Every finding also comes with a plain-English explanation (what that property is actually for, what your calendar app does when it is wrong, and what to type instead), so you do not need to already know what a DTSTAMP is to fix one. And where there is a line to point at, it is shaded in the box above, darker for an error than a warning. Every row in that box is numbered, the faulty ones in colour, so a finding that says "line 13" is somewhere you can look, and clicking anywhere on the finding jumps you there.
Errors and warnings are not the same thing
An error is something that usually makes a calendar app reject the file or drop the event: no start date, an end before the start, a date it cannot read, no VCALENDAR wrapper at all. Fix these and the import generally works.
A warning is a deviation that still imports: a missing UID (apps may then de-duplicate or re-add the event on a second import), a missing DTSTAMP, an event with no title, an absent VERSION or PRODID. These are worth fixing if you are generating calendars programmatically, and safe to ignore if you just need the events in your calendar today.
The verdict at the top separates the two, so a file with only warnings is reported as importable rather than broken. Telling someone their calendar is invalid when it merely deviates from the spec sends them chasing a problem they do not have.
It reads the file the way a calendar app will
Line folding is unfolded before anything is parsed, so a long description split across rows is read as one value rather than as garbage. Escaped commas, semicolons, and newlines are decoded. Nested components inside an event are skipped rather than mistaken for its properties. Every VEVENT in the file is checked, not just the first.
Time zones get the same treatment as in the viewer: standard IANA names resolve, and so do the Windows zone names Outlook writes instead ("Eastern Standard Time", "GMT Standard Time"). A TZID that resolves to nothing is reported rather than quietly replaced with your own zone, because that substitution is exactly how an event ends up in the wrong hour.
The check runs entirely in your browser. The file is never uploaded, which matters more here than almost anywhere else: a calendar you are debugging is usually a real one, full of names, addresses, and meeting notes.
fair questions
- How do I validate an ICS file?
- Paste the .ics text into this page or drop the file onto it. The verdict and the full list of errors and warnings appear immediately, grouped by event, each with a plain-English explanation of what it means. Findings that point at a specific line are clickable, jump you to it, and shade that row in the numbered text box as you edit. Copy report puts the whole verdict on your clipboard, explanations included, for handing to whoever generated the file. Nothing is uploaded and there is no account.
- What is the difference between an error and a warning?
- Errors normally cause a calendar app to reject the file or drop the event: a missing or unreadable DTSTART, an end before the start, no VCALENDAR wrapper. Warnings still import but deviate from the standard, such as a missing UID, DTSTAMP, VERSION, or PRODID.
- Why won't my ICS file import into Google Calendar or Outlook?
- Most often a malformed DTSTART or DTEND, a missing required property, or broken line folding. Run the file through this page: each error names the event and the property to fix. Once there are no errors, the file should import.
- Does it check every event in the file?
- Yes. Every VEVENT is parsed and checked, and issues are grouped under the event they belong to, with file-level problems listed separately. Events that fail to parse are still counted rather than silently skipped.
- Does it fix the file for me?
- No. It tells you exactly what is wrong and where, and you edit the file. Automatic repair would mean rewriting your calendar, which risks dropping properties the tool does not model. To build a clean file from scratch instead, use the ICS file generator.
- Is my calendar uploaded anywhere?
- No. The file is read and checked entirely in your browser and is never sent to a server, so the validator keeps working with no connection once the page has loaded.