Report
Nearly a third of the type names on the web are not real
A page that publishes structured data names a type, such as Recipe or LocalBusiness, so a search engine knows what the markup describes. I took all the distinct type names the 2025 Web Almanac crawl found, across about 15 million mobile origins and 12 million desktop ones, and checked them against the real Schema.org vocabulary. 682 different strings turned up. Only 473 of them are real types. The other 209, 30.65% of everything written, are typos, encoding mistakes, or names that belong to a different vocabulary altogether.
- Distinct type strings682
- Real Schema.org types473
- Broken markup209
- Share broken30.65%
Key findings
- 682 distinct type names appeared in the 2025 crawl, and only 473 are real Schema.org types.
- 209 type names, 30.65% of everything written, are broken.
- 98 broken names begin with a lower-case letter, the single largest cause.
- WebSite is the most common type on mobile home pages, on 5,555,415 crawled origins.
- BlogPosting appears 3.40 times more often on secondary pages than on home pages.
- 282 crawl rows name a vocabulary that is not Schema.org at all.
98 of the 209 broken names start with a lower-case letter
1 July 2025 · exact site countsHTTP Archive Web Almanac 2025, SEO chapter results. About 15.4 million mobile and 12.2 million desktop origins from the Chrome UX Report list, home page and one secondary page each.
I group the 209 broken strings into five reasons, and the table shows all twenty ungrouped.
| Reason | Count |
|---|---|
| Lower-case initial, so not a type name | 98 |
| Not a Schema.org type | 63 |
| URL-encoded text | 29 |
| Casing error for BreadcrumbList | 2 |
| Placeholder such as -UnknownType- | 2 |
| Casing error for AutoDealer | 1 |
| Casing error for BlogPosting | 1 |
| Casing error for BookStore | 1 |
| Casing error for Campground | 1 |
| Casing error for ContactPoint | 1 |
| Casing error for CreativeWork | 1 |
| Casing error for FAQPage | 1 |
| Casing error for ItemList | 1 |
| Casing error for ListItem | 1 |
| Casing error for LocalBusiness | 1 |
| Casing error for PostalAddress | 1 |
| Casing error for ProfessionalService | 1 |
| Casing error for WebPage | 1 |
| Casing error for WebSite | 1 |
| Casing error for WPSideBar | 1 |
| All broken type strings | 209 |
98 of them start with a lower-case letter, such as localBusiness instead of LocalBusiness. Schema.org always capitalises a type name, so a lower-case initial usually means a field name or a code sample was copied straight into the markup. 63 more use words that sound plausible but do not exist, 29 are URL-encoded text, sixteen types are one letter out of place, and two are the literal placeholder -UnknownType-. I expected encoding to be the big one. It was not. Capitalisation is, and that is good news for you, because a lower-case initial is wrong every time and a validator catches it in seconds.
All 473 real types parse exactly as Schema.org defines them, so the mistakes come from how markup gets written, not from the vocabulary.
WebSite tops mobile home pages, on 5,555,415 crawled origins
1 July 2025 · exact site countsHTTP Archive Web Almanac 2025, SEO chapter results. About 15.4 million mobile and 12.2 million desktop origins from the Chrome UX Report list, home page and one secondary page each.
Below I rank the twelve most common real types on the mobile home page by exact site count.
| Type | Mobile home page sites | Slices with a figure |
|---|---|---|
| WebSite | 5,555,415 | 4 of 4 |
| SearchAction | 4,254,491 | 4 of 4 |
| Organization | 4,037,905 | 4 of 4 |
| WebPage | 3,932,047 | 4 of 4 |
| ListItem | 3,238,336 | 4 of 4 |
| BreadcrumbList | 3,199,010 | 4 of 4 |
| ImageObject | 3,196,580 | 4 of 4 |
| EntryPoint | 2,547,096 | 4 of 4 |
| ReadAction | 2,117,788 | 4 of 4 |
| PropertyValueSpecification | 1,735,971 | 4 of 4 |
| PostalAddress | 1,318,695 | 4 of 4 |
| SiteNavigationElement | 1,056,258 | 4 of 4 |
WebSite leads the field, written into the markup of over five million origins the Almanac crawled. SearchAction and Organization follow close behind, both past four million. Most of the top twelve are the machinery search engines use to read a page, ListItem, BreadcrumbList and ImageObject among them, not content types such as Recipe or Product. That ranking did not surprise me. It does tell you where your company is, though. The types you share with most of the web are the plumbing, and a content type such as Recipe puts you in a far smaller crowd to check your markup against.
41 of the 473 real types have no mobile home page figure at all and are left out, not drawn as zero, because a missing measurement is not a measured zero; the method section covers the four crawl slices.
BlogPosting appears 3.40 times more often on secondary pages
1 July 2025 · exact site countsHTTP Archive Web Almanac 2025, SEO chapter results. About 15.4 million mobile and 12.2 million desktop origins from the Chrome UX Report list, home page and one secondary page each.
The table compares five common types across the crawl's four slices, and a blank cell means the crawl holds no figure for that slice, not that the count is zero.
| Type | Mobile home | Desktop home | Mobile secondary | Desktop secondary | Secondary ÷ home, mobile |
|---|---|---|---|---|---|
| BlogPosting | 149,392 | 141,010 | 508,509 | 338,042 | 3.40 |
| LocalBusiness | 768,451 | 617,024 | 407,852 | 348,935 | 0.53 |
| PostalAddress | 1,318,695 | 1,041,266 | 790,502 | 667,999 | 0.60 |
| OpeningHoursSpecification | 286,042 | 230,140 | 172,743 | 149,077 | 0.60 |
| ContactPoint | 429,492 | 366,903 | 242,855 | 219,428 | 0.57 |
BlogPosting appears 3.40 times more often on a secondary page than on a home page, which fits a blog, because most posts live on their own page. LocalBusiness, PostalAddress, OpeningHoursSpecification and ContactPoint all skew towards the home page instead. Together they describe a business's address, hours and contact details, published where a visitor lands first. This is the finding I trust most on the page, because the pattern matches what a site is for, and it is why the industry pages lean on it. If your business details are marked up only on a contact page, you are the exception here. The home page is where the rest of the web puts them.
This comparison is a table on purpose, because a bar chart has no way to draw an unknown value; the method section explains.
282 crawl rows are not Schema.org at all
The table counts the crawl rows that name a vocabulary other than Schema.org, by the host each one names.
| Host | Rows across the four crawl slices |
|---|---|
| no-context.com/ | 135 |
| data-vocabulary.org/ | 61 |
| schema.googleapis.com/ | 38 |
| adplogger.no/ | 10 |
| schema.contao.org/ | 10 |
| cewe.de/ | 4 |
| microformats.org/ | 4 |
| schemas.org/ | 4 |
| scheme.org/ | 4 |
| ziyuan.baidu.com/ | 4 |
| ma.org/ | 2 |
| shema.org/ | 2 |
| zhanzhang.baidu.com/ | 2 |
| obrnadzor.gov.ru/ | 1 |
| rdf.data-vocabulary.org/ | 1 |
| All fifteen hosts | 282 |
no-context.com/ accounts for 135 of the 282 rows on its own, usually markup a plugin generated without naming a real vocabulary. data-vocabulary.org/ follows with 61, a format Google stopped supporting years ago, and schema.googleapis.com/, which was not meant to appear in a page's own markup at all, adds 38 more. The rest is a long tail of single-figure hosts, typos and mirrors of the real Schema.org address. What would I check on your site? The vocabulary address your plugin writes, once. Nothing visibly breaks when it is wrong, which is exactly why nobody looks.
These 282 rows are not part of the 682 distinct type strings above, and I do not add the two together, because a row in the crawl and a distinct name count different things.
How this is measured
I read the Web Almanac's 2025 SEO chapter results, a crawl of about 15.4 million mobile origins and 12.2 million desktop ones, each with its home page and one secondary page. The type strings it recorded came from the @type or itemtype attribute on that page's own structured data, whatever the site actually shipped. I filtered all of those strings against a pinned copy of the real Schema.org vocabulary before counting anything. That filter is what tells a real type from a broken one, and you can run the same check on your own markup with nothing more than the vocabulary file.
I do not combine the four crawl slices into one total anywhere on this page. A type that appears on both a mobile home page and a desktop home page is a real thing happening on two different visits, not the same visit counted twice, but adding the slices together would blur that difference into a single misleading number. Each figure stays inside the one slice it was measured on.
Not all real types carry a figure in all four slices. 41 of the 473 real types have no mobile home page figure at all. 81 in total are missing at least one of the four slices, usually because a type shows up on other kinds of page and not on a home page in this crawl. Only 392 of the 473 types carry a figure for all four slices. Today's top twelve all happen to be among them, which will not always stay true. A type with no figure for a chosen slice is left out of a chart, not drawn as a zero-length bar, because a missing measurement is not a measured zero. Comparing across the slices happens in a table instead of a chart, because a table can hold an empty cell where a bar chart cannot draw an unknown. If you recompute a ranking from the download and a type you expected is missing, check its slice coverage before you assume I dropped it.
The counts on this page are exact for the Almanac's own crawl, not estimates. What it cannot tell you is how many websites exist outside that crawl, or what any of these type strings looked like a year earlier or a year later. The Web Almanac measures a large sample once a year. You are reading the July 2025 sample, not a running total.
You can download the same figures as JSON or CSV and check any number on this page against them.
Web Almanac crawl 1 July 2025. Built 19 August 2026.
Analysis © Eduard Dziak, licensed under the Apache License 2.0. Please credit eduarddziak.com with a link. Source data: Google and the Schema.org community, Schema.org usage statistics dataset. Rich result requirements: Google Search Central, licensed CC BY 4.0. Term descriptions: Schema.org, licensed CC BY-SA 3.0, each term linking to its own page. Crawl counts: HTTP Archive Web Almanac, licensed Apache License 2.0.