Technical SEO

The market's technical baseline: what we found on 39 stores

On 7 and 8 August 2026 we measured live online stores and service sites from the outside: canonicals, sitemaps, structured data, first response time, PHP version. This is not a bad market — it is the baseline every new store competes against.

September 2, 2026
10 min read

On 7 and 8 August 2026 we measured the technical state of live sites — online stores and service sites across a range of niches. No admin access, no hosting password, no involvement from the owners. Everything described below is what a site hands to anyone who opens it: response codes, time to first byte, sitemap, canonical, structured data, hreflang, certificate and the PHP version in the headers.

This is not a piece about a bad market. It is a description of the baseline every new store competes against. Most of the gaps below can be closed in one evening, which is why they read better as a list of your own opportunities than of someone else's mistakes.

How we measured, and why from the outside

Every measurement is a request to a public address and a reading of the response. Headers, the HTML of the homepage, robots.txt, the sitemap, and a product page wherever one could be opened. Three reasons to work this way.

This is how a crawler sees a site. Whatever is invisible from the outside does not exist for indexing, no matter how tidy the admin panel is inside.

It is the only way to compare yourself with a competitor. You will never get into their panel, yet from the outside you see exactly what Google sees.

It is fast. A few minutes per site. So the full technical sweep — PHP version, whether the sitemap is usable, certificate state — covers 39 sites. The per-niche breakdowns below are separate samples of four to eight sites each, taken on the same two days. They are different sets, and wherever their numbers disagree we say so.

What an external measurement cannot see gets its own section at the end. The list is longer than we would like.

Six gaps that keep repeating

No canonical on the homepage at all

The most common finding of the whole series. A canonical is the line where a page tells search «this is my real address». Without it, every variant of the same page is entitled to count as a separate one: with and without www, with a sort parameter, with a campaign tag in the link, with and without a trailing slash.

Niche Homepages with no canonical
building materials 5 of 6
stationery 5 of 6
optics 5 of 7
power tools 4 of 5
footwear 4 of 5
textiles 4 of 6
household chemicals 4 of 6
furniture 3 of 4
jewellery 3 of 4

The homepage is the simplest page on a site and the first one anyone thinks about. If the canonical is missing there, it is certainly missing in the catalogue and the filters — and the catalogue is exactly where duplicates are born. We covered the mechanics and the checks separately: canonicalisation and removing duplicate URLs.

The «Home → Category → Product» trail is drawn almost everywhere. The markup that explains that trail to search is almost nowhere.

Niche Sites with no breadcrumb markup
optics 7 of 7
building materials 6 of 6
stationery 6 of 6
textiles 6 of 6
power tools 5 of 5
footwear 5 of 5
medicine 4 of 4
jewellery 4 of 4

Eight niches in a row without a single exception. A result like that usually means not carelessness but that the store template never covered the topic, and nobody opened the question after installation.

The sitemap: missing, borrowed or far too large

Across the 39-site sweep, six have no usable sitemap, and on one more the sitemap points to an outside domain. Search receives a list of addresses that do not belong to that site.

The other side of the problem is size. Medians by niche:

Niche Median URLs in sitemap Largest sitemap in niche
furniture 93,960 over 150,000
stationery 33,158 over 150,000
jewellery 20,898 55,983
power tools 19,962 32,623
household chemicals 16,459 79,892
building materials 15,952 24,557
footwear 12,330 13,700

A store with a few thousand products and a sitemap of ninety thousand addresses does not have ninety thousand pages. It has the same products laid out across filters, sort orders and tags. What to do about it is in the breakdown of sitemaps and robots.txt, and you can look at your own quickly with this tool.

PHP that no longer receives security updates

Three sites in the 39-site sweep. In the building materials sample, four of six. One more turned up in each of jewellery out of four, stationery out of six, household chemicals out of six and construction firms out of eight.

The gap between «three of thirty-nine» and «four of six» is not an error but two different samples. And it is telling in itself: a market average hides the niches where an outdated build is the normal state of affairs. This is no longer a search question. An unsupported version means nobody will patch the vulnerabilities found in it.

The server's first response

Time to first byte is not site speed yet — only how long the server thinks before the first character of the answer. Images, styles and scripts come after that.

Niche Median first response
legal services 772.3 ms
furniture 683.9 ms
jewellery 614.5 ms
education 497.9 ms
power tools 458.8 ms
building materials 436.1 ms
optics 426.4 ms
construction firms 260.6 ms
footwear 211.8 ms
travel 185.6 ms

The spread between niches is almost fourfold, and catalogue size does not explain it: footwear, with a median catalogue of 12,330 addresses, answers faster than legal sites with a median of 518. In furniture, the first response takes longer than a second on two sites out of four.

The product is not marked up

A product page could be opened on 30 sites. Ten of them carry Product markup, ten carry Offer price markup, four have their specifications marked up and three have a rating. Two thirds of these stores show search a page from which neither what it is nor what it costs can be read.

