Skip to main content

ISCC Software Development Kit (iscc-sdk)

Build Version Coverage Quality Downloads License Ask DeepWiki

A comprehensive Python toolkit for creating and managing ISCC (International Standard Content Code) identifiers for digital media assets.

Overview

ISCC Architecture

What is an ISCC?

The International Standard Content Code (ISCC) is a content-dependent, similarity-preserving identifier and fingerprint system for digital content, standardized as ISO 24138:2024.

ISCCs are neither manually nor automatically assigned but are derived from the digital content itself. Generated algorithmically using various hash algorithms, ISCCs create composite identifiers with similarity-preserving properties (soft hashes) that can be independently derived by unrelated parties from the same media asset.

Digital content is dynamic - continuously re-encoded, resized, and re-compressed as it travels through complex networks. The ISCC remains robust across these transformations while preserving estimates of data, content, and metadata similarity.

The component-based structure of ISCC identifies content at multiple levels of abstraction, creating a multi-layered fingerprint. These components work together to create a robust, similarity-preserving identifier that remains stable despite modifications to the underlying digital asset. With this multi-layered approach, the ISCC can track content throughout its lifecycle, even as it's re-encoded, resized, or re-compressed.

Each component is self-describing, modular, and can be used separately or together, enabling ISCCs to support numerous digital asset management use-cases across all domains concerned with producing, processing, and distributing digital information (science, journalism, books, music, film, etc.):

  • Content deduplication and discovery
  • Database synchronization and indexing
  • Integrity verification and timestamping
  • Versioning and data provenance tracking
  • Similarity clustering and matching
  • Anomaly detection in content collections
  • Usage tracking and royalty allocation
  • Fact-checking and content verification
  • Interoperability between different systems and actors
  • Association with higher-level identifiers (work/product identifiers)

What is iscc-sdk?

iscc-sdk builds on top of iscc-core to provide high-level features for generating and handling ISCC codes across different media types. It serves as a complete toolkit for implementing ISCC-based workflows in Python applications.

Features

  • Comprehensive Media Support: Process text, image, audio, and video files
  • Mediatype Detection: Automatically identify file formats
  • Metadata Management: Extract and embed metadata across different file formats
  • Content Processing: Handle mediatype-specific content extraction and normalization
  • Rich CLI: Command-line interface for easy integration into workflows
  • Cross-Platform: Works on Windows, macOS, and Linux
  • Built-in Tools: Includes necessary binaries for media processing
  • Standards Compliant: Build on top of the ISO 24138:2024 reference implementation

Requirements

  • Python 3.11 to 3.14 on 64-bit systems
  • Supported platforms: Windows, macOS, Linux

Installation

Using pip

pip install iscc-sdk

Using uv

uv add iscc-sdk

Usage

Python API

Create an ISCC-CODE for a media file:

import iscc_sdk as idk

# Generate a complete ISCC code
iscc_meta = idk.code_iscc("/path/to/mediafile.jpg")
print(iscc_meta.iscc)  # Full ISCC code
print(iscc_meta.json(indent=2))  # All metadata as JSON

# Generate specific ISCC components
meta_code = idk.code_meta("/path/to/mediafile.jpg")
content_code = idk.code_content("/path/to/mediafile.jpg")
data_code = idk.code_data("/path/to/mediafile.jpg")
instance_code = idk.code_instance("/path/to/mediafile.jpg")

# Process specific media types
text_code = idk.code_text("/path/to/document.pdf")
image_code = idk.code_image("/path/to/image.png")
audio_code = idk.code_audio("/path/to/audio.mp3")
video_code = idk.code_video("/path/to/video.mp4")

Extract and embed metadata:

import iscc_sdk as idk
from iscc_schema import IsccMeta

# Extract metadata
metadata = idk.extract_metadata("/path/to/mediafile.jpg")

# Create custom metadata
custom_meta = IsccMeta(
    name="My Asset Title",
    description="Description of the asset",
    creator="Creator Name",
    license="https://creativecommons.org/licenses/by/4.0/",
)

# Embed metadata into a copy of the file
new_file = idk.embed_metadata("/path/to/mediafile.jpg", custom_meta)

Command Line Interface

The SDK includes a command-line interface called iscc-sdk.

Create an ISCC code for a single file:

