Claude

IntuitionLabs is now a member of the Claude Partner Network – AI training and upskilling with Claude for pharma and biotech. Book a call.

IntuitionLabs
Back to Articles
IntuitionLabs

fda gsrs unii · unii lookup fda

FDA GSRS UNII: Substance Master Crosswalk for SPL and IDMP

October 31, 2026
30 min read

A 2026 guide to the FDA GSRS UNII: precisionFDA and openFDA ingestion, class-specific matching rules, SPL and IDMP mapping limits, with 167,385 record counts and test cases.

FDA GSRS UNII: Substance Master Crosswalk for SPL and IDMP
Summary
  1. 01A UNII identifies a registered substance definition. It does not establish regulatory approval or resolve an unspecified salt, hydrate or grade.
  2. 02Keep the preferred name as a label and typed synonyms as candidates. Name collisions and distinct salt or hydrate records make a forced name-to-UNII match unsafe.
  3. 03Accept exact UNII joins only with the required record checks. Preserve substance class, definition level, record status and typed relationships, and send ambiguous cases to a steward.
  4. 04SPL links ingredients and active moieties through separate substance identities. IDMP-oriented systems retain their own keys and carry the UNII as an external identifier.
  5. 05Store snapshot dates and record versions together. Registry records can change while their UNIIs remain stable, and coverage figures need a named, dated denominator.
01

Executive Summary

A Unique Ingredient Identifier (UNII) is a stable cross-system key only when the question is "which registered substance definition is this?" It is not a safe key for the questions "which names belong to it?", "which salt, hydrate or grade is meant?" or "is this product acceptable to a regulator?". FDA states that UNIIs are generated from scientific identity characteristics using ISO 11238 data elements, and that availability "does not imply any regulatory review or approval" ([1]) ([2]). This report turns that position into a practical substance-master crosswalk for regulatory-data architects, Regulatory Information Management (RIM) and Structured Product Labeling (SPL) owners, and Identification of Medicinal Products (IDMP) program leads.

The sources are concrete. FDA's Global Substance Registration System (GSRS) generates UNIIs and classifies substances as chemical, protein, nucleic acid, polymer, structurally diverse or mixture ([3]). The precisionFDA UNII Search page offers downloads of UNIIs, names, codes and attributes, and its archive page was last updated on August 4, 2026 ([4]) ([5]). The public GSRS site lists a downloadable dump of 177,121 records dated August 6, 2026 ([6]), while the openFDA substance endpoint held 167,385 records as of its 2026-09-09 update ([7]). In that openFDA snapshot, 5,736 records (3.43%) carry no UNII, and 4,317 of those are the concept class ([8]).

The identity model is richer than any name list. Hydrates and salts receive their own UNIIs, linked by typed relationships ([9]). A single normalized name can sit on two different substances, and GSRS itself flags such a collision ([10]). Alternative definitions, concept records and records with failed validation exist beside approved records ([11]). A crosswalk that forces one name to one UNII will therefore make silent errors.

Downstream, SPL requires UNIIs for ingredients and active moieties ([12]), but IDMP-oriented systems do not use the UNII as their primary key. The European Medicines Agency (EMA) Substance Management Service stores its own SMS ID and carries the FDA UNII only as an optional external code ([13]). FDA says no global substance identifier yet exists for global IDMP ([14]).

The recommended design keeps UNII as a governed attribute with a version stamp, preserves substance class and relationship type, routes ambiguous matches to human review, and publishes match coverage only against a named, dated test set. The denominators in this report come from the openFDA snapshot of 2026-09-09 and the public GSRS index read on 2026-10-31; no SPL-level match rate was measured.

96.57%

UNII presence among 167,385 openFDA substance records in the 2026-09-09 snapshot; no SPL match rate was measured

3.43%

Share of openFDA records without a UNII in the 2026-09-09 snapshot

22.82%

OpenFDA records in classes that resist name-only matching, snapshot 2026-09-09

95.83%

Public GSRS index records with approved registration status on 2026-10-31; this does not imply product approval

02

Introduction and Background

Regulated-product organizations carry the same ingredient under many names: a pharmacopoeial title, an International Nonproprietary Name, a brand-era synonym, a supplier code and a free-text label entry. FDA's own description of GSRS is explicit about the problem: instead of relying on names that vary across regulatory domains, countries and regions, substances are defined by standardized scientific descriptions ([15]). The GSRS knowledge base was created through collaboration between FDA's informatics team, the National Center for Advancing Translational Sciences (NCATS) and the European Medicines Agency ([16]).

This report covers "FDA GSRS UNII" and the questions around it: UNII lookup, what GSRS is, how UNIIs map to IDMP substance data, how a UNII differs from a Chemical Abstracts Service Registry Number (CAS RN) or an EMA SMS ID, and how UNIIs are used in SPL. Rather than another standards overview, it builds a crosswalk design: which fields to ingest, which to preserve, which matches to accept, and which to leave unresolved.

