News sitemaps: the two-day window, and what the archive stays out of
In short
A news sitemap is a rolling window rather than an index of everything you have published. Google's news sitemap documentation, read in July 2026, says to include only URLs for articles created in the last 2 days, and caps a news sitemap at 1,000 article entries. At publisher scale the failure is inclusion, not omission: the archive leaking into a file meant for 2 days of news.
Key takeaways
- The news file is a 2-day window capped at 1,000 entries; the archive belongs in ordinary sitemaps behind an index.
- Prune on a clock, not on publish, or a quiet weekend leaves a 4-day window in a file that promises 2 days.
- A republished timestamp is the most common way an old story re-enters the window, and it is an editorial decision.
- The sitemap is a cached object like any other, and a long edge time-to-live makes it stale exactly when it matters.
- Everything a crawler needs to trust the file is a timestamp, so the timestamp has to be a fact rather than a rendering.
A news sitemap is a short rolling window over what you have just published, not a directory of your site. Google's news sitemap documentation, read in July 2026, states that you should only include URLs for articles created in the last 2 days, that a sitemap may hold up to 1,000 news entries, and that once articles pass 2 days old you either remove the URLs or strip their news metadata. Everything else you have ever published belongs in ordinary XML sitemaps, behind a sitemap index.
That framing matters because at publisher scale the thing that goes wrong is inclusion rather than omission. A newsroom with a decade of archive and a CMS that generates sitemaps from a query will eventually put a 2019 story into a file describing the last 2 days, and the file becomes less useful to a crawler than a smaller, honest one.
Three files, three jobs
| Property | News sitemap | Standard XML sitemap | Sitemap index |
|---|---|---|---|
| What it is for | Telling a news crawler what is new right now | Making the whole site discoverable, including the archive | Pointing at the other files so none of them has to be large |
| Time window | Articles created in the last 2 days | Everything you want crawled, with no window | Not applicable |
| Size limit | Up to 1,000 news entries per file | 50,000 URLs and 50MB uncompressed, per the sitemaps protocol | Up to 50,000 sitemaps and 50MB, and Google accepts up to 500 index files per site |
| What each entry carries | Publication name and language, publication date, and the article title | Location, and optionally last-modified | Location of each child sitemap |
| How it fails | Stale or ineligible URLs inside a window that promises freshness | Growing past the cap silently as the archive grows | Nesting or drift between the index and the files it lists |
One consequence for a large archive: the news file is the smallest and busiest artefact you publish, and the standard sitemaps are the largest and quietest. They should not be generated by the same job, on the same schedule, from the same query — the single most common cause of both being wrong at once.
The five ways the archive leaks into the window
- Republished timestamps. A story edited for a typo gets a new publication date, re-enters the window and displaces something genuinely new. Whether an edit justifies a new date is an editorial decision before it is a technical one — see what a correction owes the reader and an update does not.
- Non-article URLs. Tag pages, author pages, section indexes and paginated lists all have publication dates in some content models, so a query written as "recently published things" collects them.
- Scheduled stories that flip live twice. A story that publishes, unpublishes and republishes can appear with 2 different dates in the same window, which is a symptom of the scheduling problem covered in scheduled stories that go live late or twice.
- Syndicated duplicates. The same article under a partner URL or a second masthead, both eligible, both submitted, competing with each other.
- A prune that never runs. The most common of all: entries are appended on publish and removed by the same job, so a quiet Sunday leaves Friday's stories in a window that claims to hold 2 days.
Generate it as an event stream with a prune on a clock
- Subscribe to publish events rather than polling the content store. The same event that invalidates caches drives the sitemap, which keeps them from disagreeing about what is live.
- Append on publish. One entry per eligible article, written to a small store the generator owns, with the publication instant, the title and the language.
- Filter at generation, not at insertion. Eligibility is a function of the clock, so it has to be evaluated when the file is rendered — a flag written at insert time is right once and wrong from then on.
- Prune on a timer, independent of traffic and publishing volume, and treat the prune as the thing that keeps the promise the file makes.
- Split before the cap, not after it. Above 1,000 entries the file has to become several, referenced from a sitemap index, and a newsroom that occasionally publishes 1,200 stories in a day should have that split working before the day it needs it.
- Give the file its own cache key and a short time-to-live, and purge it in the same publish event that purges the story — the key-set discipline in surrogate keys and purging one story rather than the site applies to sitemaps exactly as it applies to pages.
The last step is the one missed on a decoupled stack. When the site is statically built, the sitemap is often produced at build time, so its clock is your deploy schedule rather than the newsroom's — a real problem on a quiet day and an invisible one on a busy day. Whether the file is rendered by the CMS, the front end, or a small service that does nothing else, is one of the practical differences between the options in headless or hybrid rendering for a news site.
A news sitemap makes one promise: everything in here is from the last two days. A file that breaks that promise is worse than no file.
Two boundaries worth naming. Search-engine rules change, so treat every number here as dated and verify it against current documentation before building to it — what lasts is the shape, a small fresh window plus a separate archive. And a sitemap is a discovery aid rather than a ranking mechanism, so if traffic has fallen it is rarely the cause and rarely the fix; that investigation is why search traffic fell after the replatform.
The generator is a small piece of software with one job, an obvious failure mode and a natural alert — the profile of work we build as internal tools and ops systems. How the story body is stored decides how cheaply it can tell a substantive rewrite from a typo fix, one more reason the block body versus markup blob decision reaches beyond rendering. The rest of this silo sits under CMS and publishing platform engineering, and our wider work for publishers is in the media and publishing practice.
Frequently asked questions
Short answers to the follow-ups this page tends to raise.
How many URLs can a news sitemap contain?
Google's documentation says a news sitemap may have up to 1,000 news entries, and that sitemaps above that should be split into several smaller files referenced from a sitemap index. That is far below the general sitemaps protocol limit of 50,000 URLs and 50MB uncompressed per file, which still governs your ordinary archive sitemaps. Confirm both numbers against the current documentation before building to them.
What is the difference between a news sitemap and a standard XML sitemap?
A news sitemap is a small rolling window describing what you have just published; a standard sitemap describes everything you want crawled, with no time window. They coexist: the news file carries the last 2 days and per-article publication metadata, the archive lives in ordinary sitemaps behind an index. Serving both purposes from one file produces a file too large to be fresh and too fresh to be complete.
Should old articles be deleted from the news sitemap or just have their metadata removed?
Either works — Google's documentation says to remove the URLs once articles are older than 2 days, or to remove the news metadata from those entries. Removing the entry entirely is simpler to reason about and keeps the file small, which is what you want given the 1,000-entry cap. Whichever you choose, the important property is that the removal happens on a clock rather than as a side effect of the next publish.
Does a large archive need its own sitemap strategy?
Yes, and it should be entirely separate from the news file. Split the archive into chunks well under the 50,000-URL limit, group them by something stable such as a year or a section, and reference them from a sitemap index. Chunking by a stable attribute means re-crawling one segment does not require regenerating every file, which matters when the archive runs to millions of URLs.
- sitemaps
- SEO infrastructure
- publishing
- crawling
The work behind this page
Builds from our portfolio that this page draws on.
Brief Forge
Contract review AI for solo lawyers and small firms — extract, score, and redline contracts in minutes.
Legal TechNotewell
An AI meeting assistant that records and transcribes every meeting, extracts the decisions and action items, assigns owners and due dates, and tracks follow-through until it's done.
Productivity AIRead next
- Surrogate keys: purging one story without flushing the front pageOne story lives on six surfaces. The keys attached to those responses at render time decide whether a correction reaches all six, or whether somebody asks for a full flush at the worst moment.definition
- Some readers still see the old version of a corrected storyA correction that is right for you and wrong for a colleague is held by exactly one layer. Ten minutes of evidence tells you which, and stops the reflex to flush everything.diagnostic
Working on something in this space?
Tell us where you are in a sentence or two. We'll tell you honestly whether we're the right team, and what a sensible first slice of the work looks like.
Start the conversation