scancode-toolkit
ScanCode is a tool to scan code for license, copyright, package and their documented dependencies and other interesting facts.
What it is and what it does
ScanCode Toolkit is a production-grade code scanning tool that identifies licenses, copyrights, package manifests, and dependencies across source and binary files. It performs full-text comparison against a database of license texts rather than relying on regex patterns alone, and is used by hundreds of software teams including the Eclipse Foundation, FSFE, and FSF. The toolkit runs as both a command-line tool and an embeddable library, with support for Windows, macOS, and Linux.
The package outputs scan results in multiple formats (JSON, YAML, HTML, CycloneDX, SPDX) and can be extended via plugins for custom scanners and parsers. It includes support for parsing package manifests and lockfiles to extract Package URLs and metadata. The project is actively maintained, heavily tested with over 30,000 tests per commit, and backed by European Commission NGI funding.
Use it for:
- Generate software bill of materials (SBOM) in SPDX or CycloneDX format for compliance and supply-chain transparency.
- Scan open-source dependencies and third-party code to identify license obligations before integration.
- Integrate into CI/CD pipelines to enforce license policies and detect copyright notices automatically.
- Extract package metadata and dependencies from manifests and lockfiles for dependency tracking.
- Audit binary packages and compiled artifacts for embedded licenses and copyright information.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
ScanCode Toolkit detects licenses, copyrights, package metadata, and dependencies in source code and binary files, and outputs results in multiple formats including JSON, YAML, HTML, CycloneDX, and SPDX.
Yes. ScanCode Toolkit is a mature, actively maintained tool with no known vulnerabilities, low install friction, and permissive licensing. It is the reference implementation for code scanning depth and accuracy, widely adopted by major organizations. Install it if you need license detection, copyright extraction, or SBOM generation; the 50 runtime dependencies are standard utilities and the command-line interface is straightforward to integrate into existing workflows.
Install
scancode-toolkit on PyPI
pip
pip install scancode-toolkituv
uv add scancode-toolkitpoetry
poetry add scancode-toolkitInstalling scancode-toolkit
Before you install
Low install friction with wheels available for Python 3.10 through 3.14. Active maintenance with last commit on 2026-08-07 and 2602 repository stars. Depends on 50 runtime packages including common utilities like click, lxml, and jinja2, but no compiled system dependencies are evident from the wheel availability.
License in practice
Licensed under Apache-2.0 with CC-BY-4.0 for reference datasets and multiple secondary permissive or copyleft licenses for third-party components. Permissive overall treatment allows commercial and proprietary use, though you should review the NOTICE file and .ABOUT files for third-party attribution obligations.
Quickstart
pip install scancode-toolkit
from scancode.cli import main
main(['--license', '--copyright', '/path/to/code'])
Requires Python 3.10 or later; the package is designed primarily as a command-line tool, so library usage patterns may require consulting the documentation.
Verify before relying
- Whether the package's 50 runtime dependencies introduce significant disk or memory overhead in production environments.
- Performance characteristics when scanning very large codebases or binary files.
- Accuracy of license detection compared to other SCA tools in your specific use case.
Package facts
| License | Apache-2.0 AND CC-BY-4.0 AND LicenseRef-scancode-other-permissive AND LicenseRef-scancode-other-copyleft (permissive) |
| Python support | supports the current Python release (>=3.10) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 50 — attrs, Beautifulsoup4, boolean.py, chardet, click, colorama, commoncode, container-inspector, cyseq, debian-inspector, dparse2, fasteners, fingerprints, ftfy, gemfileparser2, html5lib, importlib_metadata, intbitset, jaraco.functools, javaproperties, jinja2, jsonstreams, license_expression, lxml, MarkupSafe, multiregex, normality, packageurl_python, packvers, parameter-expansion-patched |
| Maintenance | actively maintained — 211 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 122,869/month — #11,928 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: scancode_toolkit-32.5.0-cp310-none-any.whl; scancode_toolkit-32.5.0-cp311-none-any.whl; scancode_toolkit-32.5.0-cp312-none-any.whl; scancode_toolkit-32.5.0-cp313-none-any.whl; scancode_toolkit-32.5.0-cp314-none-any.whl
Keywords: open source, scan, license, package, dependency, copyright, filetype, author, extract, licensing, scan, sca, SBOM, spdx, cyclonedx
Tags
More Software Development packages
Provides backported and experimental type hints…
permissive · top 100 on PyPI
numpyNumPy provides an N-dimensional array object…
permissive · top 100 on PyPI
fastapiFastAPI is a Python web framework for building…
permissive · top 100 on PyPI
annotated-docProvides a way to document function parameters,…
permissive · top 100 on PyPI
typerTyper builds command-line applications from…
permissive · top 1,000 on PyPI
distlibDistlib provides low-level packaging utilities…
permissive · top 1,000 on PyPI
cyseqcyseq provides a Cython-optimized…
permissive · top 15,000 on PyPI
typecode-libmagicProvides a prebuilt native libmagic binary and…
copyleft · top 15,000 on PyPI
extractcode-libarchiveProvides a prebuilt native libarchive binary as…
permissive · top 15,000 on PyPI
commoncodeCommonCode provides utility functions for…
unclear · top 15,000 on PyPI
extractcode-7zProvides a prebuilt native 7z binary as a…
copyleft · top 15,000 on PyPI
distro2sbomGenerates a Software Bill of Materials (SBOM)…
permissive · top 15,000 on PyPI
reusereuse is a command-line tool that validates and…
copyleft · top 15,000 on PyPI
typecodeDetects file types and MIME types using…
permissive · top 15,000 on PyPI
lib4sbomLib4sbom parses and generates Software Bill of…
permissive · top 15,000 on PyPI
flawfinderFlawfinder scans C/C++ source code to identify…
copyleft · top 15,000 on PyPI