Three decisions frame the work.

  • Stable identifier decision. When may a UNII be stored as the cross-system key for a substance?
  • Inspection decision. When must the underlying substance record (class, defining elements, relationships) be read before a match is accepted?
  • Unresolved decision. When must a match remain open because the source model is richer than the target field?

A boundary note on non-approval applies throughout. FDA's UNII Search page says that UNII availability does not imply any regulatory review or approval ([2]), and the Health Level Seven (HL7) code system entry for UNII repeats the statement ([17]). A UNII in a master therefore records identity only. It must not be rendered as a regulatory-status flag.

IntuitionLabs is an adjacent advisor to life-sciences data teams, not a registry operator or software vendor, and nothing here depends on any commercial product. The methods use only public FDA, NCATS, EMA, ISO and HL7 materials, and organizations should have qualified regulatory-affairs and data-governance staff confirm any design against their own submissions obligations.

03

Identity Infrastructure: GSRS, UNII and precisionFDA

What each component does

GSRS is the registry and software that defines substances and generates UNIIs. FDA says GSRS UNIIs are used in electronic listing as seen in DailyMed, and also support other regulatory activities across the product life cycle ([18]). FDA created its Substance Registration System in 2006 because no other code system met the agency's regulatory needs ([19]). A UNII can be generated for any substance, from an atom to an organism ([20]).

UNII is the output identifier. It is ten characters long and includes a check digit, per a 2012 National Library of Medicine (NLM) bulletin ([21]). A 2007 FDA presentation, archived on the Wayback Machine, says the first nine characters are randomly generated and the tenth is determined by an algorithm ([22]). The check-character algorithm is not publicly documented in the sources cited here, so a validator should check format and the registry lookup, not recompute the check character. HL7 describes a UNII as non-proprietary, free, unique, unambiguous, nonsemantic and alphanumeric ([23]). Because it carries no meaning, nothing about a UNII's characters tells you the substance class.

precisionFDA UNII Search is the public flat-file and search interface built for electronic listing submitters. FDA's GSRS page describes it as one of two public UNII sources, the other being the public GSRS hosted by NCATS ([24]). The search page offers a download of "lists of UNIIs, names, codes, and attributes for substances registered in GSRS" ([4]). It carries a caveat that matters for crosswalk design: synonyms and mappings reflect the best public information available at publication time ([25]). Problems are reported to the FDA-SRS mailbox ([26]).

The NCATS GSRS FAQ states that the simplified public UNII Search dataset is on precisionFDA, and that the software itself is neither mandatory nor officially endorsed ([27]). The public dump is described as seed data that can be loaded into a local GSRS instance ([28]).

The preferred name, the synonym and the identifier are three different things

The search help page gives a worked example. DIAZEPAM is the FDA preferred substance name for UNII Q3JTX2Q7TU ([29]). The same page notes that UNIIs also appear as names, so a search for the code string also matches in the name space. HL7 maps the UNII column of the download to the code and the Preferred Term (PT) column to the display value ([30]).

In the GSRS data model, a name object carries a type, a preferred flag and a displayName flag as separate fields. openFDA documents that each substance may have many names flagged preferred ([31]), and gives name types such as brand name, common name and systematic name. The practical rule: store the PT as a label, store every other name as a synonym with its type, and never promote a synonym to a key.

Why the registry says names are not enough

The 2020 Nucleic Acids Research paper on GSRS gives the evidence. In the public data, 4,296 substances reference more than one registry number ([32]). Of 73,122 chemicals in the July 2020 release, 5,617 have two or more InChI keys ([33]). The authors conclude that a process built with expert review at its center is necessary to handle regulated products ([34]). The same paper reports that each record averages six synonyms ([35]), so synonym ambiguity scales with registry growth.

04

Substance Classes and Why Names Are Insufficient

GSRS follows the six substance types in ISO 11238 ([36]). FDA's own description lists chemical, protein, nucleic acid, polymer, structurally diverse and mixture ([3]). The ISO standard itself defines an information model for substances in medicinal products ([37]), and its companion ISO/TS 19844 defines substances by scientific identity, not by use or production method ([38]). The public GSRS index also holds a small number of records in a further class, specified substance group 1 (see Table 6), which is not one of the six types listed above. The openFDA class counts also include concept records, which are lesser-defined entries outside the six types ([39]).

