Content marking

Marking AI-generated content

Article 50(2) requires providers to mark AI-generated content so it is detectable as artificial. The right method depends on the medium. Here is our versioned best practice.

Images

MatureC2PA (Content Credentials)

Machine-readable: Embed a signed C2PA manifest with a c2pa.created action and IPTC digitalSourceType=trainedAlgorithmicMedia. This is machine-readable and travels with the file.

Disclosure: Also show a visible AI-generated label near the image for human viewers.

Tool: legalithm mark <image>

Video

SupportedC2PA (Content Credentials)

Machine-readable: Embed a C2PA manifest in the video container (MP4/MOV), same created action and source type as images. Re-encoding can strip it, so mark the final rendered asset.

Disclosure: Show a persistent visible label; for realistic (deepfake) footage the disclosure obligation is stricter.

Audio

EmergingC2PA (Content Credentials)

Machine-readable: Embed a C2PA manifest where the audio format supports it. Coverage across audio codecs is less mature than for images, so pair it with a disclosure.

Disclosure: Announce AI generation audibly or in the surrounding context (player, transcript, description).

Text

Disclosure onlyExplicit disclosure (no robust embedded standard)

Machine-readable: There is no widely adopted embedded provenance standard for plain text, and statistical watermarking is not yet reliable or standardized. Do not rely on an invisible mark.

Disclosure: Use an explicit, visible disclosure: an AI-generated label on the content, or a chatbot notice for conversational output (Legalithm generates both). For documents, add provenance in the file metadata.

Mark and verify from the command line

A C2PA manifest is metadata, and metadata is stripped by ordinary redistribution: re-encoding, resizing, screenshots, most social platforms. That is why the EU Code of Practice on marking AI-generated content asks for a layered approach rather than a single marker. Our free CLI applies both layers and reads them back.

npm i -g legalithm

# Both layers: pixel watermark, then a C2PA credential signed over it
legalithm mark hero.png --watermark

# Detection: read both layers back from any asset
legalithm verify hero.signed.png

Measured on a photographic reference, the watermark survives lossy JPEG down to quality 50, up- and down-scaling, greyscale conversion, and format changes that destroy the manifest entirely. It is defeated by heavy cropping and rotation.

Scope: this is resilience against ordinary distribution loss, not an adversarial guarantee. Generative regeneration attacks can remove pixel-level watermarks. Do not rely on it as proof against a motivated attacker.

CLI reference · Package on npm

See also: how classification works. Article references are to Regulation (EU) 2024/1689. Legalithm provides compliance information, not legal advice.