GS1 Barcode Decoder
Decode GS1 barcodes to extract GTINs, batch numbers and expiry dates
Our free GS1 barcode decoder reads GS1-128 and GS1 DataMatrix content to extract GTINs, batch numbers, serial numbers and expiry dates. GS1 Application Identifiers (AIs) define each field: (01) is a GTIN, (10) a batch or lot, (17) an expiry date and (21) a serial number.
Need to decode GS1 barcodes in your app?
Copy the example below to get started using our free Barcode Parser API. No API key needed.
barcode=$'\x1d0109501101530003\x1d10ABC123\x1d17250101'
curl -sS -G https://parser.orcascan.com/ \
--data-urlencode "barcode=$barcode" \
--data-urlencode 'type=gs1'
// Node.js 18+
var barcode = "\u001d0109501101530003\u001d10ABC123\u001d17250101";
var url = "https://parser.orcascan.com/?barcode=" + encodeURIComponent(barcode) + "&type=gs1";
fetch(url)
.then(function(res) { return res.json(); })
.then(console.log);
import json
from urllib.parse import quote
from urllib.request import urlopen
barcode = "\u001d0109501101530003\u001d10ABC123\u001d17250101"
url = "https://parser.orcascan.com/?barcode=" + quote(barcode, safe="") + "&type=gs1"
with urlopen(url) as response:
print(json.load(response))
using System;
using System.Net.Http;
var barcode = "\u001d0109501101530003\u001d10ABC123\u001d17250101";
var url = "https://parser.orcascan.com/?barcode=" + Uri.EscapeDataString(barcode) + "&type=gs1";
using var client = new HttpClient();
Console.WriteLine(await client.GetStringAsync(url));
package main
import (
"io"
"net/http"
"net/url"
"os"
)
func main() {
barcode := "\u001d0109501101530003\u001d10ABC123\u001d17250101"
endpoint := "https://parser.orcascan.com/?barcode=" + url.QueryEscape(barcode) + "&type=gs1"
res, err := http.Get(endpoint)
if err != nil { panic(err) }
defer res.Body.Close()
io.Copy(os.Stdout, res.Body)
}
<?php
$barcode = "\x1d0109501101530003\x1d10ABC123\x1d17250101";
$url = "https://parser.orcascan.com/?barcode=" . rawurlencode($barcode) . "&type=gs1";
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 = "\u001d0109501101530003\u001d10ABC123\u001d17250101";
String url = "https://parser.orcascan.com/?barcode=" +
URLEncoder.encode(barcode, StandardCharsets.UTF_8) + "&type=gs1";
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 = "\u001d0109501101530003\u001d10ABC123\u001d17250101";
var url = "https://parser.orcascan.com/?barcode=" + encodeURIComponent(barcode) + "&type=gs1";
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 GS1 barcodes?
Import a spreadsheet of barcodes and automatically extract their data into separate columns.
Decode barcodes in bulk →Need to extract GS1 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 GS1 Application Identifiers (01), (10), (17) and (21) mean?
(01) introduces a 14-digit GTIN, (10) a batch or lot, (17) an expiry date in YYMMDD format and (21) a serial number. A decoder extracts only fields actually encoded. You can view the complete list of GS1 Application Identifiers and their definitions.
Are parentheses encoded in a GS1 barcode?
No. Parentheses help people read Application Identifiers in printed examples; the encoded data contains the AI digits and their values without parentheses.
Why does my decoded GS1 barcode contain ASCII 29 or GS?
Variable-length fields need a separator when another field follows. In GS1 symbols this is FNC1, which scanners often output as ASCII 29 (Group Separator). The final field may not need one.
Need help tracking GS1 barcodes?
We've helped organizations of all sizes tackle barcode challenges, chat with our team live for help to find a solution.