Why each class needs its own rule

  • Chemical. Definitions carry a stereochemistry status field because many substances are marketed as chiral mixtures ([40]). Alpha-tocopherol appears as two UNIIs, synthetic and natural, each captured with absolute stereochemistry ([41]).
  • Protein. FDA's registration guide defines a protein as a biomolecule of more than 40 proteinogenic amino acids ([42]). Human insulin is a protein record with class, status and version in one object ([43]).
  • Nucleic acid. Nusinersen is a nucleic-acid record, and its sodium salt is a separate UNII reached by a salt relationship ([44]).
  • Polymer. Polyethylene glycol 400 is a polymer record with definition level INCOMPLETE ([45]). openFDA records its polymer class as homopolymer ([46]). Heparin sodium is also a polymer record that GSRS itself annotates as incomplete ([47]).
  • Mixture. Povidone is not a polymer-class record: the unspecified povidone UNII is a mixture ([48]).
  • Structurally diverse. These are heterogeneous preparations from natural materials ([49]).
  • Concept. Concept records are lesser-defined. The GSRS paper cites "fish, unspecified" as an example ([50]). A concept record can still carry a UNII: an approved concept record exists with definition level INCOMPLETE ([51]).

What this means for names

Hydration state alone defeats name matching. The GSRS paper lists azithromycin trihydrate and azithromycin anhydrous as two UNIIs sharing a name ([52]). Caffeine monohydrate and anhydrous caffeine are two records linked by solvate relationships ([9]). Metformin and metformin hydrochloride are separate records, and the parent lists the hydrochloride through a salt relationship ([53]). A crosswalk that strips "hydrochloride" or "monohydrate" during normalization will merge UNIIs that FDA keeps apart.

“

A UNII in a master therefore records identity only. It must not be rendered as a regulatory-status flag.

05

Ingestion: Downloads, APIs and the Data Dictionary

Four sources, four jobs

precisionFDA files. The archive page lists three latest files (UNIIs.zip, UNII_Data.zip and Legacy_UNIIs.txt) plus dated archives in two series, with release dates that are irregular rather than on a fixed schedule; recent releases were February 11, February 26 and August 4, 2026 ([5]). HL7 advises versioning a UNII code system by the date of the download file in YYYYMMDD form ([54]). No column dictionary for these files was published on the pages read; the only column names sourced are UNII and PT ([55]).

openFDA substance endpoint. The endpoint is designed mainly for machine reading ([56]). Its response metadata reported a last-updated date of 2026-09-09 on 2026-10-31 ([57]). Because each record's version increments with every saved edit ([58]), old records can change between loads, so a full re-download rather than a delta is the safer pattern. A single API call is limited to 1000 records ([59]). The openFDA terms place content in the public domain under a CC0 1.0 dedication ([60]), and HL7 notes that UNII has no license terms to adhere to ([61]). One documentation discrepancy: the authentication page says an API key is required ([62]), while the substance how-to page says a key is recommended for regular use ([63]). Without a key the stated limit is 1,000 requests per day per IP address, and with a key 120,000 requests per day ([64]) ([65]). Treat the key as mandatory in pipelines.

NCATS public GSRS. The home page offers a downloadable public dump and states the current software release as GSRS v3.2.0 (July 2026) ([6]). The downloads page offers the full public dataset, a data dictionary in spreadsheet form and a JSON schema of the substance model. The public Swagger documentation notes that in the default FDA-seeded system the approvalID equals the UNII ([66]). Release cadence is stated as a full dump with each software release ([67]).

Bulk export. Formats such as full JSON, TSV and SDF need a local installation, because the public site does not offer arbitrary exports ([68]).

Table 1: data dictionary for the substance master

Table 1 below proposes a data dictionary. The "source location" column ties each field to a documented source field, and the "rule" column states how to treat it.

T.02
Master fieldSource locationRule
uniiGSRS approvalID (equal to UNII in the FDA-seeded system); openFDA unii ([69]); precisionFDA UNII columnPrimary external key. Nullable: 5,736 openFDA records have none ([8]). Never infer class from characters.
preferred_nameprecisionFDA PT column; GSRS name with preferred and displayName flagsSingle display label per snapshot. Not unique across UNIIs.
synonym (plus name_type)GSRS and openFDA name objects with a type codeStore every synonym with its type and language. Many-to-many with UNII.
substance_classGSRS and openFDA substance_class fieldMandatory. Drives the matching rule in Table 2.
defining_elementsClass-specific blocks, plus the definitional hash described in the GSRS wiki ([70])Keep a pointer or hash, not a flattened string.
relationship_typeopenFDA and GSRS relationships (for example active moiety, salt or solvate to parent)Preserve direction and type. Do not flatten to "parent".
definition_type and leveldefinition_type (primary or alternative); level values such as COMPLETE and INCOMPLETEAlternative or incomplete definitions block auto-accept.
record_statusGSRS status (approved, non-approved, alternative, FAILED) ([71])Not among the top-level openFDA fields listed in its field definitions, so read it from the GSRS API or dump.
source_versionGSRS record version; openFDA version increments with every saved edit ([58])Store record version and snapshot date together.
snapshot_dateprecisionFDA file date; openFDA update date ([57]); GSRS dump dateMandatory on every row.
legacy_uniiGSRS code system LEGACY_FDA_UNII ([72])Keep as an alias table for redirect handling.

