AIPM 1.1 Specification

AI Provenance Mark · Version 1.1 · Published May 2026

View AIPM 1.0 Specification →

Overview

The AI Provenance Mark (AIPM) is an open, vendor-neutral specification for disclosing AI involvement in content creation. It is intentionally minimal, web-native, and extensible.

AIPM 1.1 adds compression, Show mode, Unicode support, Content URL and Full Context Document URL fields, and switches to hash-fragment URLs for improved privacy and caching. It is fully backwards compatible with AIPM 1.0 — existing QR codes continue to work unchanged.

Core Concept

AIPM combines three elements:

  1. A stable visual mark centered within a QR code.
  2. A QR code encoding an HTTPS URL with provenance metadata in the hash fragment.
  3. A human-readable provenance page that renders the metadata client-side — no server lookup required.

URL Schema

AIPM 1.1 encodes all metadata in the URL hash fragment (#). Hash fragments are processed entirely by the browser; they are never sent to any server. This improves privacy and allows the display page to be cached aggressively regardless of how many unique QR codes exist.

Plain (uncompressed) format

https://ai-pm.pages.dev/1.1/aipm/#v=1.1&model=Claude+Sonnet+4.6&role=prompted%2Breviewed&date=2026-05-02&ctx=Blog+post+draft

Compressed format

When context exceeds ~200 characters, the generator automatically switches to the compressed z param. All metadata is packed into a single JSON object, compressed with deflate-raw, and encoded as base64url.

https://ai-pm.pages.dev/1.1/aipm/#z=<base64url-encoded-compressed-payload>

Parameters

ParamDescriptionRequiredNew in 1.1
v AIPM version — must be 1.1 Yes
model AI model or system name (e.g. Claude Sonnet 4.6, GPT-4o) Recommended
role Human role — see values below Yes
date ISO 8601 date of generation (YYYY-MM-DD) Recommended
ctx Short context or purpose description (plain text, ≤200 chars before auto-compression) Optional
z Compressed payload — deflate-raw compressed, base64url-encoded JSON containing all fields. Mutually exclusive with individual params. Optional
show Show mode flag — 1 when the QR mark displays an abbreviated role on line 3 Optional
src Content URL — link to the artifact this AIPM mark applies to Optional
doc Full Context Document URL — link to a hosted document with full provenance detail (prompt, methodology, session log). Choose durable hosting. Optional

Role Values

ValueShow abbrev.Description
promptedPHuman wrote the prompt; AI generated content; no modification.
reviewedRAI generated content; human reviewed before use.
editedEAI generated content; human made substantive edits.
prompted+reviewedP+RHuman wrote the prompt and reviewed the AI output.
prompted+editedP+EHuman wrote the prompt and edited the AI output.
supervisedSAI worked autonomously under human oversight and direction.

Show Mode

Show mode is an optional feature that embeds an abbreviated human role directly in the QR code's center mark, making the level of AI and human involvement visible at a glance without scanning.

When Show mode is active, the center mark displays three lines:

AIPM       ← line 1: mark identifier (unchanged)
1.1 S      ← line 2: version + "S" (Show mode indicator)
P+R        ← line 3: abbreviated human role

Show mode is indicated by show=1 in the URL. The display page shows a "S · P+R" badge next to the AIPM version badge when Show mode is active.

See the Visual Mark Specification for SVG downloads of all Show mode variants.

Compression

The generator automatically switches from individual params to the compressed z param when the context field exceeds ~200 characters. The z value is produced by:

  1. Serializing all metadata as a JSON object
  2. Encoding the JSON string to UTF-8 bytes using TextEncoder
  3. Compressing with CompressionStream('deflate-raw') (browser-native, no library)
  4. Encoding the compressed bytes as base64url (URL-safe base64: +-, /_, no padding)

The display page reverses this process using DecompressionStream('deflate-raw') and TextDecoder. The display page checks for z first, then falls back to individual params — ensuring full backwards compatibility with AIPM 1.0 QR codes.

QR Code Capacity

The hard limit is 1,273 bytes for QR Version 40 at Level H error correction (required for logo overlay). All other URL limits — browser, CDN, server — are far above this.

ModeEnglish proseCJK (Chinese/Japanese/Korean)
Uncompressed (ctx) ~1,160 chars ~128 chars
Compressed (z) ~2,100–2,600 chars ~400–580 chars

Compressed capacity depends on content compressibility. English prose typically compresses at 2.5–3×. CJK text is 3 UTF-8 bytes per character and compresses at 1.5–2×. For content that exceeds QR capacity, use the doc param to link to a hosted full-context document.

Unicode Support

AIPM 1.1 explicitly supports UTF-8 in all fields — model names, context, URLs, and document content. All text is encoded via TextEncoder before compression, ensuring correct handling of non-Latin scripts including CJK, Arabic, Devanagari, and emoji.

Note that non-ASCII characters in uncompressed URLs are percent-encoded, which reduces effective character capacity significantly (3 bytes per CJK character becomes 9 bytes in the URL). Compression largely mitigates this — non-Latin users should prefer the compressed path.

Hosting and Deployment

AIPM is designed for static global hosting with no backend. The reference implementation at ai-pm.pages.dev runs on Cloudflare Pages. All provenance data lives in the URL — there is no database, no server-side processing, and no user tracking.

For the doc and src URL params, choose hosting for longevity:

  1. Your own Cloudflare Pages or GitHub Pages — most durable
  2. GitHub Gist — free, extremely durable, secret gists are unlisted
  3. rentry.co — no account, custom slugs, markdown

Avoid anonymous URL shorteners — they cannot be edited and carry link rot risk.

Versioning

The AIPM mark's visual identity is stable across versions — the same rounded square, bold type, and AIPM identifier. The version number on line 2 of the mark reflects the spec version used to generate it. AIPM 1.1 introduces an optional Show mode third line; this is additive and does not affect how 1.0 marks appear or scan. Future versions may add further optional elements without changing the core mark identity.

The path structure (/1.0/, /1.1/) ensures existing QR codes never break — each version's URLs are frozen permanently.


Using AI to Generate AIPM Marks

You can instruct an AI model to automatically generate an AIPM QR code URL whenever it produces final output. Copy the prompt snippet below into your AI tool's system prompt or project instructions.

When you produce a final deliverable (document, post, report, code, or other substantive output), append an AIPM 1.1 provenance URL at the end.

Use this format:
https://ai-pm.pages.dev/1.1/aipm/#v=1.1&model=[MODEL]&role=prompted&date=[DATE]&ctx=[BRIEF_DESCRIPTION]

Replace [MODEL] with your model name, [DATE] with today's date in YYYY-MM-DD format, and [BRIEF_DESCRIPTION] with a short URL-encoded description of the content (e.g. Blog+post+about+climate+policy).

The human role should be prompted by default. If the human has indicated another role, use that instead. Use %2B to encode the + character in the URL.

For longer context, consider having the AI use the generator page directly: ai-pm.pages.dev/1.1/generate/

Accessibility

AIPM provenance pages are standard HTML with semantic structure. The provenance card uses label/value pairs rendered as plain text elements, which screen readers handle naturally — every field is readable in document order without any special ARIA markup required.

All interactive elements on the display page — "Try it" links, the "Copy context" button, and the "Update this mark" link — are standard HTML anchors and buttons, fully keyboard accessible and compatible with assistive technology without JavaScript-only interaction patterns.

Compressed URLs (z param) are fully transparent to assistive technology. The page renders identically whether data arrived compressed or as plain params — by the time the page is presented to the user, all data has been decoded into the same plain text elements.

The QR mark itself is a visual medium and cannot convey information to users who cannot see or scan it. AIPM addresses this in two ways: the generator page always displays the full provenance URL as copyable text, and the provenance page is always reachable directly via that URL — no QR scan required. The updated notice text on the display page reflects this: "This page was reached by scanning an AIPM QR code or following an AIPM URL."

The QR mark image, when embedded in a document, should be given meaningful alt text by the creator — for example: alt="AI Provenance Mark QR code — scan or visit [URL] for details". The AIPM spec recommends including the provenance URL as visible text near the mark wherever the medium allows, so that the disclosure is accessible regardless of QR scanning capability.

Comparison: AIPM vs C2PA

C2PA / Content CredentialsAIPM 1.1
VerificationCryptographic (tamper-evident)Declaration (trust-based)
SetupSDK, certificates, platform supportZero — just fill in a form
Works onImages, video, audioAny content including print
Survives export/printOften strippedQR is visual — always survives
For whomPlatforms, publishersIndividuals, academics, small teams
PrivacyMetadata in file/platformMetadata in URL hash — never logged