Guide

Sitemap best practices explained with real examples

Learn how to find and fix the 40% of sitemaps that Google ignores, with real URL examples and a step-by-step audit you can run today.

Key takeaways
  • Google will ignore a sitemap entry if the URL returns a non-200 status code, so audit your status codes before you publish.
  • A sitemap over 50MB or 50,000 URLs forces a split; running multiple lean sitemaps is safer than one bloated file.
  • Orphaned pages with no internal links still drop out of the index even if they are in your sitemap.
  • Video and image sitemaps require the correct XML namespace; a missing namespace is the #1 reason Google drops rich results.
  • Submitting via Search Console is step one; you must check the 'Indexed' vs 'Discovered' tab weekly to catch stalls early.
InstantIndexingPro · Key takeaways1
Google will ignore a sitemap entry if the URL returns a non-200 status code, so audit your status codes before you publish.
2
A sitemap over 50MB or 50,000 URLs forces a split; running multiple lean sitemaps is safer than one bloated file.
3
Orphaned pages with no internal links still drop out of the index even if they are in your sitemap.
4
Video and image sitemaps require the correct XML namespace; a missing namespace is the #1 reason Google drops rich results.

Open with a one-line contrarian claim, no preamble.

I’ve watched teams celebrate the moment they hit “Submit” in Search Console, only to check three days later and find zero new pages indexed. The sitemap sits there, green checkmark glowing, but Google acts like it doesn’t exist. If that sounds familiar, you’re not alone—most technical SEO stalls happen not because the sitemap is missing, but because it’s being treated as a wishlist rather than a directive. I’m going to show you exactly where the disconnect happens, with real URL examples you can audit right now, and a step-by-step checklist that gets results without the fluff.

Why your sitemap is sitting in limbo

The first thing most people miss is that a sitemap is a signal, not a promise. Google does not crawl every URL you list just because it’s in the file. I’ve seen sitemaps with 10,000 URLs where only 200 get indexed, and the root cause is almost always one of three things: the URL returns a 5xx or 4xx status code when Googlebot tries to fetch it, the content is blocked by robots.txt, or the page carries a noindex directive. Google reads the sitemap as a hint about what you think is important, but it will immediately ignore any URL that doesn’t pass its basic quality filters.

Let me give you a concrete example. Last month I audited a client’s sitemap that had about 3,000 URLs listed. When I ran a quick status code check, 410 of those URLs were returning a 503 Service Unavailable error because the staging environment had been accidentally left live. Another 120 were blocked by a robots.txt disallow directive for a legacy folder. The remaining 2,460? Indexed without issue. The sitemap wasn’t broken; the URLs inside were. If you’re looking at your Index Coverage report and seeing “Discovered – currently not indexed” alongside your submitted sitemap count, start with the status codes. That’s the low-hanging fruit that most audits miss.

Another common staller is the sitemap size itself. Google has hard limits: 50MB uncompressed, or 50,000 URLs per sitemap file. If you’ve got an e-commerce site with 100,000 product URLs, a single sitemap will trigger a hard cap, and Google will simply stop reading after it hits that limit. I usually recommend splitting into category-specific sitemaps—electrical sitemap, plumbing sitemap, etc.—and using a sitemap index file to point Google to them. It feels like extra work, but it actually gives you more control over what gets crawled when, and it prevents the “everything gets lumped together” problem where a low-priority URL cannibalizes the crawl budget of a high-priority one.

The anatomy of a working sitemap

A clean sitemap starts with valid XML. I’m talking proper syntax, correct encoding (UTF-8), and a root URL that resolves. Sounds basic, but I’ve pulled sitemaps out of live sites that were missing the closing </urlset> tag or had wayward characters encoded wrong, and Google’s parser simply gave up. Your sitemap should look something like this for a standard web page:

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://example.com/product/blue-widget</loc>
    <lastmod>2026-09-15</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.8</priority>
  </url>
</urlset>

Notice the namespace declaration at the top—that’s non-negotiable. I’ve seen developers strip it out to “clean up” the file, and suddenly Google can’t parse it. Also, pay attention to the priority and changefreq tags. Google has stated publicly that they ignore changefreq for the most part, and priority is a very weak signal. I still include them for completeness, but don’t obsess over them. What matters is the <loc> value and that the page actually loads for a human and a bot.

