Standards and Formats
Compares SPDX and CycloneDX, the two standard formats for expressing an SBOM in a machine-readable form.
Since an SBOM requires machine readability, a standard format is necessary. Among the three
formats specified by the US NTIA minimum elements, SPDX and CycloneDX split practical use between
them. The third, the SWID tag, is used mainly in asset management; its role as an identifier is
covered in Identifiers and Licenses.
SPDX
SPDX (System Package Data Exchange) is a project under the Linux Foundation. Version 2.2.1
became an international standard as ISO/IEC 5962:2021 in August 2021. It is worth noting that
the current ISO standard refers strictly to version 2.2.1.
The Linux Foundation released SPDX 3.0 on April 16, 2024, introducing a structure of
purpose-specific profiles. The approach layers Security, Build, Dataset, and AI profiles on top
of a core model. The AI profile carries model training and characterization information, the
Dataset profile carries data provenance and licensing, and the Security profile carries
vulnerability identification, severity, exploitability, and mitigation plans. A patch release,
3.0.1, followed in December of the same year. Whether SPDX 3.x is being re-standardized with ISO
had not been confirmed as of June 2026.
CycloneDX
CycloneDX is a full-stack BOM standard that originated at OWASP (Open Worldwide Application
Security Project). Its distinguishing feature is native support for Vulnerability Exploitability
eXchange (VEX) within the format itself. International standardization proceeded through Ecma
International’s technical committee TC54. Version 1.6 was published as ECMA-424 1st edition in
June 2024, adding a Cryptographic Bill of Materials (CBOM) and CycloneDX Attestations, and v1.7
was announced in October 2025 and standardized as ECMA-424 2nd edition in December 2025. v1.7
added post-quantum cryptography readiness, structured citations, and support for patent objects.
CycloneDX can express software (SBOM), hardware (HBOM), services (SaaSBOM), and machine learning
models (ML-BOM) all within a single format.
| SPDX | CycloneDX |
|---|
| Steward | Linux Foundation | OWASP / Ecma TC54 |
| International standard | ISO/IEC 5962:2021 (based on v2.2.1) | ECMA-424 1st edition (v1.6, 2024-06), 2nd edition (v1.7, 2025-12) |
| Latest specification | 3.0 (2024-04), 3.0.1 (2024-12) | 1.7 (2025-10) |
| Extension mechanism | Purpose-specific profiles (Security, Build, Dataset, AI) | Component types and auxiliary objects, native VEX |
| Strengths | License expression and legal compliance history | Vulnerability/VEX integration, security-operations friendly |
Table 1. Comparison of the two major SBOM standard formats (source: ISO/IEC 5962:2021,
Linux Foundation 2024, Ecma International ECMA-424. Retrieved 2026-06-14)
The two standards differ in design philosophy. SPDX extends its scope of application through
profiles, while CycloneDX expresses it through component types and auxiliary objects. Both,
however, target the same problem in that they carry component identification, licensing, and
dependency relationships. Whichever you choose, conversion tools exist between the two formats,
so you can choose based on the format your trading partners require and the format your own tool
chain supports well. If license compliance is the focus, SPDX is the familiar starting point; if
vulnerability operations is the focus, CycloneDX is.
Next, we look at the minimum elements that define what a format must
contain, and identifiers and licenses for consistently pointing to
components.
Sources
ISO/IEC (2021). ISO/IEC 5962:2021 — SPDX Specification V2.2.1. The Linux Foundation (2024).
SPDX 3.0 Release. https://www.linuxfoundation.org/press/spdx-3-revolutionizes-software-management-in-systems-with-enhanced-functionality-and-streamlined-use-cases.
Ecma International. ECMA-424 — CycloneDX Bill of Materials Specification.
https://ecma-international.org/publications-and-standards/standards/ecma-424/. CycloneDX (2025).
CycloneDX v1.7 Released. https://cyclonedx.org/news/cyclonedx-v1.7-released/. (All retrieved: 2026-06-14)
1 - Minimum Elements of an SBOM
Covers the data fields an SBOM must contain, from the NTIA 2021 minimum elements to the CISA 2025 revision draft.
Once a format is chosen, the next question is what that format must contain. The documents that
define this floor are the US Minimum Elements series. Though they are recommendations, they
function as the de facto standard for federal procurement, and SBOM requirements in the EU and
other jurisdictions largely reference this same framework.
Lineage: From NTIA 2021 to CISA 2025
The National Telecommunications and Information Administration (NTIA) published The Minimum
Elements For a Software Bill of Materials (SBOM) in July 2021, under the delegation of
Executive Order 14028. The document organized the minimum elements into three categories: the
data fields to track per component, automation support requiring a machine-readable format, and
practices and processes covering generation frequency, depth, and the like.
Stewardship of the community’s work then moved to the Cybersecurity and Infrastructure Security
Agency (CISA), and two lines of revision followed. One was the third edition (September 2024) of
Framing Software Component Transparency, a reference document that defines attributes, which
added License and Copyright Notice to the baseline attributes. The other was a revision of the
minimum elements document itself: CISA released 2025 Minimum Elements for a Software Bill of
Materials as a public comment draft in August 2025, with the comment period closing on
October 3, 2025. As of June 2026, this revision remains in draft status, and the date of a final
version has not been confirmed.
The Data Fields and Three Categories of NTIA 2021
The NTIA 2021 minimum elements set seven per-component data fields.
| Data field | Description |
|---|
| Supplier Name | The entity that supplied the component |
| Component Name | The name of the component or library |
| Version | The version identifier of the component |
| Other Unique Identifiers | Identifiers such as PURL, CPE |
| Dependency Relationship | The inclusion relationship with the parent component |
| Author of SBOM Data | The entity that generated this SBOM |
| Timestamp | The date and time of generation |
The three categories are as follows.
- Data fields: The seven items above — the basic information for tracking and identifying
components.
- Automation support: Specified SPDX, CycloneDX, and SWID as standard formats for automated
generation and machine readability.
- Practices and processes: Covers generation frequency, depth, handling of known unknowns,
distribution and delivery, access control, and how errors are accommodated.
What the CISA 2025 Draft Adds
The CISA 2025 minimum elements draft expanded the data fields to reflect the maturing state of
tooling. Four core elements were newly added.
| New field | Purpose |
|---|
| Component Hash | Ensures integrity and precise identification through a cryptographic hash |
| License | Primary data for tracking legal compliance |
| Tool Name | Records which tool generated it |
| Generation Context | Records at which stage of the lifecycle it was created |
Existing items were also revised. The roles of SBOM Author and Software Producer were
distinguished, “Other Unique Identifiers” was updated to “Software Identifiers,” and the access
control element, previously separate, was folded into the distribution and delivery item. The
trajectory of License — entering as a baseline attribute in Framing 3rd edition and hardening
into a data field in the 2025 draft — shows that the SBOM is establishing itself as primary data
for open source license compliance, beyond a security inventory. Behind adding Tool Name,
Generation Context, and Hash together lies the concern that an SBOM produced by an untrustworthy
tool cannot itself be trusted. Tool integrity is covered in
5. Tools and Automation.
Practical Recommendations
The minimum elements are, as the name says, a floor. Organizations can, and should, add fields
suited to their own purposes. Carrying CVE references and patch status for vulnerability
identification, SPDX license identifiers and copyright notices for license management, and
release and End-of-Life dates for lifecycle management, together in one SBOM, lets a single SBOM
answer multiple operational questions. If you are introducing an SBOM for the first time,
starting with the NTIA seven fields as a base but including the four new fields from the CISA
2025 draft — especially hash and license — from the outset saves the effort of rebuilding it
later.
Sources
NTIA (2021). The Minimum Elements For a Software Bill of Materials (SBOM).
https://www.ntia.gov/files/ntia/publications/sbom_minimum_elements_report.pdf. CISA (2024).
Framing Software Component Transparency, Third Edition.
https://www.cisa.gov/resources-tools/resources/framing-software-component-transparency-2024.
CISA (2025). 2025 Minimum Elements for a Software Bill of Materials (SBOM) (public comment
draft). https://www.cisa.gov/resources-tools/resources/2025-minimum-elements-software-bill-materials-sbom.
(All retrieved: 2026-06-14)
2 - Identifiers and Licenses
Covers the PURL, CPE, and SWID identifiers used to consistently point to components, and how to notate SPDX license identifiers.
If the same component is named differently across SBOMs, automated matching breaks down, because
there is no way for a machine to know that “Apache Tomcat,” “tomcat,” and “Apache Software
Foundation Tomcat” are the same thing. This is why an identifier system that consistently points
to components, and a convention for notating licenses with standard codes, are both necessary.
Three Identifiers: PURL, CPE, SWID
The three identifiers used together in practice serve different roles. They are not mutually
exclusive, so recording them together where possible is recommended.
| Identifier | Maintained by | Primary use |
|---|
| PURL (Package URL) | Community (purl-spec) | Precisely points to a component within a package manager ecosystem |
| CPE (Common Platform Enumeration) | NIST | Notates a product with a consistent name to look up its CVEs |
| SWID (Software Identification Tag) | ISO/IEC 19770-2 | Structured metadata for product, version, and producing entity |
Table 1. Identifiers used together in an SBOM (source: purl-spec, NIST NVD,
ISO/IEC 19770-2. Retrieved 2026-06-14)
A Package URL points to a component within a package manager ecosystem in the following format.
pkg:maven/org.apache.logging.log4j/log4j-core@2.14.1
pkg:npm/lodash@4.17.21
pkg:pypi/requests@2.31.0
After pkg: come the ecosystem type (maven, npm, pypi, etc.), namespace, name, and version.
Because the same component can be pointed to with the same string everywhere, it links
automatically to vulnerability databases and license databases.
CPE was developed by MITRE in the mid-2000s and is now maintained by NIST. It notates products
under a fixed naming rule and is used to look up the vulnerabilities (CVEs) corresponding to a
product. SWID is a tag format standardized as ISO/IEC 19770-2 that structurally describes a
product’s version and producing/distributing entity, and it is mainly used in asset management.
The CISA 2025 minimum elements draft updating “Other Unique Identifiers” to “Software
Identifiers” also reflects the maturing of this identifier ecosystem.
License Notation: SPDX License Identifiers
License management is one of the earliest use cases for an SBOM. Recording exactly which license
each component is distributed under is what prevents obligation violations and conflicts in
advance. Free-text descriptions cannot be matched automatically, so standard codes are used.
SPDX license identifiers assign each license a unique code such as
Apache-2.0, MIT, or GPL-3.0-only. When multiple licenses apply together, they are combined
with a license expression.
Apache-2.0 OR MIT
GPL-2.0-only WITH Classpath-exception-2.0
(MIT AND BSD-3-Clause)
OR indicates a choice among multiple licenses, AND indicates multiple licenses applying
simultaneously, and WITH indicates combination with an exception clause.
The principles to follow in practice are as follows.
- The license of every individual component, not just the license of the product as a whole,
must be visible.
- When encountering a license not on the standard list, assign it an identifier with a prefix
indicating its source (for example, a
LicenseRef- prefix) to track it. - If the license text has been trivially modified but its meaning has not changed materially,
use the same identifier as the original.
- Analyze license compatibility to identify in advance the conflicts that can arise when
combining components under different licenses.
Even when a license field is auto-extracted by a tool, its accuracy is a separate matter.
Precisely identifying non-standard licenses, handling dual licensing, and confirming compliance
with licenses that carry field-of-use restrictions remain the responsibility of people and
policy. The boundary of automation is covered in 5. Tools and Automation.
Sources
Package URL specification https://github.com/package-url/purl-spec. NIST.
Common Platform Enumeration (CPE) https://nvd.nist.gov/products/cpe. ISO/IEC 19770-2:2015.
SPDX License List https://spdx.org/licenses/. SPDX License Expressions
https://spdx.github.io/spdx-spec/v2.3/SPDX-license-expressions/. (All retrieved: 2026-06-14)