Search · Honesty

Modified today, said twenty-six pages at once

A rival sitemap stamped today on its home, pricing and terms pages together. That is a build date, not a change. Ours moves a date only when the page does.


A sitemap can tell a search engine when each page last changed. Reading a rival’s on Thursday, twenty-six of their ninety-nine pages said they had changed that very day: the home page, pricing, terms of service, rental terms, the four venue hubs, the contact page and the glossary. Not one article among them. That is the shape of a site that stamps the build date on every static page each time it is rebuilt.

We know the shape because we had it. Until September our sitemap gave every non-blog page the date of the newest blog post. A post is written every day, so ninety-nine of our pages claimed to have changed today, and would have claimed it again tomorrow, forever. None of them had.

Why a false date is worse than no date

The modified date is a hint a crawler chooses to trust. Search engines are explicit that they use it only where it is consistently accurate. A site where three quarters of the pages change every day is exactly the pattern that makes the signal worthless, and once it is worthless there is no way left to say this one genuinely did change, come and look. The cost is crawl budget spent re-fetching pages that are byte for byte the same.

What the date comes from now

A page’s date has to come from the page. The build keeps a ledger with a fingerprint of each page’s own content, and moves the date only when the fingerprint moves. Two details were worth getting right:

  • The fingerprint is the content, not the finished file. Every page carries the shared header, footer and asset stamps, which change on every release. Hashing the whole file would mark every page changed on every deploy, the same lie by a different route. So it hashes title, description and body, with any asset stamp stripped first.
  • A blog post is dated by the day it was written. That is a fact we already hold. Only pages with no such fact started from today, and they become honest the first time they genuinely change.

A test reads the ledger and the sitemap we actually wrote and fails if a page’s date moves without its fingerprint moving. Thursday’s rebuild changed one post and the blog index, so two dates moved. The other 372 pages kept the day they last changed, which is the only thing the field is for.


Try it on tonight’s service.

Nothing to install, no card. Not better by the weekend? Close the tab.