How do you generate and check schema markup for your page?

This free schema markup generator builds JSON-LD for twelve types: Person, Organization, LocalBusiness, Article, Product, Event, Recipe, Video, JobPosting, SoftwareApplication, FAQPage and breadcrumbs. Person, Organization and LocalBusiness come out as one connected graph, linked by stable IDs, with sameAs profile links and knowsAbout topics. A second tool checks JSON-LD you already have. Both run in your browser.

Google details checked against its documentation on 14 October 2026.

Part 1

Build or check your markup

Choose a type to generate markup, or paste existing JSON-LD to check its structure.

1. How do you generate schema markup for your page?

Choose what the page is about, fill in only what is true and visible on it, and copy the JSON-LD the tool produces.

Directional The output updates as you type once it has been generated. Run it through Google's Rich Results Test before you publish

2. Is your existing JSON-LD structurally sound?

Paste a script block or raw JSON-LD, and the checker lists structural problems with a fix for each.

Check the markup of any live page, including markup added by JavaScript
  1. Drag Send JSON-LD to checker to your bookmarks bar, or and paste it as the address of a new bookmark.
  2. Open the page you want to check.
  3. Click the bookmark. This page opens with every JSON-LD block from that page filled in.

Directional It reads the page as your browser rendered it, so it sees markup that a tag manager added. No server is involved. A few sites block bookmarks with a security policy, and it works on desktop browsers only

Directional It checks structure, common mistakes and property names against the schema.org vocabulary for 90 common types, not whether Google will use the markup. Use Google's Rich Results Test as well

3. What does each choice generate?

Person, Organization and LocalBusiness produce a linked three-node graph; every other choice produces one node for the page.

Person, Organization, LocalBusinessWebSite, the page (WebPage, AboutPage or ProfilePage) and the entity
ArticleOne article node with author, publisher and dates
Product, Software appOne node with an offer, and an optional real rating
Event, Recipe, Video, JobPostingOne node for the page, with the details Google asks for
FAQPageOne node holding every question and answer
BreadcrumbOne ordered trail

Confirmed The linked pattern matches the one this site uses on its own entity page, shown in Part 4

4. What do you do with the output?

Paste it into the head of the page you entered, then check it before you publish.

  1. Copy the script block, or download the JSON.
  2. Add it to the head of that one page.
  3. Make sure every fact in it is visible on the page.
  4. Run it through the checks in Part 4.

Confirmed Google says markup must describe content that users can see on the page

Part 2

Understand what the markup does

What each type needs, what Google actually uses, and what markup cannot do.

5. How does the entity graph connect?

Each node has a stable @id, and the others refer to it, so a crawler reads one entity instead of several loose snippets.

1. WebSite

example.com/#website

The site as a whole. Its publisher points to the entity.

2. Page

/about/#webpage

The page that carries the markup. Its mainEntity names who or what the page is about.

3. Entity

/about/#person

The Person, Organization or LocalBusiness: name, URL, image, description and identity details.

4. Connections

sameAs, knowsAbout, worksFor

Links to official profiles, topics and related organizations that tell machines which entity this is.

Directional Stable IDs make the graph easier to reuse across pages; Google does not document a graph structure as a ranking input

6. Which type should you use?

Use the most specific type that matches what the page is really about, and a page type that matches what the page really is.

TypeDescribesUse it when
PersonAn individualA personal brand, author or founder has a page of their own
OrganizationA company, studio or brandThe home page or About page represents an organization with no public location
LocalBusiness and subtypesA business with an address or service areaCustomers visit or are served at a place
Article, BlogPosting, NewsArticleA written pieceA dated article with an author
Product with OfferSomething for saleA product page that shows a price
EventA dated event at a real placeA page for one public event with a venue and start time
RecipeA dish with ingredients and stepsA recipe page with an image of the finished dish
VideoObjectA videoThe page lets visitors watch that video
JobPostingA real, open jobA page that describes one job and lets people see it without logging in
SoftwareApplication, WebApplication, MobileApplicationAn appA page about an app with a price and real ratings
BreadcrumbListThe path to a pageThe page shows a breadcrumb trail
FAQPageQuestions with answersThe page shows the questions and answers; no Google rich result today
WebSite, WebPage, AboutPage, ProfilePageThe site and the pageTo tie a page to the entity it is about

Confirmed Google advises the most specific LocalBusiness subtype and says a store home page is not a valid ProfilePage

7. What does Google require for each type?

Article and Organization need nothing strictly, LocalBusiness needs a name and address, and Product needs a name plus an offer, review or rating.

