> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sparklane.com/llms.txt
> Use this file to discover all available pages before exploring further.

# GS1 Application Identifiers

> Every GS1 Application Identifier (AI): what it means, its format and length, and whether it needs a separator, generated from GS1's own syntax dictionary.

export const type_0 = "gs1-128"

A GS1 Application Identifier (AI) is a short number, 2 to 4 digits, that says what the data after it means. `(01)` introduces a GTIN, `(17)` an expiry date, `(10)` a batch number. AIs let one barcode carry several pieces of data.

They're used in [GS1-128](/reference/barcode-types/gs1-128), GS1 DataMatrix, GS1 QR Code, [GS1 DataBar Expanded](/reference/barcode-types/gs1-databar), and, written as part of a web address, in [GS1 Digital Link](/sdk/gs1/digital-link).

<CardGroup cols={2}>
  <Card title="Decode one" icon="magnifying-glass" href={`/tools/barcode-anatomy?type=${type_0}`}>
    Scan or paste a barcode and see every part of it.
  </Card>

  <Card title="Make one" icon="wand-magic-sparkles" href={`/tools/generator?type=${type_0}`}>
    Generate a valid barcode from fields.
  </Card>
</CardGroup>

## The most common AIs

| AI | What it is | Format |
| - | - | - |
| `00` | SSCC: identifies one pallet or parcel | 18 digits with a check digit |
| `01` | GTIN: identifies the product | 14 digits with a check digit |
| `02` | GTIN of the products inside a logistics unit | 14 digits with a check digit |
| `10` | Batch or lot number | Up to 20 characters |
| `11` | Production date | YYMMDD |
| `15` | Best before date | YYMMDD |
| `17` | Expiry date | YYMMDD |
| `21` | Serial number | Up to 20 characters |
| `30` | Count of items, when it varies | Up to 8 digits |
| `37` | Count of trade items in a logistics unit | Up to 8 digits |
| `3103` | Net weight in kilograms, 3 decimal places | 6 digits |
| `392n` | Price to pay, n decimal places | Up to 15 digits |

## How to read an AI

### Fixed and variable length

Some AIs always have the same length: `(01)` is always followed by 14 digits, `(17)` by 6. Others vary: `(10)` can be 1 to 20 characters.

When a variable-length field is followed by another field, the barcode ends it with a separator: the special character FNC1, which scanners send as GS (ASCII 29). The last field never needs one. The "Separator after it" column below says which AIs need it.

### Decimal places in the last digit

For measures, prices and amounts, the AI's fourth digit says where the decimal point goes. `3100` to `3105` are all net weight in kilograms: `(3103)001250` is 1.250 kg, and `(3102)001250` is 12.50 kg.

### Dates

Dates are 6 digits, YYMMDD, with no century. GS1 defines how to work out the century from the current date. Some date AIs allow the day to be `00`, meaning the end of the month.

### Data titles

The data title is GS1's short name for each AI, such as `BATCH/LOT` or `USE BY or EXPIRY`. Some labels print it next to the human-readable value.

## All AIs

Generated from the GS1 Barcode Syntax Dictionary, release 2026-01-27. 224 entries.

### 0: Identification keys

| AI | Data title | Format | Separator after it |
| - | - | - | - |
| `00` | SSCC | 18 digits with a check digit | Not needed |
| `01` | GTIN | 14 digits with a check digit | Not needed |
| `02` | CONTENT | 14 digits with a check digit | Not needed |
| `03` | MTO GTIN | 14 digits with a check digit | Not needed |

### 1: Batch and dates

| AI | Data title | Format | Separator after it |
| - | - | - | - |
| `10` | BATCH/LOT | Up to 20 characters | If not last |
| `11` | PROD DATE | 6 digits: a date, YYMMDD (the day can be 00) | Not needed |
| `12` | DUE DATE | 6 digits: a date, YYMMDD (the day can be 00) | Not needed |
| `13` | PACK DATE | 6 digits: a date, YYMMDD (the day can be 00) | Not needed |
| `15` | BEST BEFORE or BEST BY | 6 digits: a date, YYMMDD (the day can be 00) | Not needed |
| `16` | SELL BY | 6 digits: a date, YYMMDD (the day can be 00) | Not needed |
| `17` | USE BY or EXPIRY | 6 digits: a date, YYMMDD (the day can be 00) | Not needed |

