ISBT 128 Barcode Decoder

Extract donation identifiers and blood product information from ISBT 128 barcodes

ISBT

Our free ISBT 128 barcode decoder interprets identifiers used for blood, tissue and other medical products of human origin. It can extract Donation Identification Numbers (DINs), product codes and encoded dates from supported ISBT 128 data structures, helping distinguish a donation from the specific product derived from it.

Need to decode ISBT 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=$'=/A9999XYZ100T0944=,000025=A99971312345600=>014032=}013032&,1000000000000XYZ123'
curl -sS -G https://parser.orcascan.com/ \
    --data-urlencode "barcode=$barcode" \
    --data-urlencode 'type=isbt'
// Node.js 18+
var barcode = "=/A9999XYZ100T0944=,000025=A99971312345600=>014032=}013032&,1000000000000XYZ123";
var url = "https://parser.orcascan.com/?barcode=" + encodeURIComponent(barcode) + "&type=isbt";

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

barcode = "=/A9999XYZ100T0944=,000025=A99971312345600=>014032=}013032&,1000000000000XYZ123"
url = "https://parser.orcascan.com/?barcode=" + quote(barcode, safe="") + "&type=isbt"

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

var barcode = "=/A9999XYZ100T0944=,000025=A99971312345600=>014032=}013032&,1000000000000XYZ123";
var url = "https://parser.orcascan.com/?barcode=" + Uri.EscapeDataString(barcode) + "&type=isbt";

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

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

func main() {
    barcode := "=/A9999XYZ100T0944=,000025=A99971312345600=>014032=}013032&,1000000000000XYZ123"
    endpoint := "https://parser.orcascan.com/?barcode=" + url.QueryEscape(barcode) + "&type=isbt"
    res, err := http.Get(endpoint)
    if err != nil { panic(err) }
    defer res.Body.Close()
    io.Copy(os.Stdout, res.Body)
}
<?php
$barcode = "=/A9999XYZ100T0944=,000025=A99971312345600=>014032=}013032&,1000000000000XYZ123";
$url = "https://parser.orcascan.com/?barcode=" . rawurlencode($barcode) . "&type=isbt";

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 = "=/A9999XYZ100T0944=,000025=A99971312345600=>014032=}013032&,1000000000000XYZ123";
        String url = "https://parser.orcascan.com/?barcode=" +
            URLEncoder.encode(barcode, StandardCharsets.UTF_8) + "&type=isbt";
        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 = "=/A9999XYZ100T0944=,000025=A99971312345600=>014032=}013032&,1000000000000XYZ123";
var url = "https://parser.orcascan.com/?barcode=" + encodeURIComponent(barcode) + "&type=isbt";
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 ISBT barcodes?

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

Decode barcodes in bulk →

Need to extract ISBT 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 does an ISBT 128 data identifier mean?

An ISBT 128 data identifier is a two- or three-character prefix that tells the decoder which data structure follows and how to interpret its characters.

Why do ISBT 128 barcode values begin with = or &?

ISBT 128 reserves identifiers beginning with = or & to distinguish its data structures, such as donation identifiers and product codes, from other barcode data.

Is ISBT 128 the same encoding as GS1-128?

No. Both can be carried in Code 128 symbols, but ISBT 128 uses its own data identifiers and field rules; GS1-128 uses GS1 Application Identifiers.

Need help tracking ISBT barcodes?

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