TypeRequiredRecommended
OrganizationNothingname, url, logo, sameAs, contact details, legal name, founding date
ProfilePagemainEntity (a Person or Organization) with a namedateCreated, dateModified, image, sameAs, description
LocalBusinessname, addresstelephone, openingHoursSpecification, geo (5 or more decimals), priceRange (under 100 characters), url
ArticleNothingauthor (name and url), headline, datePublished, dateModified, image
Productname, and at least one of offers, review or aggregateRatingOffer price (required if offers is used), priceCurrency, availability
Eventname, startDate, location (a venue name and a full address)endDate, eventStatus, image, description, offers, performer, organizer
Recipename, imageauthor, datePublished, description, prepTime, cookTime, totalTime, recipeYield, recipeIngredient, recipeInstructions, nutrition.calories (needs recipeYield), category, cuisine, keywords
VideoObjectname, thumbnailUrl, uploadDatedescription, contentUrl or embedUrl, duration, expires, clips
JobPostingtitle, description, datePosted, hiringOrganization, jobLocation (or a fully remote setup)validThrough, employmentType, baseSalary, directApply, identifier
SoftwareApplicationname, offers.price, and an aggregateRating or a reviewapplicationCategory, operatingSystem, priceCurrency
BreadcrumbListAt least two items, each with a name and an item URL (the last item may omit the URL)position on every item

Confirmed From Google Search Central documentation for each type, read on 14 October 2026

8. Which of Google's structured data features does this tool cover?

It covers 11 of the 25 features in Google's gallery, plus FAQPage, which Google no longer shows; the other 14 are listed so nothing is hidden.

Google featureHere?Note
ArticleYesArticle, BlogPosting and NewsArticle
BreadcrumbYesOne trail per run
EventYesPhysical events only, as Google requires
Job postingYesOn-site or fully remote
Local businessYesFour common subtypes
OrganizationYesIn the connected graph
ProductYesWith an offer; rating only if you supply a real one
Profile pageYesFor a Person
RecipeYesDurations are converted for you
Software appYesThe rich result also needs a real rating or review
VideoYesClips and live badges are not generated
Review snippetPartlyOnly as a rating you supply inside a Product, Recipe or app; never for your own business
CarouselNoPairs with other features such as recipes or courses
Course listNoLists of courses from one provider
DatasetNoFor Google Dataset Search
Discussion forumNoFor user discussions
Education Q&ANoFlashcard-style questions
Employer aggregate ratingNoShown in job search
Image metadataNoCreator, credit and licence details for images
Math solverNoFor math problem pages
MovieNoFor movie carousels
Q&ANoOne question with several answers
SpeakableNoFor news text-to-speech
Subscription and paywalled contentNoMarks paywalled content so it is not read as cloaking
Vacation rentalNoProperty listings

Confirmed The feature list is from Google's structured data gallery, read on 14 October 2026; Google changes it, so check the gallery for new features

9. What does Google actually use?

Google uses Organization markup to identify a business and choose its logo, but it documents no dedicated Person feature and no use of knowsAbout.

MarkupWhat Google says
OrganizationNo property is required. It helps tell your organization apart from others, choose a logo and show details in knowledge panels. Put it on the home page or one About page
LogoAt least 112 x 112 px, crawlable and indexable, and it should look right on a white background
ProfilePageFor pages about one person or organization that shares first-hand perspective, with a Person or Organization as main entity
PersonNo standalone rich result in the documentation reviewed; it is used inside ProfilePage and as an author
knowsAboutNot listed in the Organization or ProfilePage documentation
FAQPageGoogle stopped showing FAQ rich results in May 2026
EventEvents must have a real physical location and be open to the public; online-only events are not supported
JobPostingOnly real, open jobs, with a complete description visible on the page; remove or expire filled jobs. Google suggests the Indexing API for faster crawling of job pages
HowToGoogle cut back HowTo rich results in 2023 and it no longer appears in its structured data gallery
Quality rulesMarkup must match visible content and not mislead; violations can cause a manual action that removes rich result eligibility

Confirmed From Google Search Central pages for Organization, ProfilePage, FAQPage, structured data policies and the 2023 HowTo and FAQ announcement; the HowTo row is Directional

10. What does schema markup not do?

It does not guarantee rich results, higher rankings, a knowledge panel or an AI citation.

Google says valid markup does not guarantee a rich result, and its structured data introduction does not describe markup as required for generative AI features. Treat the graph as a clear statement of who you are, not as a switch.

Confirmed Google's documentation; AI engines other than Google publish less about how they read markup

11. Can you add review stars to your own business?

Generally no: Google does not show review stars when a business controls the reviews of itself, so this tool leaves them out.

  • Reviews of your own business or organization on your own site are not eligible for stars
  • Reviews are for sites that collect reviews of other entities, such as products they sell
  • Ratings must come from users, not be written or compiled by editors for local businesses
  • If you add Product reviews, they must be real and shown on the page

Confirmed Google's review snippet documentation; the checker warns when a business node carries its own rating

13. What do the technical terms mean?

Most terms describe how one fact is named, labelled and linked, so a machine can tell what the page is about.

