"Either 'name' or 'item.name' should be specified": a breadcrumb with no label

Every step in a BreadcrumbList needs a label, given either as name on the ListItem or as name inside its item object. This error means one step has neither, usually because a crumb's text is empty or is only an icon. Give that crumb a name and the trail becomes valid.

It is reported in the Breadcrumbs report under Enhancements in Search Console. An invalid trail is not shown in results; Google falls back to displaying the URL path instead.

What it looks like

Before

html
{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    { "@type": "ListItem", "position": 1, "item": "https://example.com/" },
    { "@type": "ListItem", "position": 2, "name": "Guides", "item": "https://example.com/guides/" }
  ]
}

After

html
{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    { "@type": "ListItem", "position": 1, "name": "Home", "item": "https://example.com/" },
    { "@type": "ListItem", "position": 2, "name": "Guides", "item": "https://example.com/guides/" }
  ]
}

What a valid trail contains

For each ListItem, Google's breadcrumb documentation asks for:

  • position: the step number, starting at 1.
  • name: the label shown to users.
  • item: the URL of that step. It may be omitted on the final step, in which case Google uses the page's own URL.

The two accepted shapes for the label are:

json
{ "@type": "ListItem", "position": 1, "name": "Home", "item": "https://example.com/" }
json
{ "@type": "ListItem", "position": 1, "item": { "@id": "https://example.com/", "name": "Home" } }

Mixing them, with item as an object that has an @id and no name, and no name on the ListItem either, is exactly the failing case.

Find the empty step

Test the URL in the Rich Results Test and expand the Breadcrumbs item; the failing ListItem is marked with its position. Or read the markup directly:

code
curl -s https://example.com/guides/mugs/ | grep -o '"@type":"BreadcrumbList".*' | head -c 1500

For themes that use microdata instead of JSON-LD, search the source for itemprop="itemListElement" and look at each entry for an itemprop="name" with visible text inside.

Note which position fails. Position 1 points at the home crumb; the last position points at the current page; a middle one at a category or parent page.

Causes by position

Position 1: the home crumb is an icon. Many themes show a house icon instead of the word "Home". If the markup takes its name from the link text, and the link contains only an <svg> or an icon font element, the name is empty. Add a text label, visually hidden if you want only the icon to show, or set the home label in the breadcrumb settings.

Last position: the post has no title. Pages built for landing campaigns sometimes have their title cleared so the theme prints no heading. The breadcrumb then has nothing to use. Give the page a title and hide the heading in the template, or set a breadcrumb-specific label.

A middle position: a term or parent with an empty name. Rare, but imported taxonomies can contain terms whose names are blank or whitespace.

Any position: an image crumb. A logo or thumbnail used as a breadcrumb step, where name is filled from text content and there is none.

Two trails merged. A theme printing microdata and a plugin printing JSON-LD for the same page. Google reads both. If the theme's version is the malformed one, the error persists however good the plugin's output is; switch off the theme's breadcrumb markup or its breadcrumb feature.

Fixing it in WordPress

With Hydrogen SEO, the BreadcrumbList JSON-LD is built from the same trail as the visible breadcrumbs and is printed whether or not you display them. The schema keeps the home link and the current page even when you hide them from the visible trail. Two settings control the labels:

  • The home label and other trail options, in the breadcrumb settings.
  • Breadcrumb Title, in each post's or term's SEO Settings sheet: a short label used in breadcrumbs only, which is the simple fix for a page with a blank or unsuitable title.

Both are covered in the breadcrumbs documentation. If another component is also emitting breadcrumb markup, disable one of them. Our guide to adding breadcrumbs to WordPress shows placement and the settings to check.

For a custom theme function, guard against empty labels when building the array:

php
$name = trim( wp_strip_all_tags( $crumb['label'] ) );
if ( '' === $name ) {
    continue; // or substitute a fallback label
}

If you skip a step, renumber position so the sequence stays 1, 2, 3 without gaps.

The same report shows a few siblings, and they tend to share a cause:

  • Missing field 'itemListElement': the BreadcrumbList is empty, typically on the homepage where there is no trail to print. Do not output the type at all on pages without a trail.
  • Missing field 'position': steps lack numbering.
  • Invalid URL in field 'id': item or @id contains something that is not a full URL, such as # or a relative path. Use absolute URLs.

Validate

After the change and a cache purge, rerun the Rich Results Test; Breadcrumbs should show as a valid item with every step named. Paste the JSON-LD into our JSON-LD validator for a second check on required properties. Then, in Search Console's Breadcrumbs report, select the error and click Validate fix. The BreadcrumbList schema reference has a complete example to compare against.

Common questions

Will this error remove my pages from Google?

No. Only the breadcrumb display is affected. Google shows the plain URL in place of the trail.

Can the last breadcrumb omit the URL?

Yes. The final ListItem may leave out item. It still needs a name.

Does the breadcrumb name have to match the page title?

No. A shorter label is fine and often better, as long as it describes the page.

Do visible breadcrumbs need to be on the page for the markup to count?

Google's general rule is that structured data should reflect what users can see. A visible trail matching the markup is the safe arrangement.