An example of how to comply with California's AI Transparency Act using JPEG Trust
California's AI Transparency Act (enacted as SB 942 and updated by AB 853) requires covered providers of generative AI to embed hidden, machine-readable provenance, offer visible labels, and run a public detection tool. JPEG Trust provides the provenance and verification layer.
What the law requires
The principal duties apply to a covered provider — a producer of a publicly accessible generative AI system available to people in California with more than one million monthly users. JPEG Trust itself is a compliance technology provider rather than the regulated party.
Embed hidden, machine-readable provenance in AI-generated or AI-altered image, video and audio — detectable, standards-aligned and difficult to remove.
Offer a free public tool that accepts a file upload or URL, returns provenance, exposes an API and avoids unnecessarily storing content or personal data.
Offer users the option to apply a clear, conspicuous visible or audible label appropriate to the medium, difficult to remove where feasible.
Large online platforms (>2M monthly users) must identify standards-based provenance, surface it to users and avoid knowingly stripping it.
Latent vs manifest disclosure
The Act draws a sharp line between the hidden, mandatory machine-readable disclosure and the visible label that providers must offer to users. JPEG Trust should support both — not hidden metadata alone.
Latent disclosure
Hidden, machine-readable provenance embedded in the file. It must carry four fields:
- The provider's name
- Generative AI system name and version
- Date and time created or altered
- A unique identifier
Manifest disclosure
A visible or audible label that the provider must offer users the option to apply.
- Clear and conspicuous, appropriate to the medium
- Difficult to remove where technically feasible
- Offered to the user, not the universal core requirement
Phased timeline
Obligations roll out in three waves. The provider duties begin alongside EU AI Act Article 50; platform and device duties follow.
Core provider duties
Latent disclosure, the public detection tool and API, and the optional manifest disclosure become operative.
Large online platforms
Platforms with more than two million monthly users must identify and surface standards-based provenance and avoid stripping it.
Capture devices
Certain capture devices first produced for sale in California must offer a default-enabled latent disclosure where technically feasible.
How JPEG Trust supports it
The four mandatory latent-disclosure fields map cleanly onto C2PA / CAWG assertions that JPEG Trust already embeds and verifies.
Python example: embed AI provenance
from jpegtrust import embed_image, create_profile, save_profile # 1. Create a California latent-disclosure profile profile = create_profile(template="ai-labelling", name="CA AI Transparency Act") save_profile(profile, "ca_transparency.yml") # 2. Embed the latent-disclosure fields. ca_metadata.json holds the # declaration assertions, for example a c2pa.actions.v2 action with # "action": "c2pa.created", # "when": "2026-08-02T14:30:00Z", # date and time # "softwareAgent": {"name": "AcmeDiffusion", "version": "3.2"} # system # and a cawg.identity or CreativeWork assertion naming the provider. embed_image( "ai_output.jpg", "ca_metadata.json", "disclosed_output.jpg", digital_source_type="trainedAlgorithmicMedia" )
Backing the public detection tool and API
A browser extension alone will not satisfy the detection-tool requirement. A covered provider also needs a public verification service with an API — which JPEG Trust can back, returning a privacy-filtered, machine-readable result.
# Covered providers must expose a public detection API. # JPEG Trust can back that endpoint with signature verification: jpegtrust verify disclosed_output.jpg ca_transparency.yml --format json # Returns the machine-readable verification report, including # "status", "ai_label" (e.g. "trainedAlgorithmicMedia"), # "passed", "failed", "passed_checks", "total_checks" and "c2pa"
How JPEG Trust can verify a disclosed image
Downstream consumers — platforms, newsrooms, regulators — can check an image against the California profile to confirm the latent disclosure is present and valid.
Who is responsible for what
The covered provider remains the regulated party. JPEG Trust supplies the technical components for the disclosure and verification duties.
Limitations
- JPEG Trust does not host the public-facing detection service or its retention and feedback policies — the provider must operate those.
- Training-data transparency under AB 2013 is a separate obligation that provenance on output images cannot satisfy.
- C2PA alignment is conceptually strong, but the statute does not name C2PA; do not claim automatic legal compliance.
- Whether a visible label is "clear and conspicuous" is a legal determination, not a technical one.
Get started
JPEG Trust is available as a Python package, a browser-based tool, and an HTTP API. Choose the integration that fits your workflow.
Python package
Install with pip. Embed, extract, and verify from any Python script or backend.
pip install jpegtrustAI Content Transparency Around the World
See how California's duties line up against the EU AI Act and China's labelling framework.
How the three regimes compare →AI labelling template
Pre-built trust profile covering the four mandatory latent-disclosure fields and signature checks.
View use cases →