Skip to main content
HTML Validation

The “itemtype” attribute must not be specified on elements that do not have an “itemscope” attribute specified.

About This HTML Issue

The itemtype and itemscope attributes are part of the HTML Microdata specification, which allows you to embed structured, machine-readable data into your HTML. The itemscope attribute creates a new item — it defines a scope within which properties (via itemprop) are associated. The itemtype attribute then specifies a vocabulary URL (typically from Schema.org) that describes what kind of item it is.

According to the WHATWG HTML Living Standard, itemtype has no meaning without itemscope. The itemscope attribute is what establishes the element as a microdata item container. Without it, itemtype has nothing to qualify — there is no item to assign a type to. This is why the spec requires itemscope to be present whenever itemtype is used.

Getting this wrong matters for several reasons:

  • Structured data won’t work. Search engines like Google rely on valid microdata to generate rich results (e.g., star ratings, event details, product prices). Invalid markup means your structured data will be silently ignored.
  • Standards compliance. Using itemtype without itemscope violates the HTML specification, and validators will flag it as an error.
  • Maintainability. Other developers (or your future self) may assume the microdata is functioning correctly when it isn’t.

To fix this issue, you have two options:

  1. Add itemscope to the element — this is the correct fix if you intend to use microdata.
  2. Remove itemtype — this is appropriate if you don’t actually need structured data on that element.

Examples

Incorrect — itemtype without itemscope

This triggers the validation error because itemscope is missing:

<div itemtype="https://schema.org/Person">
  <p><span itemprop="name">Liza Jane</span></p>
  <p><span itemprop="email">liza.jane@example.com</span></p>
</div>

Correct — adding itemscope alongside itemtype

Adding the itemscope attribute establishes the element as a microdata item, making itemtype valid:

<div itemscope itemtype="https://schema.org/Person">
  <p><span itemprop="name">Liza Jane</span></p>
  <p><span itemprop="email">liza.jane@example.com</span></p>
</div>

Here, itemscope tells parsers that this div contains a microdata item, and itemtype="https://schema.org/Person" specifies that the item is a Person with properties like name and email.

Correct — removing itemtype when structured data isn’t needed

If you don’t need typed structured data, simply remove the itemtype attribute. You can still use itemscope on its own to create an untyped item, or remove both attributes entirely:

<div>
  <p><span>Liza Jane</span></p>
  <p><span>liza.jane@example.com</span></p>
</div>

Correct — nested items with itemscope and itemtype

When nesting microdata items, each level that uses itemtype must also have itemscope:

<div itemscope itemtype="https://schema.org/Organization">
  <span itemprop="name">Acme Corp</span>
  <div itemprop="founder" itemscope itemtype="https://schema.org/Person">
    <span itemprop="name">Liza Jane</span>
  </div>
</div>

Notice that both the outer div (the Organization) and the inner div (the Person) have itemscope paired with their respective itemtype values. Omitting itemscope from either element would trigger the validation error.

Find issues like this automatically

Rocket Validator scans thousands of pages in seconds, detecting HTML issues across your entire site.

Help us improve our guides

Was this guide helpful?
🌍 Trusted by teams worldwide

Validate at scale.
Ship accessible websites, faster.

Automated HTML & accessibility validation for large sites. Check thousands of pages against WCAG guidelines and W3C standards in minutes, not days.

Scheduled Reports
API Access
Open Source Standards
$7 / 7 days

Pro Trial

Full Pro access. Cancel anytime.

Start Pro Trial →

Join teams across 40+ countries