The table shows that record_status was verified only in the GSRS API, not among the openFDA field definitions, and that legacy codes were verified only in GSRS records. A pipeline built solely on openFDA may therefore lose the status needed to separate approved, alternative and failed records. A pipeline built solely on the precisionFDA file loses relationships and class detail beyond the columns documented for it.

06

Matching Rules and Exception Patterns

Exact identifier match first

The cheapest and safest match is a UNII-to-UNII join, with the snapshot date stored. A workable decision order has three steps:

  1. Validate format. Confirm ten alphanumeric characters, without recomputing the unpublished check character.
  2. Look up the record. Read class, status, definition type and level for the UNII.
  3. Compare labels. Treat a preferred-name mismatch as a review flag, not a rejection.

The lookup itself is simple. The openFDA search supports lookup by UNII directly ([73]), and the GSRS API supports a search on the approvalID. Name lookups are less forgiving. In the openFDA test, searching names for "METFORMIN" in capitals returned "No matches found!", because the stored display name is "Metformin" and the match is case-sensitive ([74]). Any name pipeline must therefore case-fold on both sides and still treat the result as a candidate, not an answer.

Normalized name match second, and never alone

A normalized name is acceptable as a candidate generator. It is not acceptable as an identity decision for any class except a fully defined chemical with a single exact-name hit. The GSRS public index shows why: 2,044 records carry a Name Collision validation warning. Some of these are intra-record duplicates, so the figure overstates cross-UNII ambiguity, but a verified cross-record case exists. The name "Dexon" is a brand name on polyglycolic acid, and GSRS annotates the collision ([10]); the same normalized name is a common name on fenaminosulf ([75]).

Table 2: class-specific matching rules

Table 2 summarizes the rule per class, using records read on 2026-10-31 as the worked example.

T.03
ClassWorked exampleAuto-accept whenRoute to review when
Chemical (parent)AspirinUNII matches, status approved, definition level COMPLETEName only, or stereochemistry status unknown
Chemical (salt)Metformin hydrochlorideUNII matches the salt; active moiety UNII also matchesSource text says only "metformin" without the salt
Chemical (hydrate)Caffeine monohydrateUNII matches the hydrate exactlyHydration state absent from the source
ProteinInsulin humanUNII matches; sequence or record pointer storedBiosimilar-style names without a UNII
Nucleic acidNusinersen and its sodium saltUNII matches; salt vs parent statedSalt form unspecified
PolymerPolyethylene glycol 400Never on name aloneAlways when definition level is INCOMPLETE
MixturePovidone, unspecifiedNever on name aloneGrade-specific text (for example a K-value)
Structurally diverseLanolin (illustrative; no record cited here)UNII plus part, taxon and fractionAny botanical without part and taxon
ConceptApproved concept recordNeverAlways: concept does not define an ingredient sufficiently

Auto-acceptance is possible only where the defining elements are exact. For polymers, mixtures, structurally diverse materials and concepts, the master should store a needs_review state rather than a forced match.

Exception patterns in detail

  • Salts and solvates. The relationship vocabulary types a salt as a link to a parent and a hydrate as an anhydrous-to-solvate link. The GSRS salt UNII for metformin hydrochloride has an active moiety link to the base metformin UNII. Store both UNIIs and the relationship; do not replace one with the other.
  • Polymers. Heparin sodium is a polymer record that GSRS notes is incomplete. Treat the UNII as a pointer to an incompletely defined record.
  • Proteins. Records for biosimilar-style names may exist as concept records without an approval ID, so a match to the product-specific name is not a match to the reference UNII.
  • Structurally diverse materials. Identity includes the plant part and the taxon fields; "St. John's wort" alone is a label, not a definition.
  • Alternative definitions. GSRS stores a second definition of the same substance as a separate record with status "alternative" and no UNII.

Table 3: ambiguous examples and expected outcomes

Table 3 lists cases where the expected outcome is review or unresolved. Each case is built from a record read during this research.

T.04
Input textWhat the record showsExpected outcome
"Dexon"Two UNIIs carry the normalized nameUnresolved. Review with class and context.
"Azithromycin"Trihydrate and anhydrous are separate UNIIs sharing a nameReview: hydration state needed.
Legacy code SN578B8Z9QRetained as a legacy code on a current recordRedirect via alias table to the current UNII.

The expected outcomes are design choices; they are the article's proposed handling rules, not FDA guidance.

F.01
Exact UNII matching decision order
01Validate format

Confirm ten alphanumeric characters without recomputing the unpublished check character.

02Look up the record

Read substance class, record status, definition type and definition level for the UNII.

03Compare labels

Treat a preferred-name mismatch as a review flag, not a rejection.

Accept exact UNII joins when the record is approved, primary and completely defined.

Leave polymers, mixtures, structurally diverse materials, concept records and name collisions unresolved until a steward decides.