### 2: Variants, serial numbers and other identifiers

| AI | Data title | Format | Separator after it |
| - | - | - | - |
| `20` | VARIANT | 2 digits | Not needed |
| `21` | SERIAL | Up to 20 characters | If not last |
| `22` | CPV | Up to 20 characters | If not last |
| `235` | TPX | Up to 28 characters | If not last |
| `240` | ADDITIONAL ID | Up to 30 characters | If not last |
| `241` | CUST. PART No. | Up to 30 characters | If not last |
| `242` | MTO VARIANT | Up to 6 digits | If not last |
| `243` | PCN | Up to 20 characters | If not last |
| `250` | SECONDARY SERIAL | Up to 30 characters | If not last |
| `251` | REF. TO SOURCE | Up to 30 characters | If not last |
| `253` | GDTI | 13 digits with a check digit, then optionally up to 17 characters | If not last |
| `254` | GLN EXTENSION COMPONENT | Up to 20 characters | If not last |
| `255` | GCN | 13 digits with a check digit, then optionally up to 12 digits | If not last |

### 3: Measures, weights and counts

| AI | Data title | Format | Separator after it |
| - | - | - | - |
| `30` | VAR. COUNT | Up to 8 digits | If not last |
| `3100–3105` | NET WEIGHT (kg) | 6 digits | Not needed |
| `3110–3115` | LENGTH (m) | 6 digits | Not needed |
| `3120–3125` | WIDTH (m) | 6 digits | Not needed |
| `3130–3135` | HEIGHT (m) | 6 digits | Not needed |
| `3140–3145` | AREA (m²) | 6 digits | Not needed |
| `3150–3155` | NET VOLUME (l) | 6 digits | Not needed |
| `3160–3165` | NET VOLUME (m³) | 6 digits | Not needed |
| `3200–3205` | NET WEIGHT (lb) | 6 digits | Not needed |
| `3210–3215` | LENGTH (in) | 6 digits | Not needed |
| `3220–3225` | LENGTH (ft) | 6 digits | Not needed |
| `3230–3235` | LENGTH (yd) | 6 digits | Not needed |
| `3240–3245` | WIDTH (in) | 6 digits | Not needed |
| `3250–3255` | WIDTH (ft) | 6 digits | Not needed |
| `3260–3265` | WIDTH (yd) | 6 digits | Not needed |
| `3270–3275` | HEIGHT (in) | 6 digits | Not needed |
| `3280–3285` | HEIGHT (ft) | 6 digits | Not needed |
| `3290–3295` | HEIGHT (yd) | 6 digits | Not needed |
| `3300–3305` | GROSS WEIGHT (kg) | 6 digits | Not needed |
| `3310–3315` | LENGTH (m), log | 6 digits | Not needed |
| `3320–3325` | WIDTH (m), log | 6 digits | Not needed |
| `3330–3335` | HEIGHT (m), log | 6 digits | Not needed |
| `3340–3345` | AREA (m²), log | 6 digits | Not needed |
| `3350–3355` | VOLUME (l), log | 6 digits | Not needed |
| `3360–3365` | VOLUME (m³), log | 6 digits | Not needed |
| `3370–3375` | KG PER m² | 6 digits | Not needed |
| `3400–3405` | GROSS WEIGHT (lb) | 6 digits | Not needed |
| `3410–3415` | LENGTH (in), log | 6 digits | Not needed |
| `3420–3425` | LENGTH (ft), log | 6 digits | Not needed |
| `3430–3435` | LENGTH (yd), log | 6 digits | Not needed |
| `3440–3445` | WIDTH (in), log | 6 digits | Not needed |
| `3450–3455` | WIDTH (ft), log | 6 digits | Not needed |
| `3460–3465` | WIDTH (yd), log | 6 digits | Not needed |
| `3470–3475` | HEIGHT (in), log | 6 digits | Not needed |
| `3480–3485` | HEIGHT (ft), log | 6 digits | Not needed |
| `3490–3495` | HEIGHT (yd), log | 6 digits | Not needed |
| `3500–3505` | AREA (in²) | 6 digits | Not needed |
| `3510–3515` | AREA (ft²) | 6 digits | Not needed |
| `3520–3525` | AREA (yd²) | 6 digits | Not needed |
| `3530–3535` | AREA (in²), log | 6 digits | Not needed |
| `3540–3545` | AREA (ft²), log | 6 digits | Not needed |
| `3550–3555` | AREA (yd²), log | 6 digits | Not needed |
| `3560–3565` | NET WEIGHT (tr oz) | 6 digits | Not needed |
| `3570–3575` | NET VOLUME (oz) | 6 digits | Not needed |
| `3600–3605` | NET VOLUME (qt (US)) | 6 digits | Not needed |
| `3610–3615` | NET VOLUME (gal.) | 6 digits | Not needed |
| `3620–3625` | VOLUME (qt (US)), log | 6 digits | Not needed |
| `3630–3635` | VOLUME (gal (US)), log | 6 digits | Not needed |
| `3640–3645` | NET VOLUME (in³) | 6 digits | Not needed |
| `3650–3655` | NET VOLUME (ft³) | 6 digits | Not needed |
| `3660–3665` | NET VOLUME (yd³) | 6 digits | Not needed |
| `3670–3675` | VOLUME (in³), log | 6 digits | Not needed |
| `3680–3685` | VOLUME (ft³), log | 6 digits | Not needed |
| `3690–3695` | VOLUME (yd³), log | 6 digits | Not needed |
| `37` | COUNT | Up to 8 digits | If not last |
| `3900–3909` | AMOUNT | Up to 15 digits | If not last |
| `3910–3919` | AMOUNT | 3 digits: an ISO 4217 numeric currency code, then up to 15 digits | If not last |
| `3920–3929` | PRICE | Up to 15 digits | If not last |
| `3930–3939` | PRICE | 3 digits: an ISO 4217 numeric currency code, then up to 15 digits | If not last |
| `3940–3943` | PRCNT OFF | 4 digits | If not last |
| `3950–3955` | PRICE/UoM | 6 digits | If not last |

