iCalendar QR Code Decoder

Extract calendar events, meeting dates and times from QR codes

iCal

Our free iCalendar QR code decoder reads event data encoded as iCalendar text, including titles, dates, start and end times, and locations when provided. Calendar events use VEVENT blocks, with fields such as SUMMARY, DTSTART and DTEND. A trailing Z on a date-time means it is expressed in UTC.

Need to decode iCal barcodes in your app?

Copy the example below to get started using our free Barcode Parser API. No API key needed.

cURL Node.js Python C# Go PHP Java HTML
barcode=$'BEGIN:VEVENT\x0aSUMMARY:Meeting\x0aDTSTART:20260417T120000Z\x0aDTEND:20260417T130000Z\x0aEND:VEVENT'
curl -sS -G https://parser.orcascan.com/ \
    --data-urlencode "barcode=$barcode" \
    --data-urlencode 'type=ical'
// Node.js 18+
var barcode = "BEGIN:VEVENT\nSUMMARY:Meeting\nDTSTART:20260417T120000Z\nDTEND:20260417T130000Z\nEND:VEVENT";
var url = "https://parser.orcascan.com/?barcode=" + encodeURIComponent(barcode) + "&type=ical";

fetch(url)
    .then(function(res) { return res.json(); })
    .then(console.log);
import json
from urllib.parse import quote
from urllib.request import urlopen

barcode = "BEGIN:VEVENT\nSUMMARY:Meeting\nDTSTART:20260417T120000Z\nDTEND:20260417T130000Z\nEND:VEVENT"
url = "https://parser.orcascan.com/?barcode=" + quote(barcode, safe="") + "&type=ical"

with urlopen(url) as response:
    print(json.load(response))
using System;
using System.Net.Http;

var barcode = "BEGIN:VEVENT\nSUMMARY:Meeting\nDTSTART:20260417T120000Z\nDTEND:20260417T130000Z\nEND:VEVENT";
var url = "https://parser.orcascan.com/?barcode=" + Uri.EscapeDataString(barcode) + "&type=ical";

using var client = new HttpClient();
Console.WriteLine(await client.GetStringAsync(url));
package main

import (
    "io"
    "net/http"
    "net/url"
    "os"
)

func main() {
    barcode := "BEGIN:VEVENT\nSUMMARY:Meeting\nDTSTART:20260417T120000Z\nDTEND:20260417T130000Z\nEND:VEVENT"
    endpoint := "https://parser.orcascan.com/?barcode=" + url.QueryEscape(barcode) + "&type=ical"
    res, err := http.Get(endpoint)
    if err != nil { panic(err) }
    defer res.Body.Close()
    io.Copy(os.Stdout, res.Body)
}
<?php
$barcode = "BEGIN:VEVENT\x0aSUMMARY:Meeting\x0aDTSTART:20260417T120000Z\x0aDTEND:20260417T130000Z\x0aEND:VEVENT";
$url = "https://parser.orcascan.com/?barcode=" . rawurlencode($barcode) . "&type=ical";

echo file_get_contents($url);
import java.net.URI;
import java.net.URLEncoder;
import java.net.http.*;
import java.nio.charset.StandardCharsets;

class BarcodeParser {
    public static void main(String[] args) throws Exception {
        String barcode = "BEGIN:VEVENT\nSUMMARY:Meeting\nDTSTART:20260417T120000Z\nDTEND:20260417T130000Z\nEND:VEVENT";
        String url = "https://parser.orcascan.com/?barcode=" +
            URLEncoder.encode(barcode, StandardCharsets.UTF_8) + "&type=ical";
        var request = HttpRequest.newBuilder(URI.create(url)).build();
        var response = HttpClient.newHttpClient().send(
            request, HttpResponse.BodyHandlers.ofString());
        System.out.println(response.body());
    }
}
<!doctype html>
<html>
<body>
<pre id="result">Loading...</pre>
<script>
var barcode = "BEGIN:VEVENT\nSUMMARY:Meeting\nDTSTART:20260417T120000Z\nDTEND:20260417T130000Z\nEND:VEVENT";
var url = "https://parser.orcascan.com/?barcode=" + encodeURIComponent(barcode) + "&type=ical";
fetch(url)
    .then(function(res) { return res.json(); })
    .then(function(json) {
        document.getElementById("result").textContent = JSON.stringify(json, null, 2);
    });
</script>
</body>
</html>

Need to decode lots of iCal barcodes?

Import a spreadsheet of barcodes and automatically extract their data into separate columns.

Decode barcodes in bulk →

Need to extract iCal data as you scan?

Scan barcodes with your phone and automatically capture their data in a shared spreadsheet.

Scan with your phone →

Frequently asked questions

What do DTSTART, DTEND and SUMMARY mean in iCalendar data?

DTSTART specifies the event start, DTEND its end when present, and SUMMARY its title. These properties appear in a VEVENT component.

What does Z mean at the end of an iCalendar date-time?

A trailing Z marks a UTC date-time, for example 20261102T100000Z. Other times may be floating or use a TZID time-zone reference.

Why does an iCalendar event span multiple text lines?

iCalendar content lines may be folded for transport. A parser unfolds continuation lines before interpreting properties such as DESCRIPTION and LOCATION.

Need help tracking iCal barcodes?

We've helped organizations of all sizes tackle barcode challenges, chat with our team live for help to find a solution.