07

SPL Linkage and IDMP-Oriented Mapping Boundaries

How SPL uses the UNII

FDA's SPL hub describes SPL as a mechanism adopted by FDA for exchanging product and facility information ([76]). The code system object identifier table assigns OID 2.16.840.1.113883.4.9 to the FDA Substance Registration System ([77]), and HL7 lists the same OID with the URI http://fdasis.nlm.nih.gov ([78]). FDA's 2009 listing guidance calls the UNII the defined code FDA uses for ingredients and substances ([79]). The GSRS paper states that the labeling standard requires GSRS-generated UNIIs as the primary ingredient identifier ([80]).

FDA's step-by-step listing instructions show how the substance fields are used. Each active ingredient has one or more active moieties ([81]); the submitter enters the preferred name and UNII for the active moiety ([12]); and basis of strength is selected as the active ingredient, active moiety or reference drug ([82]). Strength is a ratio, a product-level attribute, not a substance attribute. Ambiguous inactive ingredients such as flavors and fragrances are not UNII-coded ingredients ([83]). Where no UNII exists, the 2009 guidance routed requests to an FDA mailbox; current guidance routes substance registration through precisionFDA ([84]).

One source limitation applies. The SPL Implementation Guide with Validation Procedures is not cited, so element-level XML names and the exact name-versus-UNII validation rule are outside the scope of this report. The crosswalk below stays at the field level documented in FDA's instructions and the HL7 SPL mapping guide.

Table 4: SPL field to substance-master crosswalk

Table 4 maps SPL entries to the substance master.

T.05
SPL conceptMaster attributeRule
Ingredient code with OID 2.16.840.1.113883.4.9uniiJoin key, snapshot-dated
Ingredient namepreferred_name or synonymCompare to PT; a mismatch is a review flag, not a key
Active moiety name and UNIIrelationship_type = ACTIVE MOIETYPreserve as a relationship, not a merged record
Basis of strengthProduct-level flagActive ingredient, active moiety or reference drug
Inactive ingredientunii plus roleSame join; confidential flag handled at product level
Bulk-ingredient labelsExceptionSome validation files are marked not applicable
FHIR representationSubstanceDefinition identifierActive moiety held in SubmittedIngredientDefinition ([85])

The table shows that SPL asks for two substance identities per active ingredient: the ingredient and its moiety. A master with only one UNII per ingredient cannot represent the relationship.

IDMP-oriented mapping boundaries

FDA states that its UNII conforms to ISO 11238 ([86]), and, on its substance-identification page, describes ISO 11238 as identifying five types of substance ([87]). That count differs from the six GSRS classes listed earlier. The FDA page mentions mixtures only parenthetically, which may explain the difference, but the page does not say so. It also states there is currently no global substance identifier for global IDMP ([14]). ISO lists ISO 11238:2018 as expected to be replaced ([88]), and a successor draft is under development ([89]). ISO/TS 19844 excludes the choice of the global identifier system from its scope ([90]).

On the European side, EMA describes the Substance Management Service (SMS) as providing harmonised data to identify ingredients and materials in a medicinal product ([91]). The SMS ID is a system-generated identifier also known as the EUTCT ID ([13]), and the UNII is stored only as an optional external code ([92]). EMA says the EU Substance Registration System is live since 2023 and that SMS and EU-SRS share the same ID ([93]). Real-time synchronisation of the two remains a planned improvement ([94]). The SMS API is built on FHIR ([95]).

The HL7 FHIR R5 SubstanceDefinition resource is described as the detailed description of a substance ([96]), and its IDMP mapping links the resource to ISO 11238 classes ([97]). It is always a type, not a physical instance ([98]).

The boundary for a master: public GSRS fields cover identity (class, names, codes, relationships, definition level). A full IDMP implementation also needs product-level and jurisdiction-specific data that a UNII cannot provide. Hold the UNII as one external identifier on an internal substance record, add the SMS ID where applicable, and do not claim a one-to-one map between a UNII and an SMS ID.

UNII, CAS RN and SMS ID side by side

A CAS RN is a unique identifier for a specific substance with up to ten digits in three parts ([99]) ([100]). CAS says a RN designates one substance ([101]), but the GSRS paper finds 4,296 substances with more than one registry number, so the two systems partition substances differently. NLM introduced UNIIs into MeSH as a new identifier system that enhances existing CAS numbers ([102]). The SMS ID is an EMA-side key. No authoritative source cited here publishes a UNII-to-SMS-ID crosswalk, so any such mapping is an internal, governed table.

F.02
SPL linkage and IDMP mapping boundaries
SPL linkage
  • UNIIs are the primary ingredient identifiers required by the labeling standard.
  • Preserve the ingredient and active moiety as separate substance identities linked by a relationship.
  • Strength is a product-level attribute rather than a substance attribute.
