Stale site check

Nobody reads a site’s update log, but everybody notices a footer that still says 2021. This check collects the dated details on your home page, weighs them and grades the overall impression from A to F.

Or try wordpress.org, wikipedia.org

Visitors date a site before they read it

Picture a shop window with a poster for a sale that ended last spring. The shop may be open and well run, but that poster makes you wonder. A website gives off the same signal through small details, like a year in the footer, the date on the latest news item, or an icon for a social network that closed long ago.

What you lose is trust in everything else on the page. If the last announcement is three years old, are the opening hours still right? Is the price list current? Does anyone answer the contact form? A visitor has no way of knowing, and plenty of them leave rather than ask.

The signals and what each one costs

Our server downloads the home page, the RSS or Atom feed it declares (or /feed/ on WordPress), and one page reached by a link named exactly “News”, “Blog”, “Press”, “Newsroom” or “Articles”. Every finding moves a counter:

FindingPoints
Copyright year behind the calendar−1 for one year, −2 for two or three, −3 from four. In January and February, last year’s date only gets a reminder.
Latest sign of activity (visible dates, <time> tags, dateModified, feed, news page)+1 within 3 months, −1 up to a year, −2 up to two years, −3 beyond
A date at least two weeks past, close to “upcoming”, “register”, “tickets” or “save the date”−1, or −2 when there are several
A future date announced+1
Flash content (.swf)−2
A COVID or lockdown notice; “under construction” or “coming soon”−1 each
A link to Google+, Vine, Myspace, StumbleUpon or Delicious−1
jQuery older than 1.12; a UA- Google Analytics ID with no G- ID; a WordPress version three or more years old in the generator tag−1 each
Last-Modified header older than a year−1

A Twitter bird icon gets a mention and costs nothing. A year written by a script (getFullYear() in the source) counts as current.

From points to a letter

Penalties add up. Good signs can cancel one point at most, no matter how many you have, and the total never goes above zero.

TotalGrade
0A
−1B
−2 or −3C
−4 or −5D
−6 or lowerF

Findings are listed from most to least damaging. The ones found in the text quote the passage that set them off, so you can tell a real leftover from a false alarm. If the page gives almost no clues to go on, the report says so next to the grade.

Repairs that take minutes

  • Footer year. Let the page work it out. In PHP: &copy; <?= date('Y') ?>. In JavaScript: el.textContent = new Date().getFullYear(). Taking the year out altogether is just as valid.
  • Past events. Give every event an end date in your CMS so it leaves the home page by itself, or move the old ones to an archive.
  • A quiet news block. If you publish twice a year, take the “Latest news” list off the home page and hide the dates in the list. A blog with no visible dates doesn’t age.
  • Old notices. Delete the pandemic banners and the “coming soon” sections that never came.
  • Retired tools. Remove the UA- snippet, since Universal Analytics stopped collecting in July 2023. Remove the icons of closed networks. Update WordPress and old script libraries, which you should be doing for security anyway.

The check reads three addresses at most and doesn’t run scripts, so it misses content loaded by JavaScript. It recognizes month names in a limited set of languages, English included, and numeric dates only in the form 2025-03-12. A historical date such as “founded on May 3, 1998” can get mistaken for a publication date. The grade describes the impression a page gives, not the quality of the organization behind it.

Questions people ask

Do I need a copyright year in my website footer?

No. In most countries copyright exists from the moment a work is created, with or without a notice. A notice with no year is fine, and so is no notice at all. If you keep a year, make it update by itself.

How do I make the copyright year update automatically?

Print it from the server (date('Y') in PHP, {{ "now"|date("Y") }} in Twig) or from a short script that writes new Date().getFullYear() into the footer. Most site builders and WordPress themes also have a “current year” placeholder.

Does outdated content hurt SEO?

Age by itself doesn’t pull a page down. Search engines only prefer recent pages for queries where freshness matters, such as news or prices. The indirect effect is bigger. Visitors who doubt a page leave quickly and link to it less.

How often should a website be updated?

There’s no required rhythm. A page of stable facts can sit untouched for years. What matters is that nothing on it promises a date that has already gone by, so go over hours, prices, staff names and announcements a few times a year.

Why does the check miss an article I published last week?

It only sees dates that are in the HTML the server sends. If your articles are loaded by a script, show no date, have no RSS feed and sit behind a link called something other than “News” or “Blog”, the check has nothing to read.