TermPlain meaning
Structured dataFacts about a page written in a fixed format that software can read
schema.orgThe shared vocabulary of types and properties used for that format
JSON-LDA way of writing structured data as a block of JSON in a script tag
@contextSays which vocabulary the keys come from, normally https://schema.org
@typeWhat kind of thing a node is, such as Person
@idA unique address for one node, so others can refer to it
@graphA list of nodes that belong together
Node and entityA node is one object in the markup; an entity is the real person or brand it stands for
sameAsLinks to other official pages about the same entity
Rich resultA search result with extra features, such as a logo or product price
Knowledge panelThe information box Google may show about a well-known entity

Part 3

Set it up on your site

Where the markup goes, what it looks like, and how to avoid common mistakes.

14. Where should the markup go?

Put it in the head of the one page it describes: the entity on its home or About page, and each article, product or trail on its own page.

  • One page, one set of facts: the markup belongs on the page it describes
  • Use JSON-LD in a script tag in the head; Google recommends it
  • Google can read JSON-LD added by JavaScript or a tag manager, but plain server output is simpler to verify
  • If you use a tag manager, check the rendered page with URL Inspection, not just the template
  • Do not block the page with robots.txt or noindex, or the markup cannot be read
  • Keep the same @id for the same entity wherever you refer to it
  • Never ship staging addresses in url or @id; test on staging, then switch the domain
  • On multilingual sites, keep one @id per entity across languages and translate only the visible text

Confirmed Placement and JSON-LD points are from Google's documentation; the multilingual advice is Directional

15. What does finished markup look like?

Below is real output from this generator for each type, using example names and links.

