Article schema helps a search engine identify an article, its author, publication and update dates, primary image, publisher, and place in the site hierarchy. It does not make weak content trustworthy, and valid markup does not guarantee a special search appearance.
For a small business site, the safest implementation is a short JSON-LD graph that describes facts already visible on the page. The page should show the same author and dates that the markup declares. Keep those values in one content source when possible so a template change does not create dozens of contradictory blocks.
What Google supports for articles
Google documents Article, NewsArticle, and BlogPosting as supported types for article pages. A normal company guide can use BlogPosting or Article. The type should describe the page honestly. Using NewsArticle does not turn a company blog post into news.
Google's Article documentation currently lists recommended properties rather than a separate set of required properties. That does not make an empty Article object useful. Include the applicable properties that identify the page and match its visible content:
headline;image;datePublished;dateModified;author;publisher;mainEntityOfPage.
Add a separate BreadcrumbList when the page has a visible hierarchy that helps people understand where they are.
Match the visible page first
Structured data is a description of the page, not a hidden SEO version of it.
| Visible page element | JSON-LD property | Check |
|---|---|---|
| Article H1 | headline | Same meaning and no exaggerated alternate title |
| Author byline | author.name | Same person or organization |
| Author profile link | author.url | Resolves to the entity's canonical page |
| Published date | datePublished | Same calendar date |
| Last updated date | dateModified | Shown only after a substantive update |
| Hero or representative image | image | Crawlable and relevant to the article |
| Site or business name | publisher.name | Correct publishing entity |
| Visible navigation trail | BreadcrumbList | Same logical hierarchy |
If the page says "By Stepan Nikonov" but the markup says the author is FloxoLab, fix the mismatch. If the page shows only a publication date, do not invent a newer modification date to make the result look fresh.
A practical JSON-LD example
This example uses one @graph with a BlogPosting and a BreadcrumbList. Replace every example value with the final canonical URL, image, title, dates, and entity IDs for the real page.
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "BlogPosting",
"@id": "https://example.com/guides/article-schema#article",
"url": "https://example.com/guides/article-schema",
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "https://example.com/guides/article-schema"
},
"headline": "Article Schema Guide: Author, Dates, and Breadcrumbs",
"description": "A practical guide to matching article JSON-LD with visible authors, dates, images, and breadcrumbs.",
"image": [
"https://example.com/images/article-schema-cover.webp"
],
"datePublished": "2026-07-25",
"dateModified": "2026-07-25",
"author": {
"@type": "Person",
"@id": "https://example.com/about/jordan-lee#person",
"name": "Jordan Lee",
"url": "https://example.com/about/jordan-lee"
},
"publisher": {
"@type": "Organization",
"@id": "https://example.com/#organization",
"name": "Example Company",
"url": "https://example.com/",
"logo": {
"@type": "ImageObject",
"url": "https://example.com/images/logo.png"
}
}
},
{
"@type": "BreadcrumbList",
"@id": "https://example.com/guides/article-schema#breadcrumb",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Home",
"item": "https://example.com/"
},
{
"@type": "ListItem",
"position": 2,
"name": "SEO Guides",
"item": "https://example.com/guides"
},
{
"@type": "ListItem",
"position": 3,
"name": "Article Schema Guide"
}
]
}
]
}
The final breadcrumb item can omit item when it represents the current page. Google's breadcrumb examples allow the last item to contain only a name. The positions still need to run in order.
Step 1: choose the correct article type
Use the most specific honest type:
BlogPostingfor a normal blog or educational guide;NewsArticlefor actual news reporting;Articlewhen neither narrower type is a better description.
Do not add several types merely to cover every possibility. One accurate primary type is easier to maintain and validate. Schema.org permits many properties and nested types, while Google's search features use a documented subset. A property can be valid Schema.org and still have no effect on Google Search.
Step 2: identify the author as an entity
Google recommends marking each author separately and using Person for a person or Organization for an organization. Do not place several names in one name string.
"author": {
"@type": "Person",
"@id": "https://example.com/about/jordan-lee#person",
"name": "Jordan Lee",
"url": "https://example.com/about/jordan-lee"
}
For two authors, use an array of separate entities:
"author": [
{
"@type": "Person",
"name": "Jordan Lee",
"url": "https://example.com/about/jordan-lee"
},
{
"@type": "Person",
"name": "Morgan Cruz",
"url": "https://example.com/about/morgan-cruz"
}
]
The profile page should help identify the author. A useful page can explain role, experience, areas of work, and published material. Google specifically recommends an internal author page linked with author.url when available. sameAs can point to another page that unambiguously identifies the same person or organization, but it is not a substitute for a useful on-site profile.
Keep authorship factual. Do not create a fictional expert, use a reviewer who did not review the page, or add credentials that are not visible and verifiable.
Step 3: handle publication and update dates honestly
Use ISO 8601 date or date-time values:
"datePublished": "2026-07-25",
"dateModified": "2026-08-14T10:30:00+08:00"
Google recommends including timezone information when a time is supplied. A date without time can use YYYY-MM-DD. datePublished records when the article was first published, while dateModified records the most recent substantive update.
Correcting a typo, changing a button color, or rebuilding a shared footer is not a reason to tell readers that the guide was freshly updated. Change dateModified when the article's useful content, evidence, instructions, or conclusions materially change. Show that updated date on the page. The old-content decision guide explains when an existing page deserves a real update instead of a cosmetic freshness signal.
Keep dates consistent across visible copy, JSON-LD, Open Graph metadata where used, the content manifest, and sitemap lastmod.
Step 4: use a representative, crawlable image
The image property should point to an image that represents the article and can be crawled. Use an absolute HTTPS URL, not a private asset path or a CSS background reference.
Google recommends high-resolution images and supports several aspect ratios. A site does not need to manufacture misleading crops solely to fill an array. Supply the real, indexable image variants the page owns, keep their URLs stable, and ensure the visible hero corresponds to the declared image.
Step 5: connect the article to its canonical page
mainEntityOfPage identifies the page whose primary subject is the article. Its @id should normally match the clean canonical URL. Keep these values aligned:
- HTML canonical;
og:url;- structured data
url; - structured data
mainEntityOfPage.@id; - sitemap URL;
- internal links.
Mixed .html, trailing-slash, HTTP, HTTPS, and parameter versions create unnecessary ambiguity. Choose the public canonical format and use it consistently. If the sitemap lists redirects or alternate versions, use the sitemap and canonical cleanup workflow before treating structured data as the fix.
Step 6: describe the publisher once
Use Organization for a business publication and give the organization a stable @id, such as the homepage plus #organization. Reuse that ID across articles instead of creating a slightly different publisher on each page.
The logo should belong to the publisher, be crawlable, and use a stable URL. The article author and publisher do not have to be the same entity. A person can write an article published by a company.
Step 7: add breadcrumbs that match the site
A breadcrumb trail describes a typical route from a broader section to the current page. It is not a list of keywords.
Home > SEO Guides > Article Schema Guide
Each ListItem needs a numeric position and a name. Include item for linked breadcrumb pages. Use canonical URLs and the same hierarchy that the visible page and internal navigation imply.
Google can use breadcrumb markup to categorize page information in search results, but it can also choose a different display. Valid breadcrumb markup is not a promise that the full trail will appear.
Common implementation mistakes
Markup that disagrees with the page
Hidden dates, alternate authors, inflated headlines, and images unrelated to the article break the principle that structured data should represent visible content.
A new modification date on every build
If a deployment script sets dateModified to today on every release, unchanged articles appear freshly updated. Derive the date from actual editorial changes, not the build clock.
One author string containing several people
Use an array of separate Person objects. This lets each author have a name and identity URL.
Relative or noncanonical URLs
Use absolute public URLs in JSON-LD. Do not expose staging hosts, .html paths, tracking parameters, or image paths that require authentication.
Duplicate blocks that contradict each other
One template may generate JSON-LD while a plugin or tag manager injects another version. Inspect the rendered HTML, not only the source template. Remove or reconcile duplicate entities. Template-generated conflicts are among the technical SEO fixes that require code access, because editing one article cannot correct every generated page.
FAQ schema added to ordinary Q&A
Visible questions can still help readers. However, Google retired FAQ rich results on May 7, 2026. Do not add FAQPage markup to a guide in the hope of restoring that search feature.
Validate before and after release
- Confirm the visible author, dates, headline, image, and breadcrumb hierarchy.
- Validate the JSON syntax.
- Test the public or preview code in Google's Rich Results Test.
- Check the page in Schema.org Validator for vocabulary-level issues.
- Inspect the rendered HTML for duplicate or stale JSON-LD.
- Publish a small set first rather than changing every template at once.
- Use URL Inspection after launch to confirm Google can access the canonical page and resources.
- Monitor Search Console enhancement reports when Google provides a relevant report.
The Rich Results Test reports eligibility and errors for supported Google features. It cannot guarantee that a rich result will be displayed. Google's structured data policies explicitly state that correct markup does not guarantee special search appearance.
A compact maintenance rule
Treat article schema as generated content tied to the same source fields that render the visible page:
title -> H1 + headline
author entity -> byline + author object
published date -> visible published date + datePublished
modified date -> visible updated date + dateModified + sitemap lastmod
cover -> visible hero + image
canonical -> canonical + url + mainEntityOfPage
One source of truth prevents the most common drift. It also makes a sitewide author or URL correction safer than editing dozens of independent JSON blocks.
Sources checked
Google and Schema.org guidance was verified from primary sources on July 25, 2026.
- Google Search Central: Article structured data
- Google Search Central: Breadcrumb structured data
- Google Search Central: structured data general guidelines
- Google Search Central: introduction to structured data
- Google Search Console Help: retirement of FAQ rich results
- Schema.org: Article type
Need the implementation checked before rollout?
I can compare the rendered page, canonical signals, author entity, dates, and JSON-LD before the template is applied across the site.
Request a technical SEO review