AI Content Disclosure for HTML

This specification defines an ai-disclosure global HTML attribute and a companion <meta name="ai-disclosure"> tag that enable authors to declare the degree of AI involvement in web content at both page level and element level. It also defines optional metadata attributes (ai-model, ai-provider, ai-prompt-url) for supplementary information about the AI systems used.

This is a first working draft from the AI Content Disclosure Community Group. It is based on the original proposal, restructured as a W3C Community Group Report.

Comments and feedback are welcome via GitHub issues or the public mailing list.

Introduction

Motivation

Web pages increasingly contain text produced with varying degrees of AI involvement — from light AI-assisted editing to fully autonomous generation. A modern news article page might contain a human-written investigation alongside an AI-generated summary sidebar and AI-moderated user comments. There is currently no standard HTML mechanism for authors to disclose AI involvement at element-level granularity within a page.

Existing approaches operate at coarser granularity:

Regulatory context

The EU AI Act Article 50 (transparency obligations applying from 2 August 2026, with a transitional period to 2 December 2026 for generative AI systems already on the EU market) requires that AI-generated text content be "marked in a machine-readable format and detectable as artificially generated or manipulated." Major platforms already require AI disclosure in their policies. A standard mechanism at the HTML layer can serve both regulatory compliance and voluntary transparency.

Design goals

  1. Enable authors to declare AI involvement at element-level granularity in HTML.
  2. Provide a machine-readable signal usable by browsers, search engines, accessibility tools, and research crawlers.
  3. Align with existing vocabularies — specifically the IETF AI-Disclosure header and IPTC Digital Source Type taxonomy — for cross-standard consistency.
  4. Complement (not replace) HTTP-level and cryptographic provenance mechanisms.

Terminology

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [[RFC2119]] [[RFC8174]] when, and only when, they appear in ALL CAPITALS, as shown here.

AI disclosure
A declaration by the content author indicating the degree of AI involvement in producing a piece of content.
disclosure value
One of the enumerated values defined in Disclosure values: human-only, ai-assisted, or ai-autonomous.
page-level default
The disclosure value set by a <meta name="ai-disclosure"> element, which applies to all elements in the document unless overridden.
generative AI
Systems trained on data that produce novel outputs through inference, as opposed to deterministic tools that apply fixed rules. See Boundary guidance for detailed guidance.

The ai-disclosure attribute

Attribute definition

The ai-disclosure attribute is a global attribute that MAY appear on any [^HTML element^]. Its value MUST be one of the disclosure values defined below.

User agents MUST treat the absence of the ai-disclosure attribute as meaning "unknown" — that is, no assertion has been made about AI involvement. This is distinct from a value of human-only, which is a positive assertion that no AI was involved.

Disclosure values

The ai-disclosure attribute accepts the following enumerated values, aligned with the IETF AI-Disclosure header and the IPTC Digital Source Type vocabulary:

Value Meaning IETF equivalent IPTC Digital Source Type
human-only A positive assertion that no AI was involved in producing this content. none digitalCapture
ai-assisted AI was involved in producing the content, with human authorship and/or human review. This spans the full range from light AI editing of human-written text to AI-drafted text refined or reviewed by a human. ai-modified / ai-originated compositeWithTrainedAlgorithmicMedia / trainedAlgorithmicMedia
ai-autonomous Content published without human involvement or review (no per-instance human prompting or oversight). machine-generated trainedAlgorithmicMedia

A single ai-assisted value deliberately covers the full spectrum of human-plus-AI collaboration. The group considered a finer split between "assisted" (human-authored, AI-edited) and "generated" (AI-authored, human-reviewed) but found the boundary impractical to apply: with multiple contributors it forces unanswerable questions about who counts as the "first author." Authors who wish to indicate the rough proportion of AI authorship MAY use the optional ai-assisted-percent attribute.

If the ai-disclosure attribute is present but its value is not one of the above, user agents MUST treat it as invalid and behave as if the attribute were absent (i.e., "unknown").

Boundary guidance ("What counts as AI?")

The boundary is generative AI — systems trained on data that produce novel outputs through inference. Deterministic tools that apply fixed rules are not covered.

The following categories provide guidance for authors:

Not AI (no disclosure needed):

Deterministic programmatic content — output produced by fixed rules from structured data without trained inference — is outside the scope of this specification. The key distinction is whether a system was trained on data to produce novel outputs through inference (generative AI, in scope) or whether it applies fixed deterministic rules to produce predictable output (programmatic, out of scope).

ai-assisted (any human-plus-AI collaboration, from light editing to AI drafting with human review):

ai-autonomous:

The <meta name="ai-disclosure"> element

Syntax

A <meta> element with name="ai-disclosure" sets the page-level default for the document. The content attribute MUST contain a valid disclosure value or the value mixed.

<meta name="ai-disclosure" content="ai-assisted">
        

