Free Content Freshness Checker
ACME.BOT reads any sitemap and scores every section by age. Green is fresh, red is decaying.
Here is what you get
ACME.BOT works from only the sitemap.
Paste a domain or a sitemap URL
ACME.BOT reads every date
Sections get scored
What does your score mean?
| Score | Reading | What to do |
|---|---|---|
| 70 to 100 | Actively maintained. | Hold. Revisit next quarter. |
| 50 to 69 | Due a refresh. | List the aging pages. Rewrite the ones still getting traffic. |
| Under 50 | Mostly older than six months. | Treat it as a project. Start with the pages that still rank. |
| No score | The sitemap carries no dates. | Fix the sitemap. Nothing scores until you do. |
Instead of scoring the site, score the sections. In the sample above the site scores 52 while /docs scores 31, and /docs is the month of work.
How is the Freshness Score calculated?
Collect dates
ACME.BOT finds the sitemap via robots.txt, follows any sitemap index down to its child sitemaps, and reads the lastmod on every URL. The ceiling is 5,000 URLs per scan.
Score each page by age
Measured from lastmod to the scan date.
| Last updated | Page score |
|---|---|
| Under 30 days | 100 |
| 30 to 90 days | 75 |
| 91 to 180 days | 50 |
| 181 to 365 days | 25 |
| Over 365 days | 0 |
| No lastmod date | Not scored, counted separately |
Group and average
A section consists of all URLs that share the same first path segment. The score of a section is the average of all page scores in the section. The site's score is the average of all scores assigned to dated pages.
Report what is missing
Total URLs as well as those without a lastmod are counted and displayed in a share of the total. URLs or pages without lastmod render gray and don't affect any average calculations.
Fire the callouts
Up to five rows, from a fixed list of rules: a section more than 5% over a year old; the oldest section with 3 or more pages that has a median age of more than 180 days; a section with fresh pages and a steadily decaying older tail; and the number of URLs without dates. If a sitemap has no dates, then we replace all 5 with 1.
Limits. 5,000 URLs per scan, 20 seconds per request, 60 seconds total. A scan that hits any ceiling returns truncated, never a quiet partial. No language model is involved at any stage, so the same sitemap always scores the same.
Accuracy. lastmod is self-reported by the CMS, so the score is only as good as the sitemap. Google publishes the same caveat in its sitemap documentation, which also sets the 50,000 URL and 50 MB per-file limits.
Terms
- lastmod An optional XML sitemap element recording when a URL was last modified. Google uses the value only when it is consistently and verifiably accurate.
- sitemap index A sitemap that lists other sitemaps, so a large site stays under the 50,000 URL per-file limit.
- section The first path segment of a URL. /blog/post-one and /blog/post-two both count toward blog.
When the score lies
Deploy stamps look like maintenance.
Some sitemaps carry no dates at all.
Sections are path segments, not topics.
Age alone is not a ranking factor.
Which pages should you refresh first?
Under 50, still gets clicks.
Under 50, no clicks.
Over 70, clicks falling.
Over 70, steady.
Search Console holds the other half. Open Performance, set the range to the last 3 months, compare it against the previous 3, and sort pages by change in clicks. The pages on both lists, under 50 here and falling there, are the month of work.
For the merge candidates, the internal link graph shows which thin pages already point at each other.
Four other ways to do this
- Read the sitemap by hand
- Sees every URL
- yes
- Scores sections
- no
- Needs ownership
- no
- Cost
- Free
- What it can't see
- Any pattern past a few hundred rows
- Crawl and export (Screaming Frog)
- Sees every URL
- yes
- Scores sections
- manual
- Needs ownership
- no
- Cost
- Free under 500 URLs
- What it can't see
- Which section is worst, without a pivot table
- Rank-tracker decay report (Ahrefs)
- Sees every URL
- no
- Scores sections
- no
- Needs ownership
- no
- Cost
- Paid
- What it can't see
- Pages with no traffic left to lose
- Search Console click comparison
- Sees every URL
- no
- Scores sections
- no
- Needs ownership
- yes
- Cost
- Free
- What it can't see
- Any site you don't own, and page age itself
- This scanner
- Sees every URL
- yes
- Scores sections
- yes
- Needs ownership
- no
- Cost
- Free
- What it can't see
- Traffic. It reads dates, not clicks
| Sees every URL | Scores sections | Needs ownership | Cost | What it can't see | |
|---|---|---|---|---|---|
| Read the sitemap by hand | yes | no | no | Free | Any pattern past a few hundred rows |
| Crawl and export (Screaming Frog) | yes | manual | no | Free under 500 URLs | Which section is worst, without a pivot table |
| Rank-tracker decay report (Ahrefs) | no | no | no | Paid | Pages with no traffic left to lose |
| Search Console click comparison | no | no | yes | Free | Any site you don't own, and page age itself |
| This scanner | yes | yes | no | Free | Traffic. It reads dates, not clicks |
The refresh list above crosses the last two rows, because Search Console cannot see a site you don't own and this scanner cannot see traffic.