Title, location, date and time, time zone, repeat, invitees, alerts, and notes — then download the .ics file or open it straight in your calendar. You can also paste a schedule or attach a document or photo to make several events at once.
What is jCal, and how does it differ from an .ics file?
jCal is iCalendar written as JSON, standardised as RFC 7265 in 2014. It carries exactly the same data as an .ics file — the same properties, parameters, and components — in nested arrays rather than objects, because a component can repeat a property and the order can be significant. A calendar is ["vcalendar", [properties], [components]], each property is [name, parameters, valueType, value], so SUMMARY:Standup becomes ["summary", {}, "text", "Standup"]. It is not the same as schema.org Event in JSON-LD, which describes an event for search engines and keeps far less of it. ICS Maker writes .ics and jCal from one event model rather than converting between them, so the two cannot disagree about what the event is.
The shape
RFC 7265 maps iCalendar onto arrays rather than objects, because order and repetition matter in a calendar and JSON objects give you neither. A calendar is ["vcalendar", [properties], [components]], and each property is [name, parameters, valueType, value] — the name lowercased, the parameters an object, the type one of the RFC 5545 value types.
So SUMMARY:Standup becomes ["summary", {}, "text", "Standup"], and a zoned start becomes ["dtstart", {"tzid":"Europe/London"}, "date-time", "2026-08-15T09:00:00"]. Date-times take their ISO spelling here, not iCalendar’s compact one, and the zone moves into a parameter.
Why it is worth having
iCalendar is a text format with line folding, escaping rules, and CRLF endings, and parsing it correctly is more work than it looks. jCal hands the same semantics — zones, recurrence rules, alarms, attendees — to anything that already speaks JSON, with no parser to write. That is a different job from schema.org’s Event, which this page can also emit: JSON-LD describes an event for a search engine and flattens away most of what a calendar needs.
How this page generates it
Both formats are written from the same event, not converted from one another. A converter would inherit every escaping decision from the text form, and jCal values are explicitly unescaped — JSON does its own quoting. Writing both from one model means they cannot disagree about what the event is, only about how it is spelled.
Questions
- What is jCal?
- jCal is the JSON format for iCalendar, standardised as RFC 7265 in 2014. It represents exactly the same data as an .ics file — the same properties, parameters, and components — using nested JSON arrays, so it can be converted in either direction without losing meaning.
- Is jCal the same as JSON-LD or schema.org Event?
- No. jCal is a complete mapping of iCalendar, so it carries recurrence rules, time zones, alarms, and attendee participation status. schema.org Event in JSON-LD is a description of an event for search engines and other readers, and deliberately keeps far less. This builder emits both, from the same event.
- Why does jCal use arrays instead of objects?
- Because a calendar component can carry the same property more than once — several attendees, several exception dates — and the order can be significant. A JSON object keyed by property name could represent neither, so RFC 7265 uses positional arrays instead.
- What reads jCal?
- It is a niche format, well supported in JavaScript calendar libraries such as ical.js and available in several server-side iCalendar toolkits. Mainstream calendar applications still expect .ics, so use jCal between your own systems and hand people the .ics file.