### 4: Locations, routing and shipping

| AI | Data title | Format | Separator after it |
| - | - | - | - |
| `400` | ORDER NUMBER | Up to 30 characters | If not last |
| `401` | GINC | Up to 30 characters | If not last |
| `402` | GSIN | 17 digits with a check digit | If not last |
| `403` | ROUTE | Up to 30 characters | If not last |
| `410` | SHIP TO LOC | 13 digits with a check digit | Not needed |
| `411` | BILL TO | 13 digits with a check digit | Not needed |
| `412` | PURCHASE FROM | 13 digits with a check digit | Not needed |
| `413` | SHIP FOR LOC | 13 digits with a check digit | Not needed |
| `414` | LOC No. | 13 digits with a check digit | Not needed |
| `415` | PAY TO | 13 digits with a check digit | Not needed |
| `416` | PROD/SERV LOC | 13 digits with a check digit | Not needed |
| `417` | PARTY | 13 digits with a check digit | Not needed |
| `420` | SHIP TO POST | Up to 20 characters | If not last |
| `421` | SHIP TO POST | 3 digits: an ISO 3166 numeric country code, then up to 9 characters | If not last |
| `422` | ORIGIN | 3 digits: an ISO 3166 numeric country code | If not last |
| `423` | COUNTRY - INITIAL PROCESS | 3 digits: an ISO 3166 numeric country code, then optionally the same up to 4 more times | If not last |
| `424` | COUNTRY - PROCESS | 3 digits: an ISO 3166 numeric country code | If not last |
| `425` | COUNTRY - DISASSEMBLY | 3 digits: an ISO 3166 numeric country code, then optionally the same up to 4 more times | If not last |
| `426` | COUNTRY - FULL PROCESS | 3 digits: an ISO 3166 numeric country code | If not last |
| `427` | ORIGIN SUBDIVISION | Up to 3 characters | If not last |
| `4300` | SHIP TO COMP | Up to 35 characters | If not last |
| `4301` | SHIP TO NAME | Up to 35 characters | If not last |
| `4302` | SHIP TO ADD1 | Up to 70 characters | If not last |
| `4303` | SHIP TO ADD2 | Up to 70 characters | If not last |
| `4304` | SHIP TO SUB | Up to 70 characters | If not last |
| `4305` | SHIP TO LOC | Up to 70 characters | If not last |
| `4306` | SHIP TO REG | Up to 70 characters | If not last |
| `4307` | SHIP TO COUNTRY | 2 characters: an ISO 3166 two-letter country code | If not last |
| `4308` | SHIP TO PHONE | Up to 30 characters | If not last |
| `4309` | SHIP TO GEO | 10 digits: a latitude, then 10 digits: a longitude | If not last |
| `4310` | RTN TO COMP | Up to 35 characters | If not last |
| `4311` | RTN TO NAME | Up to 35 characters | If not last |
| `4312` | RTN TO ADD1 | Up to 70 characters | If not last |
| `4313` | RTN TO ADD2 | Up to 70 characters | If not last |
| `4314` | RTN TO SUB | Up to 70 characters | If not last |
| `4315` | RTN TO LOC | Up to 70 characters | If not last |
| `4316` | RTN TO REG | Up to 70 characters | If not last |
| `4317` | RTN TO COUNTRY | 2 characters: an ISO 3166 two-letter country code | If not last |
| `4318` | RTN TO POST | Up to 20 characters | If not last |
| `4319` | RTN TO PHONE | Up to 30 characters | If not last |
| `4320` | SRV DESCRIPTION | Up to 35 characters | If not last |
| `4321` | DANGEROUS GOODS | 1 digit: 0 or 1 | If not last |
| `4322` | AUTH TO LEAVE | 1 digit: 0 or 1 | If not last |
| `4323` | SIG REQUIRED | 1 digit: 0 or 1 | If not last |
| `4324` | NOT BEF DEL DT | 6 digits: a date, YYMMDD (the day can be 00), then 4 digits: a time, HHMM | If not last |
| `4325` | NOT AFT DEL DT | 6 digits: a date, YYMMDD (the day can be 00), then 4 digits: a time, HHMM | If not last |
| `4326` | REL DATE | 6 digits: a date, YYMMDD | If not last |
| `4330` | MAX TEMP F. | 6 digits, then optionally 1 character | If not last |
| `4331` | MAX TEMP C. | 6 digits, then optionally 1 character | If not last |
| `4332` | MIN TEMP F. | 6 digits, then optionally 1 character | If not last |
| `4333` | MIN TEMP C. | 6 digits, then optionally 1 character | If not last |

