License Checker

Paste an SBOM or dependency license list, set allow/deny rules with SPDX IDs or license categories, and get a PASS/FAIL compliance report. Runs in your browser; nothing is uploaded.

Try:
Compliance report

About this tool

License Checker evaluates SPDX license metadata from an SBOM or dependency inventory against a policy you paste into the form. It is meant for quick CI policy design, PR review, and one-off audits where you already have the package list and want a deterministic PASS/FAIL report.

It accepts common inventory shapes:

Rules can be exact SPDX identifiers (MIT, Apache-2.0 WITH LLVM-exception) or license-family categories such as category:permissive, category:strong-copyleft, and category:network-copyleft. SPDX expressions are evaluated rather than string-matched: MIT OR Apache-2.0 passes if either branch is allowed, while MIT AND GPL-3.0-only requires both branches to be acceptable.

Worked example

Paste this dependency list:

[email protected]: MIT
[email protected]: GPL-3.0-only
[email protected]: MIT OR Apache-2.0
[email protected]: NOASSERTION

Set Allowed licenses/categories to:

MIT, Apache-2.0, category:public-domain

The report fails copyleft-lib, accepts the MIT OR Apache-2.0 expression, and warns about the missing license on mystery unless you change Missing license policy to allow or deny.

Limits and edge cases

FAQ

Can this scan my repository and discover dependency licenses?

No. This tool checks license metadata you already have. Generate a CycloneDX or SPDX SBOM with your build tooling, or paste a dependency list, then use this checker to apply allow/deny rules locally in the browser.

How do OR and AND SPDX expressions affect the verdict?

OR means the package offers alternatives, so the expression is accepted when at least one branch is allowed and not denied. AND means multiple obligations apply, so every branch must be acceptable. A deny rule always wins over an allow rule.

What is the difference between unlisted and unknown?

Unlisted means a package has a license, but it does not match any allow rule when an allow list is configured. Unknown means the package has no usable license metadata at all, such as NOASSERTION or an empty field. Each has its own allow/warn/deny policy.

Why use category rules instead of listing every SPDX ID?

Categories let you express a posture, such as allowing permissive licenses while denying strong and network copyleft families. You can still mix exact SPDX IDs with category tokens when a specific license needs special treatment.

Developer & Automation Access

Run it from the terminal

Same engine as this page, headless — via the gizza CLI:

gizza tool license-checker "[email protected]: MIT
[email protected]: GPL-3.0-only
[email protected]: MIT OR Apache-2.0
[email protected]: NOASSERTION"

New to the CLI? Get gizza →

Open it by URL

Pre-fill and auto-run this tool with query parameters — the names match the API/CLI:

https://gizza.ai/tools/license-checker/?dependencies=chalk%404.1.2%3A%20MIT%0Acopyleft-lib%402.0.0%3A%20GPL-3.0-only%0Adual%401.0.0%3A%20MIT%20OR%20Apache-2.0%0Amystery%400.1.0%3A%20NOASSERTION&input_format=auto&allow=MIT%2C%20Apache-2.0%2C%20category%3Apublic-domain&deny=category%3Astrong-copyleft%2C%20category%3Anetwork-copyleft%2C%20SSPL-1.0&exceptions=legacy-widget%2C%20my-gpl-tool%402.1.0&unlisted=deny&unknown=warn&validate_ids=true&include_allowed=true&output=text

Machine-readable descriptor: tool.json — title + parameters JSON Schema for agents.