IDMP-oriented mapping
  • EMA uses the SMS ID as its primary key and the UNII as an external code.
  • A full IDMP implementation also requires product-level and jurisdiction-specific data.
  • Keep the UNII and SMS ID as mapped identifiers without claiming a one-to-one map.

UNII availability does not imply regulatory review or approval.

08

Change Detection, Stewardship and Validation Test Cases

What changes and how it is shown

  • Record edits. The UNII remains the same when corrections are made ([103]). The record version advances with every saved edit.
  • History. GSRS exposes retrieval of historical versions and edit history by API ([104]), and the live edits endpoint returns one entry per saved version ([105]).
  • Obsolete codes. The public index has no deprecated records, with all 177,120 labeled "Not Deprecated" ([106]). Superseded UNIIs survive as LEGACY_FDA_UNII codes on current records. No merged or replaced-by status field was found in the public API, so redirects must be built from the legacy code table.
  • Failed records. Records with status FAILED carry validation notes, for example a full-duplicate warning.

Table 5: version-diff between two public snapshots

Table 5 compares the same UNIIs in the openFDA snapshot dated 2026-09-09 and the public GSRS API read on 2026-10-31. The UNIIs are unchanged and the record versions have advanced.

T.06
Substance (UNII)openFDA version (2026-09-09)GSRS version (2026-10-31)
Aspirin (R16CO5Y76E)108 ([107])119 ([108])
Metformin (9100L32L2N)43 ([109])52 ([110])
Caffeine (3G6A5W338E)131 ([111])141 ([112])
Nusinersen (5Z9SP3X666)23 ([113])25 ([114])
Adalimumab (FYS6T7F842)119 ([115])129 ([116])

All five records moved forward by two to eleven versions in about seven weeks, with no UNII change. The implication for change control is that a master should diff on record version and defining content, not on UNII.

Stewardship controls

  1. Snapshot register. Record the file or API date with every load; HL7 recommends a YYYYMMDD version for the UNII code system.
  2. Full reload. Reload the full dataset rather than applying deltas, because record versions advance with every saved edit.
  3. Alias table. Load legacy UNIIs and resolve them to the current record.
  4. Review queue. Anything in classes polymer, mixture, structurally diverse or concept, and any record with definition level INCOMPLETE, enters a steward queue.
  5. Error path. Report source-data problems to FDA through the published mailbox.

Suggested schema and test cases

The following relational sketch is a design proposal, not an official schema; the official GSRS JSON schema is available from NCATS.

substance(master_id PK, unii NULL, substance_class NOT NULL, record_status,
          definition_type, definition_level, record_version, snapshot_date NOT NULL,
          source_system)
substance_name(master_id FK, name, name_type, is_preferred, is_display, language)
substance_relationship(master_id FK, related_unii, relationship_type, direction)
unii_alias(legacy_unii PK, current_unii, snapshot_date)
match_decision(source_text, candidate_master_id, rule, outcome, reviewer, decided_on)

Validation test cases (each reproducible from the records cited above):

  • T01. Exact UNII R16CO5Y76E resolves to Aspirin with status approved.
  • T02. The text "metformin hydrochloride" resolves to the salt record, with an active-moiety link to the base.
  • T03. The text "Dexon" returns two candidates and stays unresolved.
  • T04. A concept-class record is never auto-accepted.
  • T05. The legacy code SN578B8Z9Q resolves to the current lampalizumab UNII.
  • T06. An alternative-definition record without a UNII is excluded from key joins.
“

The implication for change control is that a master should diff on record version and defining content, not on UNII.

09

Data Analysis and Evidence

Class distribution, two named snapshots

Table 6 below gives the class distribution. The denominators come from the openFDA substance endpoint (total 167,385; data updated 2026-09-09) ([7]) and the public GSRS index read on 2026-10-31 (total 177,120). They are different datasets read at different dates, so the numbers should not be merged.

T.01
ClassopenFDA 2026-09-09 (count, share)GSRS index 2026-10-31 (count, share)
Chemical120,991 (72.28%) ([117])130,591 (73.73%) ([118])
Structurally diverse27,756 (16.58%)27,993 (15.80%)
Protein7,385 (4.41%)7,698 (4.35%)
Concept4,872 (2.91%)4,053 (2.29%)
Mixture3,015 (1.80%)3,193 (1.80%)
Polymer2,556 (1.53%)2,645 (1.49%)
Nucleic acid645 (0.39%)767 (0.43%)
Specified substance group 1165 (0.10%)180 (0.10%)

The shares were computed from the stated counts. Chemicals dominate at about three quarters of records, yet the classes that resist name-only matching (structurally diverse, mixture, polymer and concept) together make up 22.82% of the openFDA snapshot (38,199 of 167,385 records) and 21.39% of the GSRS index (37,884 of 177,120 records). The two sources differ by design and date, and the GSRS dump count (177,121) differs by one record from the index count (177,120) read on the same day, so any published coverage figure must name its exact snapshot.