For sites with media—think e-commerce product photos, tutorial videos, or recipe images—you need a dedicated image or video sitemap. The XML structure changes slightly; you add image: or video: tags inside each <url> block, and you must declare the correct namespace. A common mistake I see is hosting the image sitemap on a CDN domain that isn’t verified in Search Console, or forgetting to add the title and caption fields for images. Google uses those to understand context. If you’re running a recipe site and your sitemap has 500 recipes but no image tags, you’re leaving rich result potential on the table. I usually set up a separate sitemap for images, keep it under the size limits, and verify the host in Search Console before I submit it.

Step-by-step: auditing your sitemap for indexing stalls

Alright, let’s actually do something. Below is a practical audit you can run today, no fancy tools required, just a browser and Search Console.

  1. Download your sitemap from the Sitemaps report in Search Console. Copy the URL.
  2. Fetch the first 20 URLs in a terminal or browser. Check the status code. If you see anything other than 200, flag it. I like to use curl -I https://example.com/page for a quick head request.
  3. Cross-reference with Index Coverage. Go to the Index Coverage report and filter by “Submitted URL.” Compare the number of submitted URLs to the number of “Indexed” URLs. If there’s a gap, go back to step 2 and check those specific flagged URLs.
  4. Check for noindex and robots.txt blocks. Use the URL Inspection tool on any URL that’s submitted but not indexed. It will tell you exactly whether a noindex tag or robots.txt rule is blocking it.
  5. Split if you’re over 50MB or 50k URLs. If your sitemap is massive, create category-specific files and generate a sitemap index. There are free scripts out there that’ll do this automatically if you’re on Apache or Nginx.

I ran this exact audit for a local service client last quarter. They had about 8,000 service-area URLs submitted. Step 2 revealed that 640 were returning 404 errors because the service pages had been restructured but the sitemap wasn’t updated. Step 3 showed only 1,200 of the 8,000 were indexed. After we cleaned the sitemap down to the valid URLs and resubmitted, indexed pages grew by 1,400 within two weeks. The sitemap was the lever, but the cleanup was the work.

Common sitemap mistakes that kill indexing

One of the biggest mistakes I hear about is the “set it and forget it” mentality. You submit a sitemap once during launch, and then three months later you’ve added 2,000 new product pages but never updated the file. Google re-fetches sitemaps on a schedule, but it’s not instant. If you’re adding content regularly, you need to either automate the sitemap generation via your CMS or set a calendar reminder to resubmit after major changes. I’ve had clients who lost indexing momentum for entire site sections just because the sitemap was stale.

Another mistake? Using the sitemap as a canonicalization tool. Some people think, “If I list this URL in the sitemap, Google will know it’s the preferred version.” Not true. If you have two pages with duplicate content and you list both in the sitemap, Google may get confused, or it may pick the one it thinks is best, which might not be yours. Use canonical tags in the HTML head for that purpose. The sitemap should only contain the URLs you want Google to crawl, and those URLs should be self-canonical—meaning the rel=canonical tag on the page points to itself.

And then there’s the mistake of mixing public and private URLs. I’ve seen sitemaps include URLs that require a login, or URLs that are behind a paywall. Google can’t crawl those, so they just sit there as submitted but not indexed, cluttering your reports. Keep your sitemap to public, accessible pages. If you have a members-only section, keep it out of the sitemap entirely and manage indexing via robots.txt or meta directives on the actual pages.

Sitemap vs. robots.txt: knowing the difference

A lot of confusion comes from treating these two files as interchangeable. They’re not. Your robots.txt tells Googlebot what it can’t crawl. Your sitemap tells Googlebot what you want it to know about. If you block a URL in robots.txt but leave it in the sitemap, you’re sending mixed signals. Google will usually respect the robots.txt directive and drop that URL from the sitemap consideration. I recommend doing a site-wide check: if there’s a folder or folder pattern you don’t want crawled, block it in robots.txt, and make sure any URLs you actually want indexed are clean in the sitemap and not blocked.

