Technical SEO

A sitemap that lies: 25,537 entries for 6,857 URLs

The sitemap is either empty, bloated with duplicates 3–4 times over, or points to only one of two language versions. We checked dozens of Ukrainian online stores and collected the typical defects with concrete numbers — from a 0-byte file to 33% of URLs leading to the wrong product.

A sitemap is a file that tells a search engine: here is the full list of pages worth crawling. People rarely open it by hand, so its defects live on for years without anyone noticing: the site works, the pages open, everything seems fine.

We have checked the sitemaps of dozens of Ukrainian online stores — both our own client projects and third-party sites in market samples. Below are the typical breakages, with real numbers.

Defect one: duplicates that bloat the file 3–4 times over

The most common breakage. A product enters the sitemap as many times as the number of categories it sits in — and each time under a different URL.

Concrete measurements from different sites:

  • tool store: 25,537 entries in the sitemap, 6,857 unique URLs — each product appears 3.9 times on average
  • garden machinery store: 33,493 entries, 8,690 unique — 3.85 duplicates per URL
  • garden supplies store: 4,236 entries, 1,300 unique — 3.3 duplicates
  • spice store: 3,971 entries, 590 unique
  • cosmetics store: 271 entries, 116 unique

Why it hurts: crawl budget is not unlimited. The search engine spends it re-crawling the same page under different URLs instead of reaching the ones it has not seen yet. On a catalog of several thousand items, that is the difference between “new products in the index within days” and “within weeks.”

On top of that, duplication makes a page compete with itself: five URLs with identical content split signals among themselves instead of accumulating them on one.

Defect two: the sitemap exists, but it is empty

A separate and even more insidious case: /sitemap.xml returns a 200 code — meaning “all good” — but the response body is zero bytes.

We saw this on several stores in a row: the file exists, the server responds successfully, and there is nothing inside. Automated checks pass such a site — they look at the response code. The search engine receives an empty list and crawls the site only through internal links.

A variation of the same problem: robots.txt contains the line Sitemap: https://site.com.ua/sitemap.xml, but the file itself returns 404. We came across this on four sites in different niches — in three cases the line was inherited from the engine's default template and never checked.

And one more: the Sitemap line in robots.txt is commented out as a placeholder like # Sitemap: https://site.com/sitemap.xml — that is, it was in the template, but nobody uncommented it or put in the real URL.

Defect three: the sitemap points to only one language version

A bilingual site whose sitemap contains URLs in only one of the languages. For the search engine the second language version effectively does not exist — it has to be found by chance, through internal links.

Examples from the measurements:

  • spice store: all 590 unique URLs lead to the Russian version, even though the code declares <html lang="uk"> and hreflang for Ukrainian
  • tool store: 100% of the URLs in the sitemap are Russian-language, while the site serves the Ukrainian version by default
  • garden machinery store: the sitemap contains only the Ukrainian-language branch; the Russian version declared in hreflang did not make it into the sitemap
  • wholesale cosmetics store: not a single Russian-language URL in the sitemap, despite a working bilingual setup with a language switcher

Tellingly, the direction of the “loss” varies: sometimes the Ukrainian version disappears, sometimes the Russian one. This means the cause is not language policy but how the sitemap generator is configured — and that nobody checked the result after configuring it.

Defect four: URLs in the sitemap lead to the wrong place

The costliest case we have come across. On a lingerie store, in a sample of 150 random product URLs from the sitemap, 50 (33%) returned a 301 redirect — and all 50 led to a different item: a different size or a different color (70B instead of 70A, L instead of XL, white instead of black).

At the scale of that catalog, that is about 37 thousand URLs through which a shopper coming from search lands on a product other than the one they were looking for. For a store where size is the main reason for returns, this is not a technical trifle.

Defect five: the sitemap at a non-standard URL

Sometimes a working sitemap exists but is not where crawlers and audit tools look first. We saw a site where /sitemap.xml returned an empty body, /sitemap_index.xml returned the line “SEO XML Sitemap Generator PRO is disabled”, and the real sitemap sat at a non-standard URL and was saved only by being listed in robots.txt.

The reverse case happens too: the sitemap is complete and correct, but there is no Sitemap directive in robots.txt — and the search engine has to guess on its own that the sitemap exists.

What the market samples show

In the samples measured on 7–8 August 2026, the following had no usable sitemap: 6 of 39 sites in the technical sample, 2 of 5 in power tools, 2 of 7 in optics, 1 of 6 in stationery, 1 of 4 in jewelry. In two more cases the sitemap pointed to a different domain — a leftover from a migration that nobody cleaned up.

How to check your sitemap in ten minutes

  1. Open https://your-site.com.ua/sitemap.xml in a browser. If it is empty or returns 404, you have already found the first problem.
  2. Check robots.txt: is there a Sitemap: line, and does it point to a working URL?
  3. Count the duplicates. Save the sitemap and count the total number of entries and the number of unique URLs:

curl -s https://your-site.com.ua/sitemap.xml | grep -o '<loc>[^<]*' | sed 's/<loc>//' | sort | tee /tmp/all.txt | uniq | wc -l && wc -l < /tmp/all.txt

The two numbers should match. If the second one is two or three times larger, you have duplication.

  1. If the site is bilingual, check whether the sitemap has URLs in both languages: grep -c '/ua/' /tmp/all.txt and the same for the other language branch.
  2. Take 20 random URLs from the sitemap and check their response codes — all should return 200, not 301 or 404.

The limits of this data

The figures for specific sites are measurements taken on a specific date, and some of them concern projects that may have changed since then. We deliberately do not give names: the goal is to show typical breakages and a way to find them, not to stage a public teardown of other people's sites or our own client sites.

The market samples are small (4–8 sites per niche), so the shares by niche describe these particular sites on the date of the check, not the market as a whole.

Tags

SEOE-commerce

Did you like the article?

Your opinion helps us create better content

Share with friends

Found something useful?

Help others learn about it - share the article on social networks

Thank you for helping us grow

Founder of LIONEX

Vladyslav Chystiakov

Writes about what he builds himself: online stores on OpenCart, applications on Next.js, integrations and site speed. The articles carry measurements and checks a reader can repeat on their own project, not general advice. Commercial development since 2015.

Questions

Frequently asked questions

Answers to common questions on the topic

How do I know whether my sitemap has duplicates?

Count the total number of <loc> entries and the number of unique URLs. If the first is two or three times the second, you have duplication: a product enters the sitemap once per category it belongs to. In our measurements we saw ratios such as 25,537 entries to 6,857 unique URLs.

The sitemap returns 200 but is empty. Is that a problem?

Yes, and an insidious one: automated checks pass such a site because they look at the response code. The search engine receives an empty list and crawls the site only through internal links. Check the file's contents, not its status code.

Do sitemap duplicates hurt rankings?

Nobody guarantees a direct ranking drop. What is clearly visible is wasted crawl budget: the engine re-crawls one page under different URLs instead of new pages. On a large catalogue that delays new products entering the index.

What if the sitemap contains only one language version?

Check the sitemap generator's settings: in most engines language branches are added separately. This is the most common reason a second language version stays out of the index for years despite correctly declared hreflang.

How do I check that sitemap URLs lead to working pages?

Take 20 random URLs from the sitemap and check their response codes — all should return 200. In one of our measurements, 33% of sampled URLs returned a 301, and every one of them led to a different size or colour of the product.

Get the best articles by email

Subscribe to our newsletter and receive useful tips, insights and news about web development, marketing and business.

We respect your privacy. You can unsubscribe at any time.