Resolvable-UNII coverage against a named, dated set

The only coverage figure this report publishes is a UNII-presence rate. Against the openFDA substance endpoint, snapshot 2026-09-09, denominator 167,385: 161,649 records (96.57%) carry a UNII ([119]), and 5,736 (3.43%) do not. The unresolved category is dominated by concepts: 4,317 of the 5,736 UNII-less records (75.26%) are concept class ([120]). The remaining 1,419 are not only concepts: the same breakdown shows 892 chemicals, 361 proteins, 158 mixtures, 6 structurally diverse, 1 nucleic acid and 1 polymer record without a UNII. This is a registry-presence statistic. It is not a rate of matching any organization's ingredient list or SPL files to UNIIs, which was not measured.

Record status in the public GSRS index

The GSRS Record Status facet sums exactly to the 177,120 index: approved 169,739 (95.83%) ([11]), Validated Subconcept 3,472, FAILED 1,668, alternative 1,660 and Concept 581. A UNII-based join that ignores status would include the 4.17% of records (7,381) that are not approved.

Growth in reported record counts

Reported counts are not like-for-like, because sources count different things. The 2020 paper reports 116,636 substance definitions in the 7 July 2020 public release ([121]). A 2022 paper reports a core collection of 125,036 substances from GSRS ([122]), and the Inxight tool indexes only substances mapped to a UNII ([123]). The public dump dated August 6, 2026 holds 177,121 records. Between the 2020 release and the 2026 dump, the record count rose by 60,485, or 51.9%. Downstream, the DailyMed API reported 159,005 current SPL entries and 7,987 UNII and active-moiety entries as of Oct 30, 2026 ([124]) ([125]). These count labels and active-moiety rows, not registry records, so no ratio should be drawn.

F.03
Substance class shares in the openFDA snapshot of 2026-09-09% of 167,385 records
Source: openFDA substance endpoint
10

Implications and Future Directions

For SPL and RIM owners. Treat the UNII as the join key and the preferred name as a label. Because NLM's RxNorm takes UNIIs directly from the ingredient information in structured product labels ([126]), an erroneous UNII in a label would flow into a major downstream terminology, where UNIIs sit as codes on source atoms ([127]). Governance at the SPL authoring step is therefore cheaper than correction downstream.

For IDMP program leads. The substance standard is under revision and the ISO/TS 19844 third edition covers specified substance groups 1 to 3 only ([128]). EMA is working with HL7 to incorporate ISO IDMP into FHIR ([129]). A master should keep UNIIs and SMS IDs side by side, as mapped external identifiers, and avoid committing to a single global key until FDA and EMA publish one.

For data stewards. The FAIR framing (findable, accessible, interoperable, reusable) applies directly: the GSRS paper describes the UNII as the globally unique and persistent identifier under FAIR standards ([130]). A Collaborative Drug Discovery event announcement on FAIR data in biopharma describes the GSRS as linking substances to products, applications and clinical trials ([131]). That page is a webinar announcement, so it supports context only, not any quantitative claim.

Perspective. The work is better framed as a governance problem than a tooling problem. The sources show a public, free and dated data stream; the hard parts are the review queue, the alias table and the unresolved states. In any regulatory information or labeling workflow, the identifier lives in the master and downstream authoring tools consume it.

Open items. Not documented in the sources cited: the UNII check-character algorithm, a formal precisionFDA terms-of-use statement, a column dictionary for the precisionFDA files, and the SPL Implementation Guide validation text. FDA's preferred-names page, as retrieved on 2026-10-31, only links to the UNII Search service ([132]). Re-check each before the design is frozen.

11

Frequently Asked Questions (FAQs)

How is a UNII code looked up at FDA?

Use precisionFDA UNII Search, which supports wildcard, code and name searches, or the openFDA substance endpoint, where a query by UNII is documented. Name queries on openFDA are case-sensitive.

What is the Global Substance Registration System?

GSRS is the system that defines substances through standardized scientific descriptions and generates UNIIs. It was developed through collaboration between FDA, NCATS and EMA.

Can GSRS or UNII data be downloaded and queried by API?

Yes. precisionFDA offers downloadable files, NCATS publishes a public GSRS dump and schema, and openFDA exposes a JSON endpoint with a 1000-record limit per call.

Does a UNII mean the substance or product is FDA approved?

No. FDA says UNII availability does not imply regulatory review or approval. The word "approved" in GSRS status refers to the registration record, with a registrar reviewing the substance before a UNII is assigned ([133]).

How does a UNII map to IDMP and ISO 11238?

FDA states that its UNII conforms to ISO 11238. For EMA, the SMS ID is the primary key and the UNII is an external code. A one-to-one mapping is not documented.

What is the difference between a UNII, a CAS RN and an SMS ID?

