iCalendar (.ics) Validator avatar

iCalendar (.ics) Validator

Pricing

from $3.00 / 1,000 calendar results

Go to Apify Store
iCalendar (.ics) Validator

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

LandlordTools

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

9 hours ago

Last modified

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

  1. RFC 5545: Internet Calendaring and Scheduling Core Object Specification (iCalendar). Accessed 3 October 2026.