Safeguard
Developer Tools•

SPDX package supplier versus download location: how to fill both

Supplier names who distributes the package. Download location says where it was available. Rules from SPDX 2.3.1, with credential handling and VCS syntax.

Safeguard Security Team
3 min read

In SPDX, package supplier names the organization or person who distributes the package. Download location says where the package could be fetched when the document was made. Supplier is optional, download location is required, and neither is a website name or a place for credentials.

Package supplier

The 2.3.1 specification describes the supplier as the party that actually distributes the package, which may differ from the original source. Allowed values are NOASSERTION, the word Person followed by a name, or the word Organization followed by a name, with an optional email.

The spec is firm that the supplier must be an organization or a recognized author, not a website. Its example: a code hosting site is not the supplier, the project's organization is.

Two practical outcomes:

  • For an open source package, the supplier is usually the project or the maintainers' organization, not the registry.
  • If you are not sure who distributes it, use NOASSERTION rather than guessing.

Download location

Download location is required. It holds a URL, a version control location, NONE, or NOASSERTION. It describes where the package was available at the time the document was created.

For version control locations, the spec uses a prefix such as git, hg, svn or bzr followed by a plus sign, then the transport, host, optional path, and an optional revision and sub path. It recommends fully qualified references such as a tag reference over a bare name, since names can move.

Never put credentials here

The spec states that usernames and passwords in the host part are not supported. Handle credentials outside the SPDX document. This matters because SBOMs get shared. A token in a URL turns a bill of materials into a leak.

Choosing between NONE and NOASSERTION

For download location, NONE means no location exists at all. NOASSERTION means you did not determine it. A private internal package that is not distributed anywhere might legitimately use NONE. A package you simply did not trace should use NOASSERTION.

A short checklist

  1. Supplier: organization or person, or NOASSERTION. Never a website.
  2. Download location: a pinned reference such as a tag or commit where possible.
  3. No credentials in any URL.
  4. Use NONE only if you can defend that no location exists.
  5. Compare against the 2026 producer field if you map data between formats. The 2026 elements rename supplier name as component producer.

For how this relates to component identity more broadly, see what a package URL is.

Quick check

Can the supplier be the registry I downloaded from?

Not if the registry is only a hosting site. The spec says the supplier must be an organization or a recognized author, not a website.

Is download location optional?

No. It is a required field, but its value may be NONE or NOASSERTION.

Sources

Last reviewed: 19 October 2026.

Never miss an update

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

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.