A CAS RN identifies a substance in the CAS Registry. A UNII is generated from ISO 11238 data elements ([1]). The SMS ID is EMA's own identifier. They partition substances differently, so a crosswalk needs typed relationships.

Which SPL fields carry the UNII?

Active ingredient, active moiety and inactive ingredient entries each take a preferred name and a UNII, under code system OID 2.16.840.1.113883.4.9.

12

Conclusion

A UNII is a stable cross-system identifier for a registered substance definition, provided the master also stores the snapshot date, the substance class, the definition level and the typed relationships to related UNIIs. It is not a stable identifier for a name, a grade, a salt form that the source text does not state, or a regulatory status. The public evidence supports a layered rule: accept exact UNII joins when the record is approved, primary and completely defined; inspect the underlying record for salts, hydrates, proteins and nucleic acids; and leave polymers, mixtures, structurally diverse materials, concept records and name collisions unresolved until a steward decides.

The numbers define the scale of the queue. In the openFDA snapshot of 2026-09-09, 96.57% of 167,385 records carry a UNII, and about one in five records belongs to a class that resists name-only matching. In the public GSRS index of 2026-10-31, 95.83% of 177,120 records are approved. SPL requires UNIIs for ingredients and moieties, while IDMP-oriented systems carry the UNII as one external code beside their own keys. None of these facts implies FDA review or approval of any product. Readers applying this design to regulated submissions should confirm it with their own regulatory-affairs and data-governance specialists.

The publisher

About IntuitionLabs

Build practical AI for pharma and biotech with IntuitionLabs. We help life-science teams turn complex information and workflows into useful software, governed knowledge systems and AI tools.

IntuitionLabs is an AI consulting, custom software development and data engineering firm serving pharmaceutical, biotechnology, medical-device and other life-science organizations. We work with clinical, regulatory, medical-affairs, commercial, quality and IT teams to connect technology decisions with the work people need to accomplish.

AI consulting and adoption

Our AI enablement services cover readiness assessments, use-case selection, governance and policies, team workshops, adoption measurement and ongoing advisory support. We help organizations structure the information layer behind AI: source material, context, permissions and maintained knowledge that make generated answers useful and reviewable. Private LLM inference and hosted AI options support teams evaluating how to operate AI with appropriate control over their data and infrastructure.

Software, data and life-science workflows

IntuitionLabs develops custom software for pharma and biotech, integrates enterprise systems, and builds data engineering and business intelligence solutions. Areas of focus include AI agents, regulatory research, medical writing, medical affairs, CMC information, competitive intelligence and clinical-document workflows. Our eTMF intelligence work includes cross-system reconciliation and inspection-readiness support.

Enterprise platforms and regulated delivery

We provide Veeva services, application support, managed services, integrations and custom applications, alongside enterprise content work involving platforms such as Egnyte. For regulated workflows, our services include GxP enablement, computer-system validation and software development addressing 21 CFR Part 11 requirements. The applicable controls, validation responsibilities and acceptance criteria are defined for each engagement.

Work with IntuitionLabs

Explore AI enablement, pharma and biotech software development, data engineering and BI, and Veeva services. Contact IntuitionLabs to discuss your workflow, information sources and implementation needs.

IntuitionLabs publishes educational research to help life-science teams make informed technology decisions. Coverage of a product or organization does not imply a client relationship, endorsement or partnership.

Sources / 133
Adrien Laurent

Need Expert Guidance on This Topic?

Let's discuss how IntuitionLabs can help you navigate the challenges covered in this article.

I'm Adrien Laurent, Founder & CEO of IntuitionLabs. With 25+ years of experience in enterprise software development, I specialize in creating custom AI solutions for the pharmaceutical and life science industries.

Disclaimer

The information contained in this document is provided for educational and informational purposes only. We make no representations or warranties of any kind, express or implied, about the completeness, accuracy, reliability, suitability, or availability of the information contained herein. Any reliance you place on such information is strictly at your own risk. In no event will IntuitionLabs.ai or its representatives be liable for any loss or damage including without limitation, indirect or consequential loss or damage, or any loss or damage whatsoever arising from the use of information presented in this document. This document may contain content generated with the assistance of artificial intelligence technologies. AI-generated content may contain errors, omissions, or inaccuracies. Readers are advised to independently verify any critical information before acting upon it. All product names, logos, brands, trademarks, and registered trademarks mentioned in this document are the property of their respective owners. All company, product, and service names used in this document are for identification purposes only. Use of these names, logos, trademarks, and brands does not imply endorsement by the respective trademark holders. IntuitionLabs.ai is an AI software development company specializing in helping life-science companies implement and leverage artificial intelligence solutions. Founded in 2023 by Adrien Laurent and based in San Jose, California. This document does not constitute professional or legal advice. For specific guidance related to your business needs, please consult with appropriate qualified professionals.

Need help with AI?

© 2026 IntuitionLabs. All rights reserved.