🍱 Lunchbox Hands

seo

IndexNow vs. Sitemaps: What It Does, Which Engines Use It, and Why Google Is Not One

IndexNow pushes URLs to search engines instead of waiting to be crawled. Which engines actually consume it, how key verification works, every response code, and an honest read on whether it is worth your time.

You publish a page. Now you wait — for a crawler to come back, notice the change, and re-index. That wait can be hours or weeks, and nothing you do makes it deterministic. IndexNow inverts the direction: instead of waiting to be crawled, you tell the search engine the moment something changes.

It’s a genuinely simple protocol, it takes about twenty minutes to set up, and its usefulness depends almost entirely on one fact that gets buried in most write-ups: Google does not participate.

Push vs. pull

Sitemaps and IndexNow solve overlapping problems from opposite ends.

XML sitemapIndexNow
DirectionPull — the engine fetches when it decides toPush — you notify on change
LatencyHours to weeksSeconds to minutes to receive
CommunicatesThe full set of URLs that existOnly URLs that just changed
Good atDiscovery, site structure, completenessFreshness, deletions, urgent fixes
GoogleYesNo
Bing, Yandex, Naver, Seznam, Yep, AmazonYesYes

They are not substitutes. A sitemap answers “what pages does this site have?” IndexNow answers “this specific page changed just now.” A site that publishes frequently wants both: the sitemap as the canonical inventory, IndexNow as the change notification. If you don’t have a sitemap yet, that’s the higher-value item — our sitemap generator will produce one.

How the protocol works

Three steps, and the whole thing is one HTTP request.

1. Generate a key. A hex string, 8 to 128 characters. It’s not a secret in any meaningful sense — it’s a proof of control, like a DNS TXT record.

2. Host the key file. Put a plain-text file at your domain root, named <your-key>.txt, containing only the key:

https://example.com/a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6.txt
→ a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6

It must be UTF-8, publicly reachable with no login, and return the key and nothing else. This is the entire verification mechanism: it proves you control the host, so you can’t submit URLs for someone else’s site.

3. POST the URLs.

POST https://api.indexnow.org/indexnow HTTP/1.1
Content-Type: application/json; charset=utf-8

{
  "host": "example.com",
  "key": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6",
  "keyLocation": "https://example.com/a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6.txt",
  "urlList": [
    "https://example.com/blog/new-post",
    "https://example.com/blog/updated-post"
  ]
}

keyLocation is optional if the file is at the root under its default name. Every URL in urlList must be on the declared host — cross-host submissions are rejected, which is the other half of the anti-abuse design.

The spec permits up to 10,000 URLs per POST. Our IndexNow submitter caps at 100 per submission, which is a deliberate choice for an interactive tool — 100 covers any realistic hand-driven “I just published a batch” case, and it keeps the failure surface small when something’s wrong with your key.

The endpoint choice

api.indexnow.org is the shared endpoint: submit once and it forwards to every participating engine. You can submit to an engine-specific endpoint (bing.com/indexnow, yandex.com/indexnow) instead, but there’s no benefit — the participating engines share submissions with each other by design. Use the shared one.

Response codes

The status codes are where debugging actually happens, and they’re specific enough to diagnose from:

CodeMeaningWhat to do
200 OKAcceptedNothing
202 AcceptedReceived; key validation still pendingUsually fine — check the key file is reachable
400 Bad RequestMalformed JSON or invalid fieldsCheck your payload shape
403 ForbiddenKey file not found, not readable, or contents don’t matchThe most common real failure
422 Unprocessable EntityURLs don’t belong to the declared host, or the key doesn’t match the URL patternCheck host matches every URL
429 Too Many RequestsYou exceeded a submission thresholdBack off

403 is the one you’ll hit, and it’s almost always the key file. Fetch it in a browser yourself before debugging anything else: it must return the key as plain text, with a 200, no redirect, no login wall, and no HTML wrapper. A CDN or framework that serves a styled 404 page for unknown paths will produce a 200-with-HTML that looks fine in a browser tab and fails validation.

On rate limits: IndexNow doesn’t publish exact numbers, and each participating engine sets its own per-site thresholds. A 429 means you’ve crossed one. Our tool adds its own limit of 10 submissions per minute on top, mostly to stop an accidental loop from burning your site’s quota.

The Google question

This is the fact that determines whether IndexNow matters to you, so let’s be direct about it.

Google does not use IndexNow. They said in late 2021 that they would test it, and the outcome of that test was that they did not adopt it. Google’s position has remained that their crawl scheduling is driven by their own signals, and their instant-indexing API is restricted to JobPosting and BroadcastEvent structured data — not general pages.

The engines that do consume IndexNow are Bing, Yandex, Naver, Seznam.cz, Yep, and Amazon. That’s a real audience with real caveats:

  • Bing is the meaningful one for most Western sites, and it’s larger than its direct market share suggests — it powers DuckDuckGo, Ecosia, and Yahoo, and it is a training and retrieval source for several AI search products. “Bing traffic” understates the reach of being indexed in Bing.
  • Yandex, Naver, and Seznam matter enormously if you serve Russia, South Korea, or the Czech Republic, and essentially not at all otherwise.

So the honest cost-benefit: IndexNow is a small, one-time setup for a non-Google benefit. If you’re chasing Google rankings exclusively, it will not move your primary metric. It’s worth doing anyway because the cost is close to zero and the setup is permanent — but don’t let anyone sell it to you as an indexing fix for Google, because it isn’t one.

What actually helps Google index faster

Since that’s the real question behind most IndexNow searches:

  • Fix crawl budget waste. Google spending its crawl on faceted-navigation permutations and parameter duplicates is the most common reason real pages index slowly. Check what’s being crawled in Search Console’s crawl stats.
  • Internal links from pages Google already crawls often. A new page linked from your homepage or a frequently-updated hub gets found much faster than an orphan in a sitemap. This is the single highest-leverage thing on the list.
  • Correct lastmod in your sitemap — and accurate. A sitemap where every URL claims to have changed today is a signal Google learns to ignore.
  • Request indexing in Search Console for genuinely urgent single URLs. Manual, rate-limited, but it works.
  • Don’t accidentally block it. A stray Disallow or a noindex left over from staging outranks every other effort. Check with our robots.txt generator and confirm the page returns a clean 200 with our HTTP status checker. And keep the two mechanisms straight — Disallow doesn’t mean deindex: robots.txt only controls crawling, and blocking a URL you’ve just submitted leaves engines unable to fetch what you told them changed.

None of that is as satisfying as a button that says “index this now,” but it’s what moves the number.

When IndexNow genuinely earns its place

Cases where the push model does real work:

  • News, listings, and anything time-sensitive — job postings, event pages, inventory. Freshness is the product.
  • Removing content. Submitting a URL you’ve deleted or noindexed prompts a recrawl that discovers the change, which is often faster than waiting for the engine to notice a 404 on its own schedule.
  • Fixing something embarrassing. A typo in a title tag that’s live in search results. Push the URL, get it recrawled.
  • Large or frequently-updated sites, where waiting for organic recrawl on thousands of pages is genuinely slow.
  • Automated from your build. The best version of IndexNow is one you never think about: your deploy pipeline POSTs the changed URLs. Most major CMSes have a plugin; a static site can do it in a few lines of CI.

If you publish a handful of pages a month and your audience is Google-first, it’s a nice-to-have. Set it up once, forget it, and spend your actual effort on internal linking.

Tools

For the neighboring topics, see 301 vs. 302 redirects, the on-page SEO checklist, and the structured data guide.