There MUST NOT be more than one <meta name="ai-disclosure"> element per document. If more than one is present, user agents MUST use the first one in document order and ignore the rest.

The mixed value

The value mixed is valid only on the <meta name="ai-disclosure"> element, not on the ai-disclosure attribute on other elements. It signals that the page contains sections with different levels of AI involvement and that consumers SHOULD inspect element-level ai-disclosure attributes for detail.

<meta name="ai-disclosure" content="mixed">
        

When the meta value is mixed, elements without an explicit ai-disclosure attribute are treated as "unknown."

Inheritance

Cascading rules

The ai-disclosure value for a given element is determined as follows, in order of priority:

  1. If the element has an explicit ai-disclosure attribute with a valid value, that value applies.
  2. Otherwise, if the element has an ancestor with an explicit ai-disclosure attribute, the value of the nearest such ancestor applies.
  3. Otherwise, if a <meta name="ai-disclosure"> element is present with a value other than mixed, that value applies as the page-level default.
  4. Otherwise, the element's disclosure status is "unknown."

Child elements MAY override their parent's value by specifying their own ai-disclosure attribute. This allows authors to mark fine-grained regions within a larger container.

Absence vs. human-only

The absence of the ai-disclosure attribute means "unknown" — no assertion has been made. The value human-only is a positive assertion that no generative AI was involved in producing the content.

Authors SHOULD use ai-disclosure="human-only" explicitly when they wish to assert human-only provenance.

Optional metadata attributes

The following attributes MAY appear on any element that also carries an ai-disclosure attribute. They provide supplementary information about the AI system used. All are OPTIONAL — authors may have legitimate reasons not to disclose specific tools or providers.

ai-model

A free-form string identifying the AI model used (e.g., "claude-3.5-sonnet", "gpt-4o").

This attribute SHOULD NOT be present when ai-disclosure="human-only".

ai-provider

A free-form string identifying the AI provider or vendor (e.g., "Anthropic", "OpenAI").

This attribute SHOULD NOT be present when ai-disclosure="human-only".

ai-prompt-url

A [^URL^] pointing to documentation of the prompt or methodology used to generate the content (e.g., "/ai-methodology#summary").

The prompt text itself MUST NOT be embedded in the HTML. This attribute links to an external resource, giving authors control over what they disclose and when they revoke access.

This attribute SHOULD NOT be present when ai-disclosure="human-only".

ai-assisted-percent

This attribute is a proposal under discussion and is not yet finalized. See the issue tracker for the current state of the discussion.

An integer from 0 to 100 indicating the approximate percentage of the content that was authored by AI. It is valid only when the applicable disclosure value is ai-assisted; user agents MUST ignore it otherwise.

This attribute recovers some of the granularity that the single ai-assisted value intentionally collapses, without requiring authors to choose between hard-to-distinguish categories. The figure is necessarily an estimate; this specification does not define a measurement procedure.

If the value is not an integer in the range 0–100, user agents MUST ignore it and behave as if the attribute were absent.

Relationship to HTTP headers

The IETF AI-Disclosure HTTP response header provides disclosure at the HTTP response level. The HTML mechanisms defined in this specification complement it by adding page-level and element-level granularity.

Layer Mechanism Granularity
HTTP AI-Disclosure response header Entire response
HTML page <meta name="ai-disclosure"> Entire document
HTML element ai-disclosure attribute Any element

These layers are complementary. A CDN or reverse proxy can set the HTTP header; a CMS can set the meta tag; an author or AI tool can set element-level attributes. None supersedes the others.

Use cases and examples

Mixed-content news page

A newsroom publishes an investigative piece with a human-written article and an AI-written summary:

<meta name="ai-disclosure" content="mixed">

<article ai-disclosure="human-only">
  <h1>Exclusive: City Budget Shortfall</h1>
  <p>After six months of records review...</p>
</article>

<aside ai-disclosure="ai-assisted" ai-assisted-percent="100"
       ai-model="gpt-4o" ai-provider="OpenAI">
  <h3>Key Takeaways (AI-Generated)</h3>
  <ul><li>$4.2M discrepancy found...</li></ul>
</aside>
        

AI-edited blog post

A blogger writes a post and uses an LLM for grammar, style, and clarity improvements:

<meta name="ai-disclosure" content="ai-assisted">

<article ai-disclosure="ai-assisted"
         ai-model="claude-3.5-sonnet" ai-provider="Anthropic">
  <h1>My Trip to Kyoto</h1>
  <p>The bamboo grove felt otherworldly at dawn...</p>
</article>
        

Automated weather feed

An automated system generates weather reports without per-instance human oversight:

<meta name="ai-disclosure" content="ai-autonomous">

