Compliance & Regulations

SBOM Formats Compared: CycloneDX vs SPDX in 2022

Two SBOM standards are competing for adoption. CycloneDX and SPDX take fundamentally different approaches to describing software components. Here's what matters when choosing between them.

Bob
DevSecOps Engineer
5 min read

The Executive Order 14028 on Improving the Nation's Cybersecurity, signed in May 2021, put Software Bills of Materials (SBOMs) on every security team's radar. But when it came time to actually generate and consume SBOMs, organizations immediately hit a practical question: which format should we use?

Two standards dominate the SBOM landscape: SPDX (Software Package Data Exchange), maintained by the Linux Foundation, and CycloneDX, maintained by OWASP. Both aim to solve the same fundamental problem — providing a machine-readable inventory of software components — but they approach it from different angles with different design philosophies.

SPDX: The License-First Standard

SPDX predates the current SBOM movement by nearly a decade. Originally created in 2010, it was designed primarily for license compliance in open source software. In August 2021, SPDX 2.3 was recognized as ISO/IEC 5962:2021, making it an international standard.

Strengths

License data model: SPDX has the most comprehensive license expression language of any SBOM format. The SPDX License List is the de facto standard for identifying open source licenses, and SPDX expressions can represent complex licensing scenarios like dual-licensed code.

LicenseInfoInFile: (MIT AND Apache-2.0) OR GPL-3.0-only

ISO standardization: Being an ISO standard carries weight in regulated industries and government procurement. If your compliance framework requires ISO-standardized formats, SPDX is the only option.

Relationship modeling: SPDX can express complex relationships between packages, files, and snippets. It supports relationship types like DEPENDS_ON, BUILD_TOOL_OF, and DESCRIBED_BY.

Limitations

Complexity: SPDX documents tend to be verbose. The format supports file-level and snippet-level analysis, which is powerful but produces large, complex documents that are harder to generate and consume.

Security focus is secondary: While SPDX 2.3 added vulnerability-related fields, security was not a primary design goal. Vulnerability and exploitability data feels bolted on rather than native.

Tooling fragmentation: SPDX supports multiple serialization formats (Tag-Value, JSON, XML, RDF, YAML), which means tooling needs to handle all of them. In practice, not all tools support all formats equally well.

CycloneDX: The Security-First Standard

CycloneDX was created in 2017 by OWASP specifically as a security tool. It was designed from the ground up to support vulnerability identification, license compliance, and software composition analysis (SCA).

Strengths

Security-native: CycloneDX was built for security use cases. Vulnerability data, exploitability information, and risk scoring are first-class citizens in the specification, not afterthoughts.

{
  "vulnerabilities": [{
    "id": "CVE-2021-44228",
    "source": { "name": "NVD" },
    "ratings": [{
      "score": 10.0,
      "severity": "critical",
      "method": "CVSSv31"
    }],
    "affects": [{
      "ref": "pkg:maven/org.apache.logging.log4j/log4j-core@2.14.1"
    }]
  }]
}

Simplicity: CycloneDX documents are more concise and easier to generate. The format focuses on components and their properties rather than trying to model every possible relationship.

VEX support: CycloneDX has native support for Vulnerability Exploitability eXchange (VEX) data, allowing producers to communicate whether a known vulnerability is actually exploitable in their specific context.

Broader scope: CycloneDX 1.4 (released in early 2022) expanded beyond software to include hardware components, services, and machine learning models — reflecting the reality that modern systems are composed of more than just code.

Limitations

No ISO standardization (yet): CycloneDX is an OWASP standard but lacks ISO recognition, which can be a blocker in some regulatory contexts.

Less mature license modeling: While CycloneDX supports license information, its license expression capabilities are less sophisticated than SPDX's.

Newer ecosystem: As a younger standard, CycloneDX has a smaller (though rapidly growing) ecosystem of tools and integrations.

Head-to-Head Comparison

| Feature | SPDX 2.3 | CycloneDX 1.4 | |---------|-----------|----------------| | Primary focus | License compliance | Security | | ISO standardized | Yes (ISO 5962) | No | | Vulnerability data | Basic | Comprehensive | | VEX support | Limited | Native | | License expressions | Excellent | Good | | File-level analysis | Yes | Limited | | Serialization | Tag-Value, JSON, XML, RDF, YAML | JSON, XML | | Tooling maturity | Moderate | Growing rapidly | | Government adoption | Strong (NTIA) | Growing | | Complexity | High | Moderate |

Which Should You Choose?

The answer depends on your primary use case:

Choose SPDX if:

  • License compliance is your primary concern
  • You operate in regulated industries requiring ISO standards
  • You need file-level or snippet-level analysis
  • Your procurement process mandates ISO-standardized formats

Choose CycloneDX if:

  • Security and vulnerability management is your primary concern
  • You need VEX capabilities
  • You want simpler tooling integration
  • You are building automated security workflows

Choose both if:

  • You can. Seriously. The best approach for many organizations is to generate SBOMs in both formats using tools like Syft, Trivy, or cdxgen, and consume them with format-agnostic platforms.

The Convergence Trend

In practice, the two formats are converging. SPDX is adding better security features. CycloneDX is improving its license modeling. Both communities are working toward interoperability, and tools increasingly support bidirectional conversion between formats.

The NTIA minimum elements for SBOMs are achievable with either format. The real differentiator is not which format you choose — it is whether you are generating SBOMs at all.

How Safeguard.sh Helps

Safeguard.sh supports both CycloneDX and SPDX formats natively. Our platform can ingest, generate, and convert between formats, ensuring you are never locked into a single standard. Whether your customers require SPDX for compliance or your security team prefers CycloneDX for vulnerability management, Safeguard.sh provides a unified view of your software supply chain regardless of the underlying format.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.