California AI Transparency Act Effective 2 August 2026

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.

Latent disclosure
SB 942 / AB 853

Embed hidden, machine-readable provenance in AI-generated or AI-altered image, video and audio — detectable, standards-aligned and difficult to remove.

Public detection tool
Covered provider

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.

Manifest disclosure
User option

Offer users the option to apply a clear, conspicuous visible or audible label appropriate to the medium, difficult to remove where feasible.

Large-platform duties
From 1 Jan 2027

Large online platforms (>2M monthly users) must identify standards-based provenance, surface it to users and avoid knowingly stripping it.

Enforcement date 2 August 2026
Applies to Covered providers — public GenAI systems with more than 1M monthly users in California
Later obligations Large platforms (Jan 2027) · Capture devices (Jan 2028)
Penalties $5,000 per violation; each day may count as a separate violation for some entities
Scope AI-generated and AI-altered image, video and audio

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.

Mandatory

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
User option

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.

2 Aug 2026

Core provider duties

Latent disclosure, the public detection tool and API, and the optional manifest disclosure become operative.

1 Jan 2027

Large online platforms

Platforms with more than two million monthly users must identify and surface standards-based provenance and avoid stripping it.

1 Jan 2028

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.

Required latent field JPEG Trust assertion Purpose
Provider name cawg.identity Identifies the covered provider that generated the content
System name & version c2pa.actions › softwareAgent Records the generative AI system name and version
Creation date / time c2pa.actions Logs when the content was created or altered
Unique identifier c2pa.manifest urn The manifest URN provides the unique identifier
Tamper evidence c2pa.hash.data Binds the disclosure to the pixel data so tampering is detectable

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.

California AI Transparency Act profile checks
✓Signature chainCertificate chains to a trusted issuer
✓Provider nameThe covered provider's name is present
✓System & versionThe generative AI system name and version are recorded
✓TimestampCreation or alteration date and time are set
✓Unique identifierA unique content identifier is present
✓Pixel hashThe file has not been tampered with after signing

Who is responsible for what

The covered provider remains the regulated party. JPEG Trust supplies the technical components for the disclosure and verification duties.

Operate the public generative AI serviceBeing a covered provider with >1M monthly users is what triggers the duties
Covered provider
Run the public detection toolHost the free file/URL tool, the API and the feedback channel
Covered provider
Embed the latent disclosureProvider, system & version, timestamp and unique ID, signed
JPEG Trust supports this
Verify provenance and signaturesValidate the disclosure and return a privacy-filtered result
JPEG Trust supports this
Surface a provenance badgeShow a clear result with a detailed report on demand
JPEG Trust supports this

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.
Last legally reviewed: 30 June 2026 — verify against current law before relying on this.

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.