Structured data lets you tell search engines directly what your page is about, instead of leaving it to guesswork. Most guides on this either stay too shallow or get needlessly complicated. Here I'm giving you the types that actually pay off, with copy-paste-ready examples.
Set expectations first
Schema is not a direct ranking factor. What it does is two things:
- Rich result eligibility: star ratings, FAQ dropdowns, recipe cards — visual elements in search results. This doesn't lift your ranking, but it can seriously lift your click-through rate.
- Entity clarity: letting Google decide, with confidence, "this page is about this specific person/organization." This is what actually matters for name searches and for AI-driven search results.
Use JSON-LD as your format. Microdata and RDFa are still supported,
but they get tangled into your HTML; JSON-LD sits in a single block inside
<head> and stays easy to maintain.
The types that actually pay off
Person — the most critical block for a personal site
If you want to rank for your own name, this block isn't optional. The
sameAs field matters especially: listing your social profiles tells
Google "this domain, that LinkedIn profile, and that GitHub account are the same
person." That's what merges scattered identity signals into a single entity.
{
"@context": "https://schema.org",
"@type": "Person",
"@id": "https://yoursite.com/#person",
"name": "Jane Doe",
"url": "https://yoursite.com/",
"image": "https://yoursite.com/photo.jpg",
"jobTitle": "Web Design & Software",
"address": {
"@type": "PostalAddress",
"addressLocality": "Austin",
"addressCountry": "US"
},
"sameAs": [
"https://github.com/username",
"https://www.linkedin.com/in/username/"
]
}
Organization / LocalBusiness — for company sites
If you serve customers from a physical address, use LocalBusiness (or a
more specific subtype); add hours, phone, and geographic location. If you only
operate online, a plain Organization is enough — don't invent a storefront
address that doesn't exist, it backfires.
BlogPosting / Article
Fill in headline, datePublished, author and
image without fail. If you link author to your Person block
via @id, every article you publish feeds authority back into a single
entity instead of scattering author-name text across the site.
BreadcrumbList
Cheap and effective. Instead of a bare URL, search results show a navigation trail, which lifts click-through rate. A few lines of implementation.
FAQPage — use carefully
For a while everyone slapped an FAQ schema on every page, and Google significantly restricted how often this rich result shows up as a result. If the page genuinely has question-and-answer content, add it; inventing a fake FAQ section just to earn the rich result doesn't work anymore.
What's a waste of time
- Rating yourself. A self-issued
AggregateRatinggets ignored by Google and carries manual-action risk. - Marking up information that isn't on the page. Schema needs to match the page's visible content. A mismatch is grounds for a structured-data penalty.
- Slapping WebPage on everything. Generic blocks that add no extra information earn you nothing.
Three practical notes for international / non-English sites
- Character encoding. Your JSON-LD output must be UTF-8. If you're generating it with PHP, use the
JSON_UNESCAPED_UNICODEflag — otherwise accented names and non-Latin characters turn into broken escape sequences. - Declare the language. Add
"inLanguage": "en-US"(or whatever locale applies). It's a small detail, but it helps matching in non-English search queries. - Date format. You can display
21 July 2026to humans, but inside schema the date must be ISO 8601:2026-07-21.
Validating it
Before you launch, test with two tools: Google's Rich Results Test and the Schema.org validator. The first answers "can this earn a rich result," the second answers "is my markup technically valid." They check different things — run both.
After launch, watch the "Enhancements" section in Search Console — that's where you'll see how Google is actually reading your markup. This continues directly from item 16 in the pre-launch checklist.