### 7: Additional product and regulatory data

| AI | Data title | Format | Separator after it |
| - | - | - | - |
| `7001` | NSN | 13 digits | If not last |
| `7002` | MEAT CUT | Up to 30 characters | If not last |
| `7003` | EXPIRY TIME | 6 digits: a date, YYMMDD, then 4 digits: a time, HHMM | If not last |
| `7004` | ACTIVE POTENCY | Up to 4 digits | If not last |
| `7005` | CATCH AREA | Up to 12 characters | If not last |
| `7006` | FIRST FREEZE DATE | 6 digits: a date, YYMMDD | If not last |
| `7007` | HARVEST DATE | 6 digits: a date, YYMMDD, then optionally the same up to 1 more time | If not last |
| `7008` | AQUATIC SPECIES | Up to 3 characters | If not last |
| `7009` | FISHING GEAR TYPE | Up to 10 characters | If not last |
| `7010` | PROD METHOD | Up to 2 characters | If not last |
| `7011` | TEST BY DATE | 6 digits: a date, YYMMDD, then optionally 4 digits: a time, HHMM | If not last |
| `7020` | REFURB LOT | Up to 20 characters | If not last |
| `7021` | FUNC STAT | Up to 20 characters | If not last |
| `7022` | REV STAT | Up to 20 characters | If not last |
| `7023` | GIAI - ASSEMBLY | Up to 30 characters | If not last |
| `7030` | PROCESSOR # 0 | 3 digits: an ISO 3166 numeric country code, or 999, then up to 27 characters | If not last |
| `7031` | PROCESSOR # 1 | 3 digits: an ISO 3166 numeric country code, or 999, then up to 27 characters | If not last |
| `7032` | PROCESSOR # 2 | 3 digits: an ISO 3166 numeric country code, or 999, then up to 27 characters | If not last |
| `7033` | PROCESSOR # 3 | 3 digits: an ISO 3166 numeric country code, or 999, then up to 27 characters | If not last |
| `7034` | PROCESSOR # 4 | 3 digits: an ISO 3166 numeric country code, or 999, then up to 27 characters | If not last |
| `7035` | PROCESSOR # 5 | 3 digits: an ISO 3166 numeric country code, or 999, then up to 27 characters | If not last |
| `7036` | PROCESSOR # 6 | 3 digits: an ISO 3166 numeric country code, or 999, then up to 27 characters | If not last |
| `7037` | PROCESSOR # 7 | 3 digits: an ISO 3166 numeric country code, or 999, then up to 27 characters | If not last |
| `7038` | PROCESSOR # 8 | 3 digits: an ISO 3166 numeric country code, or 999, then up to 27 characters | If not last |
| `7039` | PROCESSOR # 9 | 3 digits: an ISO 3166 numeric country code, or 999, then up to 27 characters | If not last |
| `7040` | UIC+EXT | 1 digit, then 1 character, then 1 character, then 1 character | If not last |
| `7041` | UFRGT UNIT TYPE | Up to 4 characters: a package type code | If not last |
| `710` | NHRN PZN | Up to 20 characters | If not last |
| `711` | NHRN CIP | Up to 20 characters | If not last |
| `712` | NHRN CN | Up to 20 characters | If not last |
| `713` | NHRN DRN | Up to 20 characters | If not last |
| `714` | NHRN AIM | Up to 20 characters | If not last |
| `715` | NHRN NDC | Up to 20 characters | If not last |
| `716` | NHRN AIC | Up to 20 characters | If not last |
| `717` | NHRN SRN | Up to 20 characters | If not last |
| `7230` | CERT # 1 | 2 characters, then up to 28 characters | If not last |
| `7231` | CERT # 2 | 2 characters, then up to 28 characters | If not last |
| `7232` | CERT # 3 | 2 characters, then up to 28 characters | If not last |
| `7233` | CERT # 4 | 2 characters, then up to 28 characters | If not last |
| `7234` | CERT # 5 | 2 characters, then up to 28 characters | If not last |
| `7235` | CERT # 6 | 2 characters, then up to 28 characters | If not last |
| `7236` | CERT # 7 | 2 characters, then up to 28 characters | If not last |
| `7237` | CERT # 8 | 2 characters, then up to 28 characters | If not last |
| `7238` | CERT # 9 | 2 characters, then up to 28 characters | If not last |
| `7239` | CERT # 10 | 2 characters, then up to 28 characters | If not last |
| `7240` | PROTOCOL | Up to 20 characters | If not last |
| `7241` | AIDC MEDIA TYPE | 2 digits: a media type code | If not last |
| `7242` | VCN | Up to 25 characters | If not last |
| `7250` | DOB | 8 digits: a date, YYYYMMDD | If not last |
| `7251` | DOB TIME | 8 digits: a date, YYYYMMDD, then 4 digits: a time, HHMM | If not last |
| `7252` | BIO SEX | 1 digit: an ISO 5218 sex code | If not last |
| `7253` | FAMILY NAME | Up to 40 characters | If not last |
| `7254` | GIVEN NAME | Up to 40 characters | If not last |
| `7255` | SUFFIX | Up to 10 characters | If not last |
| `7256` | FULL NAME | Up to 90 characters | If not last |
| `7257` | PERSON ADDR | Up to 70 characters | If not last |
| `7258` | BIRTH SEQUENCE | 3 characters | If not last |
| `7259` | BABY | Up to 40 characters | If not last |

