Last Updated Date Widget

Add a last updated date to your articles that comes from the date your CMS already records, not from the moment the visitor opened the page. Show it as a full date, as 'three days ago', or as 'Published ... - Updated ...', in your visitors' language.

Website Essentials Website component No trackers, no cookies Free · no ads

Customize your widget

Dates
YYYY-MM-DD or a full ISO time. Blank = read from your page's metadata.
Blank = article:published_time, itemprop or JSON-LD.
Wording
For example en-GB or de-DE. Blank = your page's lang attribute.
Light or dark
Match page reads the background behind the component.

Live preview

Exactly what your visitors will see

Embed code

<div data-a2z-kit="last-updated-date"></div>
<script async src="https://a2z.tools/embed/kit.js" referrerpolicy="no-referrer"></script>

One small script from A2Z draws the component on your page inside its own Shadow DOM. It loads no social-network or tracking scripts and sets no cookies. How the A2Z kit works.

Works with

How it works

The component looks for the modified date in a fixed order and takes the first one that is a real calendar date from 1990 onwards and not more than a day in the future: the date you type into the A2Z div (data-date), then the article:modified_time and og:updated_time meta tags, a meta or time element with itemprop="dateModified", and finally dateModified in any JSON-LD block on the page - each block is parsed separately, @graph lists are walked, broken JSON is skipped, and an Article or BlogPosting node wins over a WebPage node. The published date is found the same way. A date written as YYYY-MM-DD is shown exactly as written; a full timestamp is converted to the visitor's time zone. The text is formatted with Intl.DateTimeFormat or Intl.RelativeTimeFormat in the language you set, else your page's lang attribute. With no trustworthy date, nothing is shown at all.

Method

  • Modified date, first usable: data-date > meta article:modified_time > meta og:updated_time > meta[itemprop=dateModified] > time[itemprop=dateModified][datetime] > JSON-LD dateModified
  • Published date, first usable: data-published > meta article:published_time > itemprop datePublished (meta or time) > JSON-LD datePublished
  • Accepted: YYYY-MM-DD or ISO 8601 date-time with optional seconds, fraction and Z or +hh:mm offset; real calendar dates from 1990, at most 24 hours ahead
  • JSON-LD: every script[type="application/ld+json"] parsed with JSON.parse in try/catch; @graph and nested nodes walked; Article-like > WebPage > other
  • Relative: under a minute 'now', then minutes, hours, days (under 7), weeks (under 30 days), months (under 365 days), years
  • Never used: the browser's document last-modified value

Worked examples

Meta tags beat JSON-LD

Inputs: meta article:modified_time 2026-09-20T08:00:00Z; JSON-LD BlogPosting dateModified 2026-09-30

Result: Updated 20 September 2026

The meta tag comes earlier in the priority list, so the JSON-LD value is not consulted.

A broken JSON-LD block and a good one

Inputs: First block '{ "dateModified": ' (cut off), second block a NewsArticle with dateModified 2026-07-07

Result: Updated 7 July 2026

The malformed block is skipped and the second is read.

A date that cannot be true

Inputs: data-date 2026-02-30, no other dates

Result: Nothing is shown

30 February does not exist, so the component treats the page as having no trustworthy date.

Limitations

  • If your CMS updates the modified date for trivial changes, the visible date will too; it shows what the page declares.
  • Dates written only in visible text (for example 'Updated: 3 Oct') are not read; use an attribute, meta tag or JSON-LD.
  • Relative wording depends on the visitor's clock being right.

Where publishers use it

  • A product-comparison blog showing 'Updated 3 October 2026' under the headline so readers know prices were rechecked recently
  • A WordPress site whose SEO plugin already writes article:modified_time, turning that hidden tag into a visible byline line
  • A help centre article showing 'Published 1 March 2026 - Updated 3 days ago' with the full date in a tooltip
  • A German-language news page passing the locale de-DE so the line reads '3. Oktober 2026'

Questions

Why not use the browser's document.lastModified?

For any page built by a server - WordPress, Shopify, Next.js and nearly every CMS - the browser fills that value with the moment the page was downloaded, so every visitor would see today's date and the line would be meaningless. The component only shows a date your site actually recorded.

My page shows nothing. Why?

None of the sources had a usable date. Check the page source for article:modified_time or a JSON-LD dateModified; many SEO plugins add them. If your platform has neither, add it to the A2Z div as data-date="2026-10-03" (or have your template print it there).

Does it add structured data for Google?

No. It reads the dateModified your page already declares and adds no schema of its own. Google takes dates from your structured data and visible text; keeping the visible date and the JSON-LD in agreement is the honest setup.

How are time zones handled?

A date without a time (2026-10-03) is shown as written, in every time zone. A full timestamp such as 2026-10-03T23:30:00+01:00 is converted to the visitor's own clock, so a reader far to the east may see the next day - which is correct for them.

Sources

  1. The Open Graph protocol: article (modified_time, published_time) - ogp.me
  2. dateModified - Schema.org
  3. Intl.RelativeTimeFormat - ECMAScript Internationalization API (ECMA-402)

Cite or recommend this tool

If you reference this tool in an article, course or documentation, these formats are ready to copy. They are optional - nothing is added to your site unless you paste it.

A2Z Tools Last Updated Date
https://a2z.tools/embed/last-updated-date
  • Estimated Reading Time

    Website Essentials Website component New

    Shows "6 min read" on your post, counted from the page's own text at a researched 238 words per minute.

    Get code
  • Auto-updating Copyright Year

    Website Essentials Website component New

    A footer line like © 2018–2026 Riverside Cafe that moves to the new year on its own every January.

    Get code
  • Table of Contents

    Website Essentials Website component New

    An automatic table of contents from your headings, with active-section highlight and sticky-header offset.

    Get code
  • Reading Progress Bar

    Website Essentials Website component New

    A slim bar or small circle that fills as visitors read your article - measured through the article itself.

    Get code
  • Back to Top Button

    Website Essentials Website component New

    A scroll-to-top button that waits until readers scroll, with a progress ring and keyboard-friendly focus.

    Get code
  • Listen to Article Button

    Website Essentials Website component New

    A Listen button that reads your article aloud with the browser's built-in voices - no audio files, no account.

    Get code

Preview