Content Freshness — datePublished & dateModified for AI
AI systems actively use publication and modification dates to rank content. A page with an explicit, recent dateModified is preferred over undated content when users ask time-sensitive questions.
datePublished and dateModified in your Schema.org JSON-LD and in <meta> tags. Update dateModified every time you make a substantive content change. Use ISO 8601 format (YYYY-MM-DD or full datetime).
Why do AI systems prefer fresh content?
AI retrieval systems — including the indexers behind Perplexity, ChatGPT with browsing, and Google's AI Overviews — use content freshness as a ranking signal for queries where recency matters. When a user asks "What is the current best practice for X?", the system favours pages with a recent dateModified over pages that carry no date at all. Undated content is treated as potentially stale and ranked lower in time-sensitive contexts.
How does datePublished work in Schema.org?
datePublished is a property of the Schema.org CreativeWork type (and its subtypes: Article, BlogPosting, NewsArticle). It tells AI crawlers and search engines when the content was originally created. Once set, this value should never be changed retroactively — doing so is treated as a freshness manipulation signal.
How does dateModified work in Schema.org?
dateModified is a property of the Schema.org CreativeWork type that records the most recent substantive update. Unlike datePublished, this value should be updated every time you revise the content. Trivial changes (fixing a typo, updating CSS) do not warrant a dateModified bump — substantive changes (new section, updated facts, revised statistics) do.
What counts as a substantive update?
A substantive update is one that changes the informational value of the page for a reader. Examples include: adding or replacing a code snippet, updating statistics or prices, adding a new section, revising a recommendation based on new information, or correcting a factual error. Formatting changes, typo fixes, and visual redesigns are not substantive updates.
How to signal updates with HTML meta tags
In addition to JSON-LD, you can provide date signals via standard <meta> tags. These are read by some AI crawlers that do not parse JSON-LD, and by HTTP headers when a full fetch is not performed.
<meta name="article:published_time" content="...">— Open Graph article published time.<meta name="article:modified_time" content="...">— Open Graph article modified time.<meta http-equiv="last-modified" content="...">— HTTP last-modified equivalent (less commonly parsed).
The JSON-LD approach is more reliable and should be treated as the primary signal; HTML meta tags provide a useful fallback.
Step-by-step — implement content freshness signals
- Add a
datePublishedvalue to your Article JSON-LD on every page that has been published. - Add a
dateModifiedvalue set to the same date asdatePublishedwhen first publishing. - Create a process (a CMS field, a deploy script, or a commit hook) that updates
dateModifiedwhenever content changes. - Confirm the dates are visible in the rendered HTML — not just in a JavaScript variable.
- Validate with Google's Rich Results Test to ensure the dates are parsed correctly.
- Optionally add a human-readable "Last updated: [date]" line to the page for user trust (AI systems also parse visible dates in addition to structured data).
Code example — JSON-LD with datePublished and dateModified
<!-- JSON-LD structured data: Article with freshness signals -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "Your Article Title",
"datePublished": "2026-04-16",
"dateModified": "2026-04-16",
"author": {
"@type": "Person",
"name": "Your Name"
},
"publisher": {
"@type": "Organization",
"name": "Your Organisation",
"url": "https://example.com"
},
"url": "https://example.com/your-article",
"mainEntityOfPage": "https://example.com/your-article"
}
</script>
<!-- HTML meta tag alternatives (fallback for crawlers that skip JSON-LD) -->
<meta property="article:published_time" content="2026-04-16T00:00:00Z">
<meta property="article:modified_time" content="2026-04-16T00:00:00Z">
<!-- Optional: human-readable date on the page itself -->
<p class="byline">
Published: <time datetime="2026-04-16">16 April 2026</time> ·
Updated: <time datetime="2026-04-16">16 April 2026</time>
</p>
Common mistakes to avoid
- No dates at all: Undated content is deprioritised for any time-sensitive query — always include at least
datePublished. - Backdating
datePublished: Setting a publish date earlier than the actual publication is treated as a manipulation signal and can harm ranking. - Bumping
dateModifiedwithout real changes: AI crawlers compare date signals against sitemap lastmod and HTTP Last-Modified headers — inconsistencies are detected and penalised. - Using non-ISO date formats: Dates like "April 16, 2026" or "16/04/2026" may not be parsed correctly; always use
YYYY-MM-DDorYYYY-MM-DDTHH:MM:SSZ. - Dates only in JavaScript: If your dates are injected by JavaScript and the AI crawler does not execute JS, the dates will be invisible. Render them server-side.
- Inconsistent signals: If your JSON-LD says 2026-01-01 but your sitemap says 2024-06-15, AI crawlers will distrust both signals.
Official sources
- Schema.org — datePublished property
- Schema.org — dateModified property
- Google — Article structured data documentation