### 8: Additional identifiers, coupons and services

| AI | Data title | Format | Separator after it |
| - | - | - | - |
| `8001` | DIMENSIONS | 4 digits: not 0, then 5 digits: not 0, then 3 digits: not 0, then 1 digit: the winding direction, 0, 1 or 9, then 1 digit | If not last |
| `8002` | CMT No. | Up to 20 characters | If not last |
| `8003` | GRAI | 1 digit: always 0, then 13 digits with a check digit, then optionally up to 16 characters | If not last |
| `8004` | GIAI | Up to 30 characters | If not last |
| `8005` | PRICE PER UNIT | 6 digits | If not last |
| `8006` | ITIP | 14 digits with a check digit, then 4 digits: piece number and total | If not last |
| `8007` | IBAN | Up to 34 characters: an IBAN | If not last |
| `8008` | PROD TIME | 6 digits: a date, YYMMDD, then 2 digits: an hour, HH, then optionally 2 digits: minutes, MM, then optionally 2 digits: seconds, SS | If not last |
| `8009` | OPTSEN | Up to 50 characters | If not last |
| `8010` | CPID | Up to 30 characters (A–Z, 0–9, #, -, /) | If not last |
| `8011` | CPID SERIAL | Up to 12 digits | If not last |
| `8012` | VERSION | Up to 20 characters | If not last |
| `8013` | GMN | Up to 25 characters with check characters | If not last |
| `8014` | MUDI | Up to 25 characters with check characters | If not last |
| `8017` | GSRN - PROVIDER | 18 digits with a check digit | If not last |
| `8018` | GSRN - RECIPIENT | 18 digits with a check digit | If not last |
| `8019` | SRIN | Up to 10 digits | If not last |
| `8020` | REF No. | Up to 25 characters | If not last |
| `8026` | ITIP CONTENT | 14 digits with a check digit, then 4 digits: piece number and total | If not last |
| `8030` | DIGSIG | Up to 90 base64url character | If not last |
| `8040` | IMEI | 15 digits | If not last |
| `8041` | IMEI2 | 15 digits | If not last |
| `8042` | ESIM | 32 digits | If not last |
| `8043` | PSIM | 18 digits, then optionally up to 2 digits | If not last |
| `8110` | | Up to 70 characters | If not last |
| `8111` | POINTS | 4 digits | If not last |
| `8112` | | Up to 70 characters | If not last |
| `8200` | PRODUCT URL | Up to 70 characters | If not last |

### 9: Company internal and mutually agreed

| AI | Data title | Format | Separator after it |
| - | - | - | - |
| `90` | INTERNAL | Up to 30 characters | If not last |
| `91–99` | INTERNAL | Up to 90 characters | If not last |

## Reading AIs in your app

Don't split GS1 data by position or by searching for AI digits: the same digits can appear inside a value. Use a parser that knows each AI's length. ZipZapKit includes one: see [GS1 Application Identifiers](/sdk/gs1/application-identifiers).

## Specification

* [GS1 Barcode Syntax Dictionary](https://github.com/gs1/gs1-syntax-dictionary), release 2026-01-27: the source of the full table on this page, maintained by GS1.
* [GS1 General Specifications](https://www.gs1.org/standards/barcodes-epcrfid-id-keys/gs1-general-specifications), section 3: the definitive list of AIs and their rules.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.