Separately, some sites carry no structured data at all: four of six in stationery, three of seven in optics, three of six in household chemicals. What this looks like in code is in the breakdown of structured data.

What it costs the owner

No percentages here: we measured code, not the till. But the mechanism behind each point is direct.

Duplicates eat the crawl. A crawler arrives with a limited budget of requests. If the sitemap walks it through tens of thousands of variants of one catalogue, that budget goes on copies while new products wait their turn for days.

Without Product and Offer the snippet stays plain text. Price, availability and rating in the results are read from markup. No markup, no lines — and next to you stands a competitor who has them.

Without breadcrumb markup the path is invisible in the results. Instead of a readable «section → subsection → product» the user sees a bare URL.

A slow first response multiplies into everything else. Seven hundred milliseconds to the first byte happens before the browser has downloaded a single file. Everything else is added on top of that number.

An old PHP version is no longer a marketing matter. It is an open risk to the customer and order database.

The wider list of things worth going through before a season is collected in our technical checklist for an online store.

Fifteen minutes to check your own

Every command reads your site's public response and changes nothing.

1. Canonical on the homepage.

curl -s https://your-site.com/ | grep -io '<link[^>]*canonical[^>]*>'

Empty output is your first job. A line pointing at another domain, or carrying a parameter, is a job too.

2. Whether a sitemap is declared, and what is in it.

curl -s https://your-site.com/robots.txt | grep -i sitemap
curl -s https://your-site.com/sitemap.xml | grep -c '<loc>'

Compare the second number with the count of products and categories in your admin panel. A gap of several times over means duplicates.

3. Duplicates inside the sitemap itself.

curl -s https://your-site.com/sitemap.xml \
  | grep -o '<loc>[^<]*' | sort | uniq -d | wc -l

It should be zero.

4. First response.

curl -s -o /dev/null -w 'to first byte: %{time_starttransfer} s\n' \
  https://your-site.com/

Three runs in a row, take the worst. There is something to compare against: the niche medians above run from 185.6 to 772.3 ms.

5. Markup on a product page.

curl -s https://your-site.com/product-url | grep -c 'application/ld+json'

Zero means there is no markup at all. One or more means you still need to look at what exactly is marked up.

Response codes across a list of addresses are easy to collect with the status code checker. If after these five points you want the full picture, we run a technical audit starting from the same checks, only across every page rather than the homepage.

Honest limits

An external measurement misses the main thing. It does not know how many visitors you have or where they come from, how many orders are lost in the cart, how your managers work, or whether analytics is configured at all. It sees the façade and draws conclusions about the façade.

A median across four to eight sites is a reference point, not statistics. It shows what counts as normal in a niche and gives no right to claim that the whole market looks that way. One site in a sample can be an outlier, and usually at least one is.

The presence of a tag does not mean it is correct. We recorded whether a canonical exists and whether structured data exists, not whether they point where they should. Correctness is checked by hand, page by page.

And the main one: not a single item on this list converts into money directly. We do not know what a missing Offer costs a particular store, and neither does anyone who quotes a percentage. What we do know is that all of it is visible from the outside, measurable in minutes, and in most cases fixed faster than it gets discussed.

We measure our own site with the same set of checks and published the result together with the commands: a site audit in one day.

Tags

SEOPerformance

🤔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

https://lionex.com.ua/blog/tehnichna-baza-rynku-39-magazyniv

💚 Thank you for helping us grow

Vladyslav Chystiakov

Пише про те, що робить руками: інтернет-магазини на OpenCart, застосунки на Next.js, інтеграції та швидкість сайтів. У статтях — заміри й перевірки, які читач може повторити на своєму проєкті, а не загальні поради. Комерційна розробка з 2015 року.

Frequently asked questions

Answers to common questions on the topic

These are ordinary requests to public addresses: the homepage, robots.txt, the sitemap, a product page. It is exactly what a visitor's browser and a search crawler do, and exactly what anyone who opens the site sees. We did not enter admin panels, did not guess passwords, and we name none of the measured sites.

With the sitemap and the canonical, in that order. The sitemap decides what search will see at all; the canonical decides which of those addresses it treats as one page. Product markup comes third: it changes how a snippet looks, but means little while pages are still duplicating. The PHP version is fixed separately from search, because it is a security question.

Not directly. Markup does not lift a page in the results; it gives search permission to show price, availability and rating in the snippet. The difference shows up not in position but in how your line looks next to a competitor's. We cannot promise a specific gain in clicks from it: that depends on the query, the competition and the price itself.

It is a reference point, not statistics. It shows what counts as a normal state within a niche and gives no right to speak for the whole market. Where the figure is the same across every site in a sample, such as seven of seven with no breadcrumb markup, the conclusion is firmer. Where it is three of six, it is a reason to check yourself rather than a claim about the industry.

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.