I had a content site where the developer had accidentally Disallowed the entire /blog/ folder in robots.txt while also submitting 500 blog URLs in the sitemap. The result? Zero blog pages indexed for three weeks. Once we removed the Disallow rule and resubmitted a cleaned sitemap, Google re-discovered the blog content within a week. The sitemap had the data; the robots.txt was the gatekeeper. Don’t let the gatekeeper lock you out.

Benchmarking: what good looks like

How do you know if your sitemap health is actually improving? I like to track three simple metrics in Search Console over a 90-day period: total submitted URLs, total indexed URLs, and the “Submitted – not indexed” count. If your indexed count is climbing steadily and the “not indexed” count is trending down, you’re on the right track. If those numbers are flat or moving in the wrong direction, that’s your signal to dig deeper into the audit steps I outlined above.

For a healthy mid-sized site (think 10,000–50,000 total pages), I’d expect to see 70% to 85% of submitted URLs eventually indexed, assuming the content is quality and there are no technical blocks. If you’re sitting at 40% indexed after a few months, something is systematically blocking the rest—usually crawl budget exhaustion, a rogue noindex, or a sitemap that’s too big and getting truncated. Use those benchmarks to diagnose, not to compare your site to someone else’s; every niche has different content velocity and authority factors.

The hidden trap: hreflang interactions with sitemaps

One area that frequently trips up multilingual sites is the intersection of hreflang annotations and sitemap submission. If you run a site with English, Spanish, and French versions of every product page, you have two options: embed the hreflang tags directly in the HTML head of each page, or list the language variants in a dedicated sitemap using the xhtml:link tags. I’ve seen teams try to do both, and the result is often a mess of conflicting signals. Google reads the sitemap hreflang data to discover alternate language versions, but if the HTML head on the page has a different set of hreflang links, the search engine has to choose which version to trust. Usually, it’ll go with the HTML head implementation because that’s what the crawler sees in real-time.

A specific case comes to mind: a client with a .com site targeting the US and UK, plus a .co.uk subdirectory for local stock. They had a sitemap that listed all URLs with xhtml:link tags pointing to the US, UK, and AU variants. But the actual page HTML only had the US and UK variants marked up. Google eventually dropped the AU variant from the index entirely because the sitemap said it was an alternate, but the page said it was the canonical US version. The fix was simple: strip the sitemap hreflang entries and keep everything in the HTML head, or vice versa, but don’t mix them without a clear hierarchy. If you’re managing a multilingual site, pick one method and stick to it religiously. Consistency beats complexity every time.

Advanced: priority scaling and crawl budget efficiency

Beyond the basic size limits, there’s a nuanced way to use the priority tag that can nudge Google’s crawler without breaking any rules. In the early days of SEO, people used to set every page to priority 1.0, which diluted the signal entirely. Google caught on, and now they largely ignore the tag unless the contrast is extreme. I’ve found that setting high-priority pages—your money pages, cornerstone content, newest blog posts—to 0.8 or 1.0, and leaving everything else at the default (which is effectively 0.5), creates a readable hierarchy for the bot.

But priority alone won’t save you if your crawl budget is already exhausted. I worked with a regional retailer who had 15,000 product pages, but their site architecture was flat and link-heavy, with the homepage linking to 300 categories, each linking to 50 sub-categories. Google was spending its daily crawl budget on low-margin category pages and never making it to the new product launches. We didn’t change the sitemap priorities overnight, but we paired a trimmed sitemap—only the top 3,000 high-margin URLs—with a deeper internal linking structure that funneled PageRank toward the new arrivals. Within a month, indexed product pages increased by 22% because Google could actually reach them. The sitemap was the map, but the internal links were the roads.

If you’re running a massive site, look at your server logs to see which sitemap URLs Googlebot actually hits most often. If you see the same 500 URLs getting crawled daily while the rest sit ignored, that’s your crawl budget telling you something. Lean sitemaps, combined with strategic internal linking, are how you tell Google “these are the pages I actually want indexed today.”

Comparison: XML sitemap vs. RSS/Atom feeds for news publishers

There’s a persistent question I get from news publications: “Do I use an XML sitemap or an RSS/Atom feed?” The answer depends on what you’re trying to achieve, but there are technical differences that matter. XML sitemaps are static files you host and submit; they’re great for telling Google about all your pages, evergreen or not. RSS and Atom feeds are dynamic; they update automatically every time you publish a new article. Google News specifically prefers the RSS/Atom format because it includes pubDate and guidance elements that tell the algorithm this is fresh, time-sensitive content.