iscc-sdk create /path/to/mediafile.jpg

Process multiple files in a directory:

iscc-sdk batch /folder_with_media_files

Install required binaries:

iscc-sdk install

Run self-tests:

iscc-sdk selftest

Documentation

For complete documentation, visit https://sdk.iscc.codes

Project Status

The ISCC is an official standard published as ISO 24138:2024 - International Standard Content Code within ISO/TC 46/SC 9/WG 18.

Note: The iscc-sdk library and the accompanying documentation are under active development. API changes and other backward incompatible changes are to be expected until a v1.0 stable release.

Development

Setup

# Install dependencies
uv sync

# Install pre-commit hooks (using prek, a fast Rust-based drop-in replacement)
uv tool install prek
prek install
prek install --hook-type pre-push

Quality Gates

Pre-commit hooks run automatically via prek:

On commit (fast, auto-fix):

  • File hygiene (line endings, trailing whitespace, EOF)
  • Config validation (YAML, JSON, TOML)
  • Markdown formatting (mdformat)
  • Ruff linting with auto-fix
  • Ruff formatting

On push (thorough):

  • Type checking (zuban)
  • Security scan (Ruff S rules)
  • Complexity check (Ruff C901)
  • Tests with 100% coverage

Run all hooks manually:

prek run --all-files                # pre-commit hooks
prek run --all-files --hook-stage pre-push  # pre-push hooks

Testing

uv run pytest --cov=iscc_sdk --cov-fail-under=100 -p no:warnings

Contributing

Contributions are welcome! Here's how you can help:

  1. Issues: Report bugs or suggest features via the issue tracker
  2. Pull Requests: Submit PRs for bug fixes or new features
  3. Discussion: For significant changes, please open an issue first to discuss your plans
  4. Testing: Please make sure to update tests as appropriate

Join our developer chat on Telegram at https://t.me/iscc_dev.

License

This project is licensed under the Apache 2.0 License - see the LICENSE file for details.

Release files for iscc-sdk 0.9.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for iscc-sdk 0.9.5
File Size Uploaded
iscc_sdk-0.9.5.tar.gz 48.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for iscc-sdk 0.9.5
File Interpreter ABI Platform
iscc_sdk-0.9.5-py3-none-any.whl Python 3 none any Details

Total release size: 105.4 kB

Release files / iscc_sdk-0.9.5.tar.gz

Download URL iscc_sdk-0.9.5.tar.gz
Size 48.3 kB
Tags Source
SHA-256 checksum
How to use checksums
4b4c4c9cc7900364127159cb423063a51a750b866a043db92dfc55cc5c89b60b
BLAKE2b-256 checksum
How to use checksums
ddb9956fe7d5c7d9f9eb3b778a1288c6d5c7d351b68644d20d48e9d3dcf983a3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 30, 2026.

Transparency log

Release files / iscc_sdk-0.9.5-py3-none-any.whl

Download URL iscc_sdk-0.9.5-py3-none-any.whl
Size 57.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
fed5c24d17d55cb9cae9452e33517780a5f075447365078a10e8dc5ac4750908
BLAKE2b-256 checksum
How to use checksums
569b097a5998d64c26c843d45a107378c7f3a342bfa244df1c5959b17a24b0e9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 30, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.9.5 This release

2 release files

0.9.4

2 release files

0.9.3

2 release files

0.9.2

2 release files

0.9.1

2 release files

0.9.0

2 release files

0.8.9

2 release files

0.8.8

2 release files

0.8.7

2 release files

0.8.6

2 release files

0.8.5

2 release files

0.8.4

2 release files

0.8.3

2 release files

0.8.2

2 release files

0.8.1

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.2

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.9

2 release files

0.5.8

2 release files

0.5.7

2 release files

0.5.6

2 release files

0.5.5

1 release file

0.5.4

1 release file

0.5.3

1 release file

0.5.2

1 release file

0.5.1

1 release file

0.5.0

1 release file

0.4.9

1 release file

0.4.8

1 release file

0.4.7

1 release file

0.4.6

1 release file

0.4.5

1 release file

0.4.4

1 release file

0.4.3

1 release file

0.4.2

1 release file

0.4.1

1 release file

0.4.0

1 release file

0.3.0

1 release file

0.2.0

1 release file

0.1.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page