Person on a ProfilePage
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "WebSite",
      "@id": "https://example.com/#website",
      "url": "https://example.com/",
      "name": "Jane Example",
      "publisher": {
        "@id": "https://example.com/about/#person"
      }
    },
    {
      "@type": "ProfilePage",
      "@id": "https://example.com/about/#webpage",
      "url": "https://example.com/about/",
      "isPartOf": {
        "@id": "https://example.com/#website"
      },
      "mainEntity": {
        "@id": "https://example.com/about/#person"
      },
      "dateModified": "2026-10-14",
      "dateCreated": "2024-03-01"
    },
    {
      "@type": "Person",
      "@id": "https://example.com/about/#person",
      "name": "Jane Example",
      "alternateName": "J. Example",
      "url": "https://example.com/about/",
      "description": "Jane Example is a search strategist who helps brands get found and cited.",
      "jobTitle": "Search strategist",
      "image": "https://example.com/images/jane-example.jpg",
      "address": {
        "@type": "PostalAddress",
        "addressLocality": "Leeds",
        "addressCountry": "GB"
      },
      "worksFor": {
        "@type": "Organization",
        "name": "Example Studio",
        "url": "https://example.com/"
      },
      "alumniOf": {
        "@type": "Organization",
        "name": "Example University"
      },
      "knowsAbout": [
        {
          "@type": "Thing",
          "name": "Search engine optimization",
          "sameAs": "https://en.wikipedia.org/wiki/Search_engine_optimization"
        },
        "Entity SEO"
      ],
      "sameAs": [
        "https://www.linkedin.com/in/janeexample",
        "https://github.com/janeexample"
      ],
      "mainEntityOfPage": {
        "@id": "https://example.com/about/#webpage"
      }
    }
  ]
}
Organization on a home page
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "WebSite",
      "@id": "https://example.com/#website",
      "url": "https://example.com/",
      "name": "Example Studio",
      "publisher": {
        "@id": "https://example.com/#organization"
      }
    },
    {
      "@type": "WebPage",
      "@id": "https://example.com/#webpage",
      "url": "https://example.com/",
      "isPartOf": {
        "@id": "https://example.com/#website"
      },
      "mainEntity": {
        "@id": "https://example.com/#organization"
      }
    },
    {
      "@type": "Organization",
      "@id": "https://example.com/#organization",
      "name": "Example Studio",
      "legalName": "Example Studio Ltd",
      "url": "https://example.com/",
      "description": "Example Studio is a search consultancy.",
      "logo": "https://example.com/images/logo.png",
      "foundingDate": "2015",
      "founder": {
        "@type": "Person",
        "name": "Jane Example"
      },
      "email": "hello@example.com",
      "address": {
        "@type": "PostalAddress",
        "addressLocality": "Leeds",
        "addressCountry": "GB"
      },
      "sameAs": [
        "https://www.linkedin.com/company/examplestudio"
      ],
      "mainEntityOfPage": {
        "@id": "https://example.com/#webpage"
      }
    }
  ]
}
LocalBusiness (a cafe)
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "WebSite",
      "@id": "https://example.com/#website",
      "url": "https://example.com/",
      "name": "Example Coffee Roasters",
      "publisher": {
        "@id": "https://example.com/#localbusiness"
      }
    },
    {
      "@type": "WebPage",
      "@id": "https://example.com/leeds/#webpage",
      "url": "https://example.com/leeds/",
      "isPartOf": {
        "@id": "https://example.com/#website"
      },
      "mainEntity": {
        "@id": "https://example.com/#localbusiness"
      }
    },
    {
      "@type": "Restaurant",
      "@id": "https://example.com/#localbusiness",
      "name": "Example Coffee Roasters",
      "url": "https://example.com/leeds/",
      "description": "A neighbourhood coffee shop and roastery.",
      "image": "https://example.com/images/shop.jpg",
      "telephone": "+44 113 000 0000",
      "priceRange": "$$",
      "address": {
        "@type": "PostalAddress",
        "streetAddress": "1 High Street",
        "addressLocality": "Leeds",
        "addressRegion": "West Yorkshire",
        "postalCode": "LS1 1AA",
        "addressCountry": "GB"
      },
      "geo": {
        "@type": "GeoCoordinates",
        "latitude": 53.79648,
        "longitude": -1.54785
      },
      "openingHoursSpecification": [
        {
          "@type": "OpeningHoursSpecification",
          "dayOfWeek": [
            "Monday",
            "Tuesday",
            "Wednesday",
            "Thursday",
            "Friday"
          ],
          "opens": "08:00:00",
          "closes": "17:00:00"
        },
        {
          "@type": "OpeningHoursSpecification",
          "dayOfWeek": [
            "Saturday"
          ],
          "opens": "09:00:00",
          "closes": "15:00:00"
        }
      ],
      "sameAs": [
        "https://www.instagram.com/examplecoffee"
      ],
      "mainEntityOfPage": {
        "@id": "https://example.com/leeds/#webpage"
      }
    }
  ]
}
BlogPosting
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "BlogPosting",
      "@id": "https://example.com/blog/entity-seo/#article",
      "headline": "What is entity SEO?",
      "description": "A plain explanation of entity SEO.",
      "image": "https://example.com/images/entity-seo.jpg",
      "datePublished": "2026-10-01T09:00:00+01:00",
      "dateModified": "2026-10-14",
      "author": {
        "@type": "Person",
        "name": "Jane Example",
        "url": "https://example.com/about/"
      },
      "publisher": {
        "@type": "Organization",
        "name": "Example Studio",
        "logo": {
          "@type": "ImageObject",
          "url": "https://example.com/images/logo.png"
        }
      },
      "mainEntityOfPage": {
        "@type": "WebPage",
        "@id": "https://example.com/blog/entity-seo/"
      }
    }
  ]
}
Product with an offer
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "Product",
      "@id": "https://example.com/shop/roast-beans/#product",
      "name": "Example Roast Beans 1kg",
      "description": "Medium roast whole beans.",
      "image": "https://example.com/images/beans.jpg",
      "sku": "BEANS-1KG",
      "brand": {
        "@type": "Brand",
        "name": "Example Coffee Roasters"
      },
      "url": "https://example.com/shop/roast-beans/",
      "offers": {
        "@type": "Offer",
        "url": "https://example.com/shop/roast-beans/",
        "price": "14.5",
        "priceCurrency": "GBP",
        "availability": "https://schema.org/InStock"
      }
    }
  ]
}
Event
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "Event",
      "@id": "https://example.com/events/cupping-night/#event",
      "name": "Example Coffee Cupping Night",
      "description": "An evening of coffee tasting at our Leeds roastery.",
      "image": "https://example.com/images/cupping.jpg",
      "startDate": "2026-11-20T19:00:00+00:00",
      "endDate": "2026-11-20T21:30:00+00:00",
      "eventStatus": "https://schema.org/EventScheduled",
      "location": {
        "@type": "Place",
        "name": "Example Coffee Roasters",
        "address": {
          "@type": "PostalAddress",
          "streetAddress": "1 High Street",
          "addressLocality": "Leeds",
          "addressRegion": "West Yorkshire",
          "postalCode": "LS1 1AA",
          "addressCountry": "GB"
        }
      },
      "offers": {
        "@type": "Offer",
        "url": "https://example.com/events/cupping-night/",
        "price": "15",
        "priceCurrency": "GBP",
        "availability": "https://schema.org/InStock"
      },
      "performer": {
        "@type": "Person",
        "name": "Jane Example"
      },
      "organizer": {
        "@type": "Organization",
        "name": "Example Coffee Roasters",
        "url": "https://example.com/"
      }
    }
  ]
}
Recipe
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "Recipe",
      "@id": "https://example.com/recipes/flat-white/#recipe",
      "name": "Simple Flat White",
      "description": "A flat white at home with a basic espresso machine.",
      "image": "https://example.com/images/flat-white.jpg",
      "author": {
        "@type": "Person",
        "name": "Jane Example"
      },
      "datePublished": "2026-09-01",
      "prepTime": "PT5M",
      "cookTime": "PT3M",
      "totalTime": "PT8M",
      "recipeYield": "1 cup",
      "recipeCategory": "Drink",
      "recipeCuisine": "Italian",
      "keywords": "coffee, espresso",
      "nutrition": {
        "@type": "NutritionInformation",
        "calories": "120 calories"
      },
      "recipeIngredient": [
        "18 g ground coffee",
        "150 ml whole milk"
      ],
      "recipeInstructions": [
        {
          "@type": "HowToStep",
          "text": "Pull a double espresso."
        },
        {
          "@type": "HowToStep",
          "text": "Steam the milk until glossy."
        },
        {
          "@type": "HowToStep",
          "text": "Pour the milk over the espresso."
        }
      ]
    }
  ]
}
VideoObject
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "VideoObject",
      "@id": "https://example.com/videos/dial-in/#video",
      "name": "How to dial in espresso",
      "description": "A five-minute guide to dialling in a grinder.",
      "thumbnailUrl": "https://example.com/images/dial-in-thumb.jpg",
      "uploadDate": "2026-10-01T09:00:00+01:00",
      "duration": "PT5M12S",
      "contentUrl": "https://example.com/media/dial-in.mp4",
      "embedUrl": "https://example.com/embed/dial-in"
    }
  ]
}
JobPosting (on-site)
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "JobPosting",
      "@id": "https://example.com/careers/search-analyst/#job",
      "title": "Search Analyst",
      "description": "Example Studio is hiring a Search Analyst to audit sites, report on organic performance and recommend fixes. You will work with clients on technical, content and measurement work. Requirements: two years in SEO, strong analytics skills and clear writing.",
      "identifier": {
        "@type": "PropertyValue",
        "name": "Example Studio",
        "value": "SA-2026-01"
      },
      "datePosted": "2026-10-01",
      "validThrough": "2026-12-31",
      "employmentType": "FULL_TIME",
      "hiringOrganization": {
        "@type": "Organization",
        "name": "Example Studio",
        "sameAs": "https://example.com/",
        "logo": "https://example.com/images/logo.png"
      },
      "jobLocation": {
        "@type": "Place",
        "address": {
          "@type": "PostalAddress",
          "addressLocality": "Leeds",
          "addressRegion": "West Yorkshire",
          "addressCountry": "GB"
        }
      },
      "baseSalary": {
        "@type": "MonetaryAmount",
        "currency": "GBP",
        "value": {
          "@type": "QuantitativeValue",
          "minValue": 32000,
          "maxValue": 40000,
          "unitText": "YEAR"
        }
      }
    }
  ]
}
WebApplication
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "WebApplication",
      "@id": "https://example.com/apps/rank-tracker/#software",
      "name": "Example Rank Tracker",
      "description": "A web app that tracks keyword positions.",
      "url": "https://example.com/apps/rank-tracker/",
      "applicationCategory": "BusinessApplication",
      "operatingSystem": "Any (web browser)",
      "offers": {
        "@type": "Offer",
        "price": "0",
        "priceCurrency": "USD"
      }
    }
  ]
}
FAQPage
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "FAQPage",
      "@id": "https://example.com/faq/#faq",
      "mainEntity": [
        {
          "@type": "Question",
          "name": "Do you ship abroad?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Yes, we ship to most countries."
          }
        },
        {
          "@type": "Question",
          "name": "How long does delivery take?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Orders arrive in three to five working days."
          }
        }
      ]
    }
  ]
}
BreadcrumbList
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "BreadcrumbList",
      "@id": "https://example.com/blog/entity-seo/#breadcrumb",
      "itemListElement": [
        {
          "@type": "ListItem",
          "position": 1,
          "name": "Home",
          "item": "https://example.com/"
        },
        {
          "@type": "ListItem",
          "position": 2,
          "name": "Blog",
          "item": "https://example.com/blog/"
        },
        {
          "@type": "ListItem",
          "position": 3,
          "name": "What is entity SEO?"
        }
      ]
    }
  ]
}

