How to fix stale content for AI search
You fix stale content by genuinely updating it, then reflecting that real update in 1 visible date and the matching dateModified in your schema. For many queries, especially time-sensitive ones, engines favor current, accurate content, a point Google's AI optimization guide grounds in the same fundamentals as the rest of search. Put plainly: “engines prefer a current answer to a confident but outdated one.”
The symptom: engines stopped trusting the page
The page used to do well and now it does not. It still loads, still reads cleanly, still ranks for nothing it once did, and it has quietly stopped showing up in AI answers. When we look at why, the same fingerprints turn up again and again: facts that were true two years ago and are wrong now, a title with an old year baked into it, recommendations that point at tools or versions that have moved on, and a last-updated date that has not changed in a long time.
The clearest tell is the gap between the page and the calendar. A guide that claims to cover a current topic but carries a dateModified from years back is sending two contradictory signals at once. The content says "trust me on this," and the timestamp says "this has not been touched since." For a time-sensitive query, an engine resolves that contradiction the obvious way: it reaches past the stale page for a fresher one and quotes that instead.
The cause: the content aged and nothing updated it
Staleness is not a penalty an engine applies out of spite. It is the natural result of the world moving while a page stands still. Statistics get superseded. Screenshots show an interface that no longer exists. A recommendation names a product that has since been discontinued or renamed. None of this breaks the page, which is exactly why it goes unnoticed. The HTML is valid, the layout is intact, and the rot is entirely in the meaning of the words.
The deeper cause is that freshness was treated as a publishing event rather than a maintenance commitment. A page was written once, published, and then left alone. The author moved on to the next piece. Meanwhile the queries the page targets are ones where recency matters, and the competing pages that win are the ones someone keeps current. An engine comparing them is not reading your intentions. It is reading what is actually on the page today and when the page last said it changed.
There is also a self-inflicted version of this. Some sites try to fake freshness by bumping the date without changing the content. That does not solve the problem and it creates a new one, which the next section covers in full. The honest cause to fix is the real one: the substance is out of date and needs genuine work.
The fix: genuinely update, then date it honestly
The fix has two halves, and both are mandatory. The first half is real editorial work on the substance of the page:
- Refresh the facts and statistics so every number on the page is current and verifiable, and replace any figure you cannot stand behind today.
- Update screenshots and examples so they show what the thing actually looks like now, not what it looked like at launch.
- Revisit the recommendations so the tools, versions, and advice you point readers toward still exist and still apply.
- Remove or correct outdated claims outright. A wrong sentence left on the page is worse than a missing one, because an engine may quote it.
The second half is making the real update legible to a machine. Once the content genuinely reflects today, set the date in two places that must agree. Put a visible last-updated date on the page where a reader can see it, and set the matching dateModified in the Article schema to the same real date:
<!-- Visible to the reader --> <p>Last updated: <time datetime="2026-06-14">June 14, 2026</time></p> <!-- Machine-readable, must match the visible date --> <script type="application/ld+json"> { "@context": "https://schema.org", "@type": "Article", "headline": "Your real H1, no stale year baked in", "datePublished": "2024-02-10", "dateModified": "2026-06-14" } </script>
While you are in the markup, fix any old year sitting in the title or H1. A heading that hard-codes a past year tells an engine the page is about a moment that has passed, no matter how current the body is. If the topic is genuinely evergreen, drop the year. If recency is the point, keep the heading current with the content.
Be honest: do not fake the date
The single rule that keeps this fix honest is the one most sites break. Do not bump the dateModified without actually changing the content. A fresh date on unchanged words is a lie told to a machine, and it is the kind of lie machines are increasingly good at catching, because the page content is right there to compare against the claimed update. An engine that compares the timestamp to a page that demonstrably has not changed learns to distrust the timestamp, and a distrusted signal is worse than no signal at all. The date is a promise that the substance is current. Only move it when that promise is true.
Verify: confirm the dates match a real update
Once the content is genuinely refreshed and dated, verify the two halves agree. Confirm the visible date on the page and the dateModified in the schema show the same date, and that the date corresponds to an update that actually happened. Then read the page once more as a stranger would and check that no outdated fact, old year, or dead recommendation survived the pass.
Then verify it the way the engines will. Re-run an audit on the live URL and confirm the page now reads as current, with the visible date and the schema in agreement and no stale claims flagged. You can do this by hand, or paste your link into our GEO audit or the full Brimm audit and we will read the page the way a crawler does, surface a dateModified that is years old, and print the freshness gaps in fix order. If you want the broader context on why currency decides citations, our guide on generative engine optimization covers it, and the rest of the fix library walks through the other failures we find most.