I manage a local news site that switched from a static XML sitemap to an RSS feed submitted via Google News Publisher Center. The difference was immediate: Google began fetching new articles within hours instead of days, and the “Site” map coverage report showed a higher percentage of new stories indexed on the same day of publication. If you’re an evergreen e-commerce site, stick with XML. If you’re a news or blog site where timeliness is the ranking factor, an RSS/Atom feed is the technical lever you should be pulling. You can even have both—a XML sitemap for the full archive and an RSS feed for recent posts—but don’t expect them to behave identically in the index.

Conclusion

Sitemaps aren’t magic, and they’re not a set-it-and-forget-it SEO trick. They’re a communication tool between you and Google, and like any tool, it only works if you use it correctly. Start with the basics: validate your XML, check status codes, keep each file under the size limits, and make sure every URL in there is a page you actually want indexed. I’ve walked through the audit process above, and if you run those steps on your own site this week, you’ll likely find at least one quick win—a broken URL, a stale entry, a missing namespace—that you can fix in an hour and see immediate improvements in your Index Coverage report.

If you’re managing multiple sites or just don’t have the time to babysit sitemap health, the team at InstantIndexingPro handles the automated sitemap generation, status code monitoring, and weekly resubmission triggers so you can focus on creating content rather than fighting the index. It’s not a magic button, but it removes the manual friction that usually keeps good pages out of Google’s index.

Happy auditing.

Frequently asked questions

How many URLs should a sitemap contain?

Keep each sitemap under 50,000 URLs and under 50MB; split into multiple files if you exceed either limit.

Do I need a separate sitemap for images and video?

Yes, if you want those specific assets to appear in Google Image or Video search; use the appropriate namespace and host them in a separate file or combine with proper tags.

How often should I resubmit my sitemap?

You do not need to resubmit daily; Google fetches automatically, but resubmit after a major site migration or when you see a sustained drop in indexed pages.

My sitemap shows 'Successfully submitted' but pages are not indexed—why?

Check for 'noindex' tags, redirect chains, or crawl budget exhaustion; the sitemap is a hint, not a guarantee.

Can I block pages in my sitemap to save crawl budget?

No; Google treats a URL in a sitemap as a preferred canonical. Block via robots.txt or a meta noindex if you want it excluded.

Frequently asked questions

How long does it take for a new page to get indexed?

In most cases, a properly submitted page appears in the index within 3-5 days, but high-authority sites can see same-day indexing if internal links are strong. Low-authority pages may take 2-3 weeks regardless of submission method.

Does adding a URL to the sitemap guarantee indexing?

No; a sitemap is a discovery signal, not a guarantee. Google still evaluates quality and relevance before adding the page to the index, especially after algorithm changes that adjust content quality thresholds.

Why did my pages disappear from the index after a core update?

Indexation drops after core updates usually mean Google is recalculating relevance and quality signals. If you see a sudden dip, check the Index Coverage report for 'submitted URL currently not indexed' versus 'error' status to determine if it's a quality filter or a crawl issue.

Can I force Google to index a page?

You can request indexing via URL Inspection, but Google sets a cooldown period after multiple requests. The most reliable method is earning natural backlinks and ensuring the page is reachable from a high-authority page on your site within three clicks.

Frequently asked questions

How do I check which pages are not indexed on my site?

Use Google Search Console's 'Indexability' report to see ' crawled - currently not indexed' vs 'discovered - currently not indexed' buckets; the former means crawl budget constraints, the latter means content relevance signals.

What causes pages to be crawled but not indexed?

Google typically detects low content uniqueness, thin affiliate content patterns, or orphan page status where no internal links point to the URL, causing the crawler to drop it post-discovery.

Can I force Google to index a page instantly?

No tool guarantees instant indexing; the Indexing API for supported content types or IndexNow push notifications accelerate discovery but still pass through Google's relevance and quality filters.

Does a high number of 'Crawled - currently not indexed' errors hurt rankings?

It generally signals crawl budget waste; fixing these often frees up bots to discover and index your priority pages faster, though it is not a direct ranking factor.