Wrap any block in <script type="application/ld+json"> and </script>. All names, links and addresses are examples.

Confirmed Generated by this tool from the example inputs; real values must be true and visible on your page

16. When is this the right tool?

Use it when you need to state one clear entity or page, and the checker when you inherit markup you did not write.

SituationWhat to do
A personal brand or consultant sitePerson on a ProfilePage or AboutPage, with profile links and topics
A company home pageOrganization with logo, founder and profile links
A shop, clinic or cafe with a locationLocalBusiness with address, hours and phone on the page for that location
Author pages and blog postsOne ProfilePage per author; BlogPosting on each post, with the author's link
A product catalogueProduct with an offer on each product page, matching the visible price
A venue, club or organizer with dated eventsOne Event per page, each with its own address, start time and ticket details
A food or recipe siteRecipe with image, times, ingredients and steps, matching the visible page
A site with how-to or product videosVideoObject on each page where the video can be watched
A company hiringJobPosting per open role, removed or expired when filled
A software or SaaS productSoftwareApplication with a real price, and real ratings if you show them
Deep pages in a hierarchyBreadcrumbList that matches the visible trail
Brand or founder confusion in searchConsistent name, sameAs links and one @id across pages
After a redesign or migrationRebuild the markup and run the checker on the new templates
An agency inheriting a client sitePaste existing markup into the checker to find duplicates and gaps
Multi-location businessOne LocalBusiness page per location, each with its own address and @id

