What is structured data (Schema.org and JSON-LD), and why it matters
Text is written for people, and a search engine has to guess its meaning. Structured data tells a machine outright what a page is about, who wrote it and which questions it answers.
When you read a page, you understand "this is an article, so-and-so wrote it, and it came out yesterday". A machine doesn't see that directly. It has to guess. Structured data removes the guess.
A plain definition
Structured data is a set of standard labels placed in a page that state the meaning of the content explicitly. The vocabulary is defined by Schema.org and the most common format for writing it is JSON-LD: a script block that the user doesn't see but a crawler reads.
An example
For an article, something like this is placed in the page:
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "Article title",
"inLanguage": "en",
"datePublished": "2026-10-09",
"author": { "@type": "Person", "name": "Author name" }
}Those few lines say: the content type is an article, its language is English, it has a publication date and its author is a specific person.
What it gives you
- More accurate understanding. Search engines and AI assistants make fewer mistakes.
- A consistent identity. A person's or organisation's name and details are seen as one thing across all pages.
- A better appearance in results. Some types can lead to richer display, though there is no guarantee.
- Suited to GEO. Answer engines trust structure more. I've written about that in GEO.
The most common types
| Type | Used for |
|---|---|
Person / Organization | Describing a person or an organisation |
WebSite | Describing the whole site |
BlogPosting / Article | An article |
BreadcrumbList | The page's path in the site |
FAQPage | Questions and answers |
Service | A service |
SoftwareApplication | A piece of software |
Rules that matter
- Only write what's true. Whatever is in the structured data must also be visible on the page. If you mark up a rating or review that doesn't exist, that is a violation and can be penalised.
- Give stable identifiers. Each entity has an
@idso that it can be referred to: an article's author links to the site's ownPerson. - Declare the language.
inLanguageis essential for a bilingual site. - Validate with tools. Google's Rich Results Test and the Schema.org validator show errors.
- Keep it in step with the content. When the page changes, the data must be updated too.
On this site
This site's identity map is written as one connected graph: the website, the person, the profile page, the articles and the breadcrumbs, all with stable identifiers. A fuller technical list is in technical SEO for Next.js.
The takeaway
Structured data is how you tell a machine what your page is without it guessing. Write it honestly, give stable identifiers and confirm it with a tool. It guarantees nothing about ranking, but being understood without ambiguity is the base for everything else.