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.
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:
<meta> tag with four
values. It does not support marking individual elements. Commenters
on that issue identified element-level granularity as the critical
missing capability.
AI-Disclosure HTTP response header
applies to entire HTTP responses and cannot distinguish mixed
content within a page.
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.
AI-Disclosure header and
IPTC Digital Source Type
taxonomy — for cross-standard consistency.
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.
human-only, ai-assisted, or
ai-autonomous.
<meta name="ai-disclosure"> element, which applies
to all elements in the document unless overridden.
ai-disclosure attribute
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.
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").
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:
<meta name="ai-disclosure"> element
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.
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."
The ai-disclosure value for a given element is determined
as follows, in order of priority:
ai-disclosure attribute
with a valid value, that value applies.
ai-disclosure attribute, the value of the nearest such
ancestor applies.
<meta name="ai-disclosure"> element is present
with a value other than mixed, that value applies as
the page-level default.
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.
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.
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.
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.
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>
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>
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>
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."
This specification is designed to complement existing standards for content provenance and AI transparency. The layers work together without duplicating each other's responsibilities.
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 |
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 |
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 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.
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.
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.
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.
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.
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.
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.