17. How does this fit with plugins and site builders?

Many platforms already output some markup, so add yours only after you know what is there, or you will create duplicate entities.

PlatformWhat usually happensCommon trap
WordPressSEO plugins can output Organization, Person, WebSite and Article markup; custom markup goes in a header setting or the themeThe plugin and your own block both describe the same entity with different IDs
ShopifyThemes often output Organization and Product markup; custom blocks go in the theme codeDuplicate Organization or Product nodes after adding your own
Wix, Squarespace, WebflowOffer a custom code or SEO panel for JSON-LDPlan limits on custom code, and page-level versus site-wide placement
Tag managerInjects JSON-LD with JavaScriptMarkup that appears only after a tag fires is harder to verify
Custom or static siteYou paste the block into the page headThe block is missing from the production build

Run your live page through the checker above, then turn off one of the duplicate sources.

Directional Plugin and platform behavior changes; check what your own page outputs rather than assuming

18. What mistakes does this check catch most often?

The costliest mistakes are markup that does not match the page, duplicate entities and profile links to pages that are not yours.

MistakeWhat happensFix
Markup describes things not visible on the pageBreaks Google's quality rules and risks a manual actionMark up only what the page shows
Two entity nodes for one person or brandMachines see two entitiesUse one @id and one node
Relative URLs such as /about/The reference is ambiguousUse full https:// URLs
Staging or old-domain URLs left in url or @idThe entity points at a site that does not existSwitch to the live domain before launch
sameAs to profiles you do not ownTies your entity to the wrong thingList official profiles only
Inventing a Wikipedia or Wikidata linkA broken or false linkAdd it only if the entry exists and is about you
ProfilePage on a company home pageNot a valid use under Google's guidanceUse WebPage or AboutPage with Organization
Review stars on your own businessNot eligible; can look manipulativeRemove them unless the site reviews other businesses
Product price that differs from the pageMismatch with visible contentGenerate the markup from the same data as the page
Author name written as "By Jane"Google asks for the name onlyPut only the name; use publisher and job title elsewhere
A date without a timezoneGoogle assumes its own crawler's timezoneAdd an offset such as +01:00
Placeholder or missing imagesGoogle asks for real, crawlable imagesUse a real photo or logo URL
Curly quotes from a word processorThe JSON is invalidPaste into a plain-text editor, then run the checker
Marking up an online-only eventGoogle supports events with a real placeUse the markup only for physical events
Event markup for a promotion, sale or opening hoursNot an event under Google's rulesMark up real, dated, public events only
A job posting left up after it is filledMisleads job seekers and breaks Google's rulesRemove it, or set a past valid-through date
Salary, dates or codes in the job titleGoogle asks for the job title onlyPut pay in baseSalary
Recipe times written as "10 minutes"Not a valid durationUse ISO form such as PT10M (the generator does this)
Calories without servingsGoogle requires recipeYield with caloriesAdd the number of servings
Video contentUrl that points to the pageIt must point to the video fileUse the file address, or an embed address
Software app with no rating or reviewValid markup, but not eligible for the rich resultAdd real ratings from the page, or accept no rich result
Assuming valid means eligibleNo rich result appearsValid markup is necessary, not a guarantee

Confirmed Rules from Google's structured data policies and type documentation; the rest are common practice

19. What do the validator messages mean?

Errors mean a required piece is missing or wrong, while warnings and optional fields are recommendations that do not block eligibility.

Message typeMeaningWhat to do
Missing required fieldThe feature cannot use the item without itAdd the field, with a value visible on the page
Missing optional or recommended fieldThe item can work, but is less completeAdd it if you have the information
Invalid valueThe field is present but in the wrong format, such as a bad date or a price with a symbolUse ISO dates and plain numbers
Parsing or syntax errorThe JSON cannot be readFix commas, quotes and brackets
"Either offers, review or aggregateRating" style messagesA Product needs at least one of thoseAdd an Offer with price and currency
No items detectedThe tester found no supported markupCheck the script is on the page and not blocked

Directional Wording changes between tools and over time; the principle is the same in Google's Rich Results Test and the Schema Markup Validator

20. How do you keep the markup correct over time?

Treat it like any other part of the page: update it when the page changes, and re-check it after every template, plugin or domain change.

  • Change dateModified only when the content really changes
  • Update prices, hours, addresses and job titles when they change on the page
  • Re-run the checker after a redesign, a plugin update or a move to a new domain
  • Watch the Search Console enhancement reports for new errors
  • Review the topics and profile links each quarter, and remove any that no longer apply
  • Record what you changed and when, so later movement can be explained

Directional A practical routine; Google describes Search Console reports for monitoring after deployment

Part 4

Verify and learn from a live example

A checking order, and the real entity graph used on this site.

21. How do you verify the markup?

