Sign Up for Free

RunKit +

Try any Node.js package right in your browser

This is a playground to test code. It runs a full Node.js environment and already has all of npm’s 1,000,000+ packages pre-installed, including ical with all npm packages installed. Try it out:

var ical = require("ical")

This service is provided by RunKit and is not affiliated with npm, Inc or the package authors.

ical v0.8.0

A tolerant, minimal icalendar parser


(Formerly node-ical)

Build Status

A tolerant, minimal icalendar parser for javascript/node (

Install - Node.js

ical.js is availble on npm:

npm install ical



Parses a string with an ICS File

var data = ical.parseFile(filename)

Example 1 - Print list of upcoming node conferences (see example.js)

'use strict';

const ical = require('ical');
const months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];

const data = ical.parseICS('content from ical file');

for (let k in data) {
    if (data.hasOwnProperty(k)) {
        var ev = data[k];
        if (data[k].type == 'VEVENT') {
            console.log(`${ev.summary} is in ${ev.location} on the ${ev.start.getDate()} of ${months[ev.start.getMonth()]} at ${ev.start.toLocaleTimeString('en-GB')}`);


Recurrences and Exceptions

Calendar events with recurrence rules can be significantly more complicated to handle correctly. There are three parts to handling them:

  1. rrule - the recurrence rule specifying the pattern of recurring dates and times for the event.
  2. recurrences - an optional array of event data that can override specific occurrences of the event.
  3. exdate - an optional array of dates that should be excluded from the recurrence pattern.

See example_rrule.js for an example of handling recurring calendar events.


RunKit is a free, in-browser JavaScript dev environment for prototyping Node.js code, with every npm package installed. Sign up to share your code.
Sign Up for Free