<div ai-disclosure="ai-autonomous"
     ai-model="weather-llm-v2" ai-provider="WeatherCorp">
  <h2>San Francisco Bay Area Forecast</h2>
  <p>Expect fog clearing by noon with highs near 62°F...</p>
</div>
        

Human-only assertion

A literary journal positively asserts that no AI was used:

<meta name="ai-disclosure" content="human-only">

<article ai-disclosure="human-only">
  <h1>The Weight of Feathers</h1>
  <p>She found the letter tucked inside a volume of Neruda...</p>
</article>
        

Note: ai-disclosure="human-only" is a positive assertion. The absence of the attribute means "unknown," not "human-only."

Cross-standard alignment

This specification is designed to complement existing standards for content provenance and AI transparency. The layers work together without duplicating each other's responsibilities.

IETF AI-Disclosure header

The IETF AI-Disclosure header provides response-level disclosure. The HTML attribute values are aligned with the IETF header modes:

ai-disclosure value IETF header mode
human-only none
ai-assisted ai-modified / ai-originated
ai-autonomous machine-generated

IPTC Digital Source Type

The IPTC Digital Source Type vocabulary is widely used in news media. The following mapping aligns the HTML attribute values with IPTC terms:

ai-disclosure value IPTC Digital Source Type
human-only digitalCapture
ai-assisted compositeWithTrainedAlgorithmicMedia / trainedAlgorithmicMedia
ai-autonomous trainedAlgorithmicMedia

Schema.org / JSON-LD

For search engine discoverability, the same information can be expressed as structured data using a proposed aiDisclosure property (see schemaorg/schemaorg#3391):

{
  "@context": "https://schema.org",
  "@type": "NewsArticle",
  "headline": "Investigation: City Budget Shortfall",
  "author": { "@type": "Person", "name": "Jane Doe" },
  "aiDisclosure": "ai-assisted"
}
        

An expanded form supports optional metadata:

{
  "@context": "https://schema.org",
  "@type": "NewsArticle",
  "headline": "Investigation: City Budget Shortfall",
  "author": { "@type": "Person", "name": "Jane Doe" },
  "aiDisclosure": {
    "level": "ai-assisted",
    "tool": "Claude 3.5 Sonnet",
    "provider": "Anthropic",
    "description": "AI used for copy editing and fact-checking assistance",
    "methodologyUrl": "https://example.com/ai-methodology"
  }
}
        

C2PA

C2PA provides cryptographic, tamper-evident provenance for media files. HTML pages are dynamically assembled from templates, databases, and user input — they are not single files with stable hashes. C2PA and this specification are complementary: C2PA provides verified provenance for embedded media, while ai-disclosure provides advisory metadata for HTML text content.

IBM AI Attribution Toolkit

The IBM AI Attribution Toolkit is a research prototype for structured AI attribution statements via human self-reporting. It uses a multi-axis model (proportion, contribution type, initiative, human review) compared to this specification's single-axis model. The approaches are complementary: the toolkit addresses the "author guidance" layer, while this specification addresses the "machine-readable metadata" layer.

Security considerations

The ai-disclosure attribute is voluntary, author-declared metadata. It carries no integrity protection. For verified provenance, pair with C2PA or similar cryptographic systems.

The voluntary nature means the attribute cannot be relied upon for security decisions, the same as any self-declared metadata (robots.txt, rel=nofollow, Schema.org markup).

No new information about the user (reader) is exposed. The attribute describes the content, not the person viewing it. No new fingerprinting surface is introduced — the attribute is author-declared metadata, not a browser API.

Privacy considerations

The ai-model and ai-provider attributes are OPTIONAL to avoid requiring disclosure of trade secrets or proprietary tooling.

Prompt text MUST NOT be embedded directly in HTML. The ai-prompt-url attribute links to an external resource, giving authors control over what they disclose and when they revoke access.

This specification does not introduce any mechanisms that allow tracking of users or collection of personal data.

Accessibility considerations

Browsers and screen readers could optionally announce AI disclosure to users (e.g., "AI-generated content follows"). The ai-disclosure attribute SHOULD be exposed via the Accessibility Object Model.

No change to existing content rendering is required — the attribute is purely informational. The attribute may be useful for accessibility research into how AI-generated content affects comprehension for users with cognitive disabilities.

Internationalization considerations

The attribute values (human-only, ai-assisted, ai-autonomous) are English-language tokens intended for machine consumption, not display. Human-readable presentation of disclosure status is a user agent responsibility and can be localized.

The ai-prompt-url attribute can link to localized methodology pages.

All assertions, diagrams, examples, and notes in this specification are non-normative. Everything else is normative.

Acknowledgements

The editors thank the participants of the AI Content Disclosure Community Group for their contributions and feedback.

This specification builds on the original proposal and incorporates ideas from the WHATWG HTML #9479 discussion, the IETF AI-Disclosure header draft, and the IPTC Digital Source Type vocabulary.