Check the structure here, then validate the syntax, then test it against Google's features, then monitor it in Search Console.

  1. Check structure with the checker aboveDuplicates, references, URLs, dates
  2. Validate syntax at validator.schema.orgSchema.org's own validator
  3. Test it in the Rich Results TestShows which Google features the page is eligible for
  4. Inspect the live URL in Search ConsoleConfirms Google found the markup
  5. Watch the Search Console reportsCatches breakage after later edits

Confirmed Google recommends the Rich Results Test and describes URL Inspection and Search Console reports for monitoring

22. What does this site's own entity graph look like?

The entity page on this site describes one Person, linked to a ProfilePage, a WebSite and the organizations and book connected to it.

Its graph holds 12 nodes: WebSite, ProfilePage, Person, three Organizations, a university, a Book, two ImageObjects, a BreadcrumbList and a FAQPage. This is an excerpt of the Person node:

{
  "@type": "Person",
  "@id": "https://asfandjunejo.com/who-is-asfand-yar-junejo/#person",
  "name": "Asfand Yar Junejo",
  "alternateName": [
    "Asfand Junejo",
    "Asfandyar Junejo"
  ],
  "url": "https://asfandjunejo.com/who-is-asfand-yar-junejo/",
  "mainEntityOfPage": {
    "@id": "https://asfandjunejo.com/who-is-asfand-yar-junejo/#profilepage"
  },
  "jobTitle": "Search, AI Visibility & Digital Growth Strategist",
  "worksFor": {
    "@id": "https://asfandjunejo.com/who-is-asfand-yar-junejo/#org-swag-brand"
  },
  "sameAs": [
    "https://www.linkedin.com/in/asfandyarjunejo",
    "https://www.youtube.com/@digitalthekedar",
    "https://twitter.com/asfandyarjunejo"
  ],
  "knowsAbout": [
    {
      "@type": "Thing",
      "name": "Search engine optimization",
      "sameAs": "https://en.wikipedia.org/wiki/Search_engine_optimization"
    },
    {
      "@type": "Thing",
      "name": "Semantic search",
      "sameAs": "https://en.wikipedia.org/wiki/Semantic_search"
    },
    "..."
  ]
}

The full record is on who is Asfand Yar Junejo. What changed in search after updates like this is logged in the experiment log.

Confirmed Excerpt of this site's current markup; it suits this site and is not a template for yours

23. What should match the visible page?

Every name, job title, link, price and detail in the markup should also appear on the page a visitor sees.

  • The name and description read the same on the page
  • Each profile link is visible or clearly implied (a footer or bio link)
  • The photo or logo is shown on the page
  • Facts such as employer, address, hours and price are stated in the text
  • Every question in FAQ markup is shown with its answer

Confirmed Google's policy: markup must represent content visible to users

24. How will you know it helped?

Compare a dated baseline of branded searches and AI answers before and after, and expect change to be slow and not guaranteed.

Record what Google and AI assistants say about the name today, add the markup, and re-test after a few weeks. A knowledge panel or a corrected answer is a possible outcome, not a promise. Keep impressions, citations, referrals and enquiries as separate measures.

Directional A method, not a result; many things change at once

Part 5

Questions answered

Short answers to the questions that come up most.

25. What do people ask about schema markup and entities?

The questions below cover rankings, AI answers, FAQ and HowTo markup, local businesses, products, events, jobs, recipes, videos, apps, authors and privacy. Tap a question to open the answer.

Does schema markup improve rankings?

No guarantee. Google says valid markup does not guarantee rich results, and it does not describe markup as a ranking factor.

Confirmed Google's structured data documentation

Do you need schema markup to appear in AI answers?

Google's documentation does not say markup is required for its generative AI features, and other engines publish little about how they use it.

Directional Absence of a requirement in documentation is not proof of no effect

Does FAQ schema still give rich results?

No. Google stopped showing FAQ rich results in May 2026, after having limited them to well-known government and health sites in 2023.

Confirmed Google's FAQPage documentation notice; the markup remains valid schema.org

Should you remove old FAQ or HowTo markup?

There is no need to remove it in a hurry: Google said in 2023 that leaving the markup does no harm, but it gives no search appearance now.

Directional Based on Google's August 2023 announcement; remove it if it no longer matches the page

Should you use Person or Organization?

Use Person for an individual and Organization for a company or brand; if both apply, mark up both and connect them with worksFor.

Directional A practical rule; pick the entity the page is actually about

Should a local business use LocalBusiness or Organization?

Use a LocalBusiness subtype when customers visit or are served at a place, and Organization when the brand has no public location.

Confirmed Google asks for the most specific subtype and requires a name and address for LocalBusiness

Does Google use knowsAbout?

Google does not list knowsAbout in its Organization or ProfilePage documentation, so treat it as a clear statement for any system that reads schema.org.

Directional Absence from documentation, not proof it is ignored

What belongs in sameAs?

Official profiles that belong to the same entity, such as LinkedIn, YouTube or a company profile; add Wikipedia or Wikidata only if an entry about you exists.

