Comparison
Software composition analysis (SCA) tools compared
Software composition analysis (SCA) tools find the open-source components in your code and flag known vulnerabilities and license risks. Here are nine commercial SCA tools and four free ones, how they differ, and where CRACI, which records the build instead of scanning it, fits next to them.
Updated
Who this is for
This page is for teams choosing an SCA tool, or checking whether the one they have still fits. We build CRACI, so weigh that in. Every claim about another product comes from that vendor's own documentation, and most products have a longer CRACI vs X page.
One thing up front: CRACI is not an SCA scanner in the classic sense. It is a recorder. It runs your GitHub Actions jobs and records what they fetched. It is meant to sit next to an SCA tool, not to replace one.
What SCA tools do
Almost every SCA tool follows the same steps. Where they differ is how well they do each one.
- Identify components. Read manifests and lockfiles, analyze source code, or fingerprint binaries to list direct and transitive dependencies.
- Match vulnerabilities. Check each component and version against databases such as the NVD, the GitHub Advisory Database and OSV.
- Check licenses against your policy.
- Prioritize. Rank findings by severity, exploit data such as EPSS, and in many tools reachability.
- Fix. Suggest upgrades or open pull requests.
- Monitor and report. Alert on new vulnerabilities and export an SBOM.
Step one decides everything after it. A component the tool never identified cannot be matched, prioritized or listed in the SBOM, which is why the first row of the tables below asks where each tool's component list comes from. For the basics, see what software composition analysis is and how it differs from SAST.
How to choose
A few questions separate these tools faster than feature lists do:
- Before merge or after release? SCA tools shine on pull requests and in the IDE. If your hard question is what went into a shipped release, you need a record of the build.
- Dependencies only, or your own code too? Most of these products now bundle SAST. Some add secrets, IaC, containers or cloud.
- How much alert noise can you absorb? Reachability analysis, which checks whether your code can call the vulnerable function, is where several vendors compete.
- Do you need to stop bad packages at the door? Repository firewalls and package proxies block them before download. Scanners only report them afterward.
- Which CI do you run? Most of the SCA tools here fit many CI systems. CRACI supports GitHub Actions only today, with GitLab CI and Jenkins on the roadmap.
- Does it cover your languages and build systems? Check every ecosystem you ship, including monorepos and the parts of your build that no lockfile describes.
- What do you have to hand over? If customers or the EU Cyber Resilience Act ask for an SBOM per release, check the formats, which plan includes export, and whether the tool tells you when the list is incomplete.
- How do you want to pay? Per developer, per committer, per contributor, per plan or by quote.
At a glance
Ten columns do not fit one table, so the products are split in two. Both tables use the same rows. "Not stated" means the vendor pages we cite do not say either way. Pricing is as of September 2026.
Enterprise SCA and AppSec suites
| Capability | CRACI | Sonatype | Black Duck | Mend.io | Checkmarx One |
|---|---|---|---|---|---|
| Records dependencies as the build runs | Package-aware proxy on the runner | Scans build output | Scans code and binaries | Scans after the build | Uploaded source archive |
| Build network egress policy | Fails closed | ||||
| Signed artifact provenance | No signed provenance | Not stated | Not stated | Not stated | Not stated |
| SBOM export | Completeness stated | ||||
| Continuous monitoring | SBOM Manager | Not stated | |||
| Reachability prioritization | |||||
| SAST for your own code | Not stated | Coverity | Mend SAST | ||
| License scanning or policy | License policy can block a build | ||||
| Malicious package blocking | Package blocklists | Repository Firewall | Flags them | Detects them | Can block builds |
| CI beyond GitHub Actions | GitLab CI and Jenkins | ||||
| Pricing | $0.002 per vCPU-minute ($0.004 for 2 vCPU), metered per second; no monthly fee | Quote; Firewall Pro from $4,800 per year | Quote | Up to $1,000 per developer per year | Quote |
- Included
- Partly
- Not included
- On the roadmap
Developer-first and platform tools
| Capability | CRACI | Snyk | Endor Labs | Semgrep | GitHub (GHAS) | Aikido |
|---|---|---|---|---|---|---|
| Records dependencies as the build runs | Package-aware proxy on the runner | Manifests and lockfiles | Analyzes source code | Reads dependencies from code | Manifests plus submitted data | Manifests and lockfiles |
| Build network egress policy | Fails closed | |||||
| Signed artifact provenance | No signed provenance | Not stated | endorctl | Not stated | Artifact attestations | Not stated |
| SBOM export | Completeness stated | Enterprise plans only | CycloneDX | SPDX | ||
| Continuous monitoring | Not stated | Dependabot alerts | Not stated | |||
| Reachability prioritization | Function level | Not stated | ||||
| SAST for your own code | Snyk Code | AI SAST | Semgrep Code | CodeQL | ||
| License scanning or policy | License policy can block a build | Not stated | Not stated | |||
| Malicious package blocking | Package blocklists | Not stated | Package Firewall | Detects them | Not stated | Safe Chain |
| CI beyond GitHub Actions | GitLab CI and Jenkins | Not stated | ||||
| Pricing | $0.002 per vCPU-minute ($0.004 for 2 vCPU), metered per second; no monthly fee | Free tier; Team from $25 per month | Free Developer tier; paid tiers via sales | Free up to 10 contributors; Teams from $30 per contributor per month | $19 and $30 per committer per month | Free plan; paid from $350 per month |
- Included
- Partly
- Not included
- On the roadmap
The tools, one by one
CRACI
CRACI is a recorder, not a scanner. Your GitHub Actions jobs run on CRACI runners, and a package-aware proxy records what each job fetches, with dependency evidence carried through CI caches. From that record it produces a CycloneDX or SPDX SBOM that states its own completeness, keeps re-evaluating monitored SBOMs, routes each finding to the team that owns the fix, and can block a build on a license. Best for teams that must prove what went into each release. Watch out: no SAST, secrets, IaC scanning or reachability, and Linux jobs on GitHub Actions only today (other CI systems, Windows and macOS are on the roadmap). Build-time SBOM generation
Snyk
Snyk is a developer-first platform: SCA plus Snyk Code (SAST), Snyk Container and Snyk IaC, running in the IDE, the
CLI, SCM integrations and CI. It prioritizes dependency findings with reachability, exploit maturity, EPSS and CVSS,
and opens upgrade pull requests. Best for teams that want developers fixing issues from the editor onward. Watch
out: its dependency tree comes from manifests and lockfiles, and the snyk sbom command is available
only on Enterprise plans.
CRACI vs Snyk
Sonatype
Sonatype is built around open-source governance. Lifecycle applies security and license policies (its license policies span more than 2,000 licenses), uses Advanced Binary Fingerprinting on what the build produced, and opens Golden Pull Requests. Repository Firewall quarantines components before they enter your repositories, and SBOM Manager monitors imported SBOMs. Best for large organizations that want a gate at the repository. Watch out: packaging is changing, and new customers now buy Sonatype Guide. CRACI vs Sonatype
Black Duck
Black Duck finds open source wherever it hides: package manager scans, signature and snippet scanning, and binary analysis of executables and firmware without source code. Its KnowledgeBase tracks more than 2,750 licenses, and Coverity adds SAST across 22 languages. Best for code with a long history of copied or vendored open source, and for checking third-party binaries. Watch out: pricing is quote-based, and its Fix PRs cover direct dependencies. CRACI vs Black Duck
Mend.io
Mend AppSec pairs Mend SCA, which traces the call graph through transitive dependencies, with Mend SAST for more than 30 languages. Mend Renovate keeps dependencies current across 90 or more package managers, and the Renovate CLI is free. Best for teams with a large backlog who want prioritization and automated updates together. Watch out: Mend's own docs recommend scanning after the build step, so accuracy depends on where in the pipeline you run it. CRACI vs Mend.io
Checkmarx One
Checkmarx One is a broad AppSec platform: SAST, SCA, secrets, IaC, API security, DAST, containers and malicious package protection, with an ASPM layer on top. Its SCA uses exploitable path analysis, and policies can break builds. Best for organizations that want one vendor for application security testing. Watch out: the GitHub Action uploads a zip archive of your source for scanning (SCA Resolver can analyze on premises instead), and pricing is by quote. CRACI vs Checkmarx One and Checkmarx alternatives
Endor Labs
Endor Labs is built around function-level reachability, tracing code paths from your source to the vulnerable function in direct and transitive dependencies. It adds upgrade impact analysis, Endor Patches that backport fixes, AI SAST, secrets and container scanning, a Package Firewall and artifact signing. Best for teams drowning in dependency alerts. Watch out: where a full build is not possible, it falls back to coarser dependency-level reachability. CRACI vs Endor Labs
Semgrep Supply Chain
Semgrep Supply Chain is the SCA product in Semgrep's AppSec platform, next to Semgrep Code (SAST) and Semgrep Secrets. It classifies findings as reachable, conditionally reachable or unreachable, and Semgrep says this reduces false positives by up to 98%. Where lockfiles are incomplete, Dynamic Dependency Resolution combines manifest parsing with the package manager to fill in the list. It also checks licenses against your policy, detects malicious dependencies, opens upgrade pull requests and exports CycloneDX SBOMs. Best for teams that already write Semgrep rules, or small teams: the free plan covers up to 10 contributors. Watch out: paid products are priced separately, from $30 per contributor per month for Supply Chain on the Teams plan.
GitHub Advanced Security
GitHub now sells Secret Protection and Code Security (CodeQL, Copilot Autofix, dependency review) on top of the dependency graph and Dependabot, which every GitHub plan includes. Artifact attestations add signed provenance at SLSA v1.0 Build Level 2. Best for teams already on GitHub who want security inside pull requests. Watch out: the dependency graph describes the repository's manifests and lock files, and private repositories need a Team or Enterprise plan for the paid products. CRACI vs GitHub Advanced Security
Aikido
Aikido puts SCA, SAST, secrets, IaC, cloud posture, containers, DAST and license scanning behind one dashboard. Its SCA uses function-level reachability, AutoFix opens pull requests, and the free Safe Chain tool blocks known malware in npm and PyPI installs. Best for smaller teams that want broad coverage quickly, or SOC 2 and ISO 27001 reports from AppSec findings. Watch out: those compliance reports start on the Advanced plan, and dependencies come from manifests and lockfiles. CRACI vs Aikido
Free and open-source SCA tools
If budget is the constraint, four open-source tools cover the core of SCA. All are free under Apache-2.0. You run them yourself, so monitoring, triage and reporting are yours to build.
| Capability | What it scans | Vulnerability data | Good to know |
|---|---|---|---|
| Trivy | Images, filesystems, repositories, VM images, Kubernetes | Vendor advisories, GitHub Advisory Database, NVD | Also finds IaC misconfigurations, secrets and licenses |
| Grype | Images, filesystems and SBOMs | Its own database, downloaded locally | EPSS, KEV and risk scoring; OpenVEX filtering; fails builds with --fail-on |
| OSV-Scanner | Lockfiles, container images, SBOMs, vendored C and C++ code | OSV.dev | Optional call analysis; guided remediation for npm and Maven |
| OWASP Dependency-Check | Project dependencies, fully supported for Java and .NET | NVD, matched by CPE | CLI, Maven, Gradle and Ant plugins, and CI integrations |
Trivy, from Aqua Security, reads lock files in a repository and installed package metadata in an image, and writes CycloneDX or SPDX SBOMs. CRACI vs Trivy. Grype, from Anchore, scans what its companion Syft lists and runs entirely locally apart from downloading its database. CRACI vs Syft and Grype. OSV-Scanner, from Google, is the official client for the OSV.dev database and supports 19 or more lockfile types. OWASP Dependency-Check identifies components by CPE and matches them against the NVD, which suits Java and .NET projects best. For how the free SBOM generators behind these scanners read a repository, and why they disagree, see what open source SBOM generators miss.
How CRACI fits
Every other tool above is a scanner. It reads a manifest, a lockfile, a source archive or a binary and works out what is
inside. CRACI is a recorder. Your GitHub Actions jobs run on CRACI runners (change runs-on to
craci), and a package-aware proxy records what each job fetches from npm, PyPI, RubyGems, Cargo, Go,
Nix, OCI, apt, apk and Git sources, plus download presets. Dependency evidence travels with CI caches.
CRACI's inventory view shows exactly which software versions are deployed to which products, globally.
From that record CRACI produces a CycloneDX or SPDX SBOM that states its own completeness per job and per cache. It enforces an egress policy that fails closed, returns SBOMs, network traces and provenance through its API, keeps re-evaluating monitored SBOMs, and lets security teams triage findings and route each one to the team that owns the fix. Every component carries its declared license, so copyleft and other restrictive licenses show up before you ship, and license policy can block a build on a license. It automates a significant part of the software supply chain visibility and evidence that companies need for their wider CRA compliance process.
CRACI is not the right choice when:
- you need SAST, secrets or IaC scanning (it does none of them),
- reachability is your priority (CRACI does not offer it), or you need package blocklists today (on the roadmap),
- your pipelines run on GitLab, Jenkins or CircleCI, or need Windows or macOS runners (CRACI runs Linux jobs on GitHub Actions today; other CI systems, Windows and macOS are on the roadmap).
In those cases pick from the tools above. If you also need to prove what went into each release, run CRACI as the runner and keep your SCA on pull requests. For the scanner versus recorder argument in more depth, see CRACI vs SCA and SBOM tools and SBOM tools compared, read about build-time SBOM generation and pricing, or book a demo to see the record of a GitHub Actions build.
CRACI compared with each tool
- CRACI vs Snyk What your manifests declare vs what your build did.
- CRACI vs Aikido A broad AppSec suite vs deterministic build evidence.
- CRACI vs Sonatype Repository gatekeeping and SCA vs build evidence.
- CRACI vs Black Duck Code, snippet and binary scanning vs build evidence.
- CRACI vs Mend.io Dependency scanning vs dependency observation.
- CRACI vs Checkmarx AppSec testing platform vs build-time evidence.
- CRACI vs Endor Labs Reachability analysis vs build observation.
- CRACI vs JFrog Artifact management vs per-build evidence.
- CRACI vs GitHub Advanced Security Code, secret and dependency scanning vs build evidence.
- CRACI vs Dependabot Version updates vs knowing what your builds used.
Side by side
Several tools on one page, for when you are choosing a category, not one product.
SCA tools FAQ
Short answers to common questions about software composition analysis
What is an SCA tool?
A software composition analysis (SCA) tool finds the open-source and third-party components in your software, checks them against vulnerability databases such as the NVD, the GitHub Advisory Database or OSV, and flags known vulnerabilities and license risks. Most SCA tools also prioritize findings, suggest or open upgrade pull requests, export an SBOM and keep monitoring for new vulnerabilities.
What is SCA scanning?
An SCA scan reads a project's manifests, lockfiles, installed packages or a container image, works out which components are in it, and matches them against vulnerability and license data. Most tools run it on every pull request and on a schedule, so new advisories for versions you already use are caught too.
What is the difference between SCA and SAST?
SAST analyzes the code your team writes for flaws such as injection bugs. SCA analyzes the components you depend on for known vulnerabilities and license issues. Most of the commercial tools on this page now sell both, but they answer different questions.
What is the difference between SCA and an SBOM?
SCA is the process of finding and assessing components. An SBOM is a machine-readable list of those components, usually in CycloneDX or SPDX format. Most SCA tools can export one, and the SBOM is only as complete as the method that produced it: a manifest scan, a binary scan or a record of the build.
What are the best free SCA tools?
Trivy, Grype, OSV-Scanner and OWASP Dependency-Check are free and open source. Among commercial tools, Semgrep has a free plan for up to 10 contributors, Snyk, Endor Labs and Aikido have free tiers, and Dependabot alerts come with every GitHub plan. Free tools usually leave monitoring, triage and reporting to you.
What is reachability analysis in SCA?
Reachability analysis checks whether your code can actually call the vulnerable function in a dependency, so findings that cannot be reached drop down the list. Snyk, Endor Labs, Mend, Checkmarx, Semgrep, Aikido, Sonatype and Black Duck all offer a form of it. CRACI does not.
Is CRACI an SCA tool?
Not in the classic sense. SCA tools scan files to work out what is inside. CRACI is a recorder: it runs your GitHub Actions jobs and records the packages each job actually fetched, produces a CycloneDX or SPDX SBOM that states its own completeness, and keeps monitoring it for new vulnerabilities. Teams run it next to an SCA tool that covers pull requests and SAST.
See what your builds actually fetched
Book a demo to compare the SBOM CRACI records during a GitHub Actions build with the one your SCA tool produces.
Book a demo