iCalendar (.ics) Validator
Pricing
from $3.00 / 1,000 calendar results
iCalendar (.ics) Validator
Validate .ics calendar files and feeds against RFC 5545: line endings and folding, required properties, nesting, dates, DTEND vs DTSTART, duplicate UIDs and TEXT escaping, with line numbers. See README.
Pricing
from $3.00 / 1,000 calendar results
Rating
0.0
(0)
Developer
LandlordTools
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
9 hours ago
Last modified
Categories
Share
Validate calendar files and feeds against the iCalendar standard, RFC 5545 1, before you publish them or send them to customers. Paste one file, or give up to 50 public URLs (http, https or webcal). You get one dataset row per calendar: whether it is valid, and every error and warning with its line number.
Calendar apps are forgiving in different ways, so a feed that works in one app can fail silently in another. This Actor flags the problems that usually cause that.
What it checks
Errors (the standard says MUST):
- line breaks that aren't CRLF
- unbalanced or mismatched BEGIN/END, or a first component that isn't VCALENDAR
- missing VERSION:2.0 or PRODID
- events or to-dos without UID or DTSTAMP, and events without DTSTART (unless the calendar has a METHOD)
- invalid or impossible dates and times, TZID together with a UTC "Z" time, and dates mixed with date-times
- DTEND or DUE before DTSTART, DTEND together with DURATION, and badly formed durations
- alarms without ACTION or TRIGGER, and DISPLAY or EMAIL alarms without a DESCRIPTION
- properties that appear more than once where only one is allowed
Warnings (the standard says SHOULD, or it's a likely mistake):
- lines over 75 octets that aren't folded
- unescaped
;or,and undefined escapes in TEXT values - duplicate UIDs
- an all-day event whose DTEND is the same day (DTEND is exclusive)
- events without a SUMMARY
- a byte-order mark, blank lines, and feeds not served as
text/calendar
Input
{"icsText": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Example//EN\r\nBEGIN:VEVENT\r\nUID:1@example.com\r\nDTSTAMP:20261003T000000Z\r\nDTSTART;VALUE=DATE:20261215\r\nDTEND;VALUE=DATE:20261215\r\nSUMMARY:Registration opens; West Midlands\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n"}
icsText: optional, the contents of one .ics file, up to 5 MB.urls: optional, up to 50 calendar URLs. Each is fetched once, up to 5 MB. Only http, https and webcal URLs are fetched (webcal is fetched over https).
Example output
{"source": "icsText","valid": true,"errorCount": 0,"warningCount": 2,"warnings": [{"line": 8,"message": "All-day event ends on the day it starts; DTEND is exclusive, so it should be the next day."},{"line": 9,"message": "SUMMARY has an unescaped \";\" or \",\"; in TEXT values these should be written as \"\\;\" and \"\\,\"."}]}
Each row also has stats (events, to-dos, alarms and time zones) and errors, capped at the first 200 errors and 200 warnings (truncated says if more were found). A URL that can't be fetched gives a row with fetchError.
Limits
This checks structure and the common rules, not every property's value grammar. Recurrence rules (RRULE) and time-zone definitions are not expanded. Calendars can contain personal data (attendees, locations); the Actor doesn't store calendar contents beyond the error messages, which quote at most a date, duration, version or content-type value, never names, addresses or UIDs.
Integrations
Ready-made files in integrations/README.md: a Microsoft Power Platform custom connector (Power Automate, Power Apps, Logic Apps, Copilot Studio), OpenAPI 3 (Azure API Management, Postman, n8n, AI agents), an Excel / Power BI Power Query script, a Google Sheets function, and curl, Python and JavaScript examples. Apify's own Zapier, Make and n8n apps and its MCP server work too.
Pricing
Pay per event: $3 per 1,000 results, plus Apify's tiny per-run start fee ($0.00005). See the Pricing tab for the current price.
Local use
With Node.js 22 or later, run node cli.js examples/input.json, or npm test. The tests also validate every .ics file the landlorddeadlines.co.uk build produces, when site/dist is present.
Sources
- RFC 5545: Internet Calendaring and Scheduling Core Object Specification (iCalendar). Accessed 3 October 2026.