Directional Never invent a profile or link to a page about someone else

Should the markup be on every page?

No. Google says Organization markup belongs on the home page or one page that describes the organization, not on every page.

Confirmed Google's Organization documentation

Can you add review stars with markup?

Not for your own business. Google does not show stars when a business controls the reviews of itself, and ratings must come from real users.

Confirmed Google's review snippet documentation

How should you mark up several authors?

List each author as a separate entry with only the name and a link to a profile page, as Google asks.

Confirmed Google's Article documentation; the generator takes one author per line

Should dateModified change on every edit?

Only when the content really changes; changing it for tiny edits or to look fresh is misleading.

Directional Google's ProfilePage guidance says the date should reflect human-edited changes

JSON-LD or Microdata?

Use JSON-LD. Google recommends it, and it is easier to keep separate from your page layout; avoid describing the same item in both.

Confirmed Google's structured data policies; Microdata and RDFa are also supported

Can a tag manager add the markup?

Yes. Google can read JSON-LD added by JavaScript, but check the rendered page, because a tag that fails to fire means no markup.

Confirmed Google's structured data introduction; the testing advice is Directional

What about multilingual sites?

Keep one stable @id for each entity across language versions, and make the visible text and markup match on each page.

Directional A practical approach; Google gives no entity-specific multilingual rule in the pages reviewed

How long until changes show up?

There is no fixed time: Google must recrawl the page, and rich results or panels may never appear.

Directional Use URL Inspection to request a recrawl, and track changes against a dated baseline

Can you mark up an online-only event?

Not for Google's event feature: it supports events with a real physical location and says virtual-only experiences are not supported.

Confirmed Google's Event documentation

How do you handle a fully remote job?

Set the job as remote with a country applicants must live in, and state clearly in the visible description that the job is fully remote.

Confirmed Google's JobPosting documentation

Do job posts need the Indexing API?

No, but Google recommends it for job pages because it prompts crawling sooner; you should still submit a sitemap.

Confirmed Google's JobPosting documentation

Why does the recipe tool ask for minutes?

Google wants durations in ISO 8601 form such as PT30M, so the tool turns your minutes into that form and adds the total for you.

Confirmed Google's Recipe documentation

What does a video need to be eligible?

A title, thumbnail and upload date, plus a file or player address, on a page where visitors can actually watch the video.

Confirmed Google's Video documentation

Why does the software app need a rating?

Google's software app feature requires either an aggregate rating or a review, so markup without one is valid but not eligible for the rich result.

Confirmed Google's Software app documentation; only add ratings that come from real reviews shown on the page

How many times can you use the free tools?

You get 3 free runs across all the free tools. After that, joining the Search Signals newsletter with a business email unlocks 10 more.

Loading an example, copying and downloading do not use a run. The count is kept in your browser, so clearing site data resets it.

Directional A fair-use limit that may change; the count is a convenience, not a security control

Why does the unlock need a business email?

To keep the newsletter list made of real business contacts: personal addresses such as Gmail or Yahoo, and temporary addresses, are not accepted.

If your work address is rejected by mistake, email asfand@asfandjunejo.com and the tools can be unlocked by hand.

Directional The check uses lists of free and disposable providers plus a mail-server lookup, so it is strong but not perfect

Is what you enter sent anywhere?

No. The markup is built and checked in your browser, and the tool does not send what you type to a server. The only thing a tool can send is the business email you choose to give when you unlock more runs.

Directional Stated by the builder; you can confirm it in your browser's network panel

Should you put your address or phone in Person markup?

Only what is already public on the page; for a person, a city and country is usually enough, and a home address should never go in.

Directional A privacy precaution; markup is public to every crawler

Why can the tool not read my live page for you?

Browsers stop one site reading another site's pages, so a client-side tool cannot fetch them. Use the bookmark in the checker to send a live page's JSON-LD here, or paste it.

The bookmark runs on the page you are viewing, so it also sees markup added by JavaScript, and no server is involved.

Confirmed This is the browser's same-origin policy

Part 6

Limits and sources

What this tool cannot do and where the facts come from.

26. What can these tools not do?

They build and check structure only; they cannot tell you whether Google will use the markup.

BuildsPerson, Organization, LocalBusiness, Article, Product, Event, Recipe, VideoObject, JobPosting, SoftwareApplication, FAQPage and breadcrumb markup
ChecksJSON syntax, types, IDs, references, URLs, dates, the type rules in Part 2, and misspelled or undefined property names
Cannot seeYour live page unless you use the bookmark, visible content, or image sizes
Not coveredThe 13 gallery features marked "No" in Part 2, and reviews of your own business

Directional Prototype tool; always run Google's Rich Results Test before relying on it

27. Where do the facts on this page come from?

From Google Search Central and schema.org, read on 14 October 2026.

Brand or founder confusion in search? See why Google confuses brands → Or see the entity home service → Back to all free tools →