Free SEO Tools

Article Schema Generator

Create Article, BlogPosting, or NewsArticle JSON-LD from your post metadata.

One image URL per line.

BlogPosting JSON-LD
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "BlogPosting",
  "mainEntityOfPage": {
    "@type": "WebPage",
    "@id": "https://example.com/blog/example-post"
  },
  "headline": "How to Improve WordPress SEO",
  "description": "A practical guide to improving WordPress SEO with technical checks, metadata, content updates, and structured data.",
  "author": {
    "@type": "Person",
    "name": "Jane Doe"
  },
  "publisher": {
    "@type": "Organization",
    "name": "Example Co"
  },
  "datePublished": "2026-06-17",
  "dateModified": "2026-06-17",
  "image": [
    "https://example.com/image.jpg"
  ],
  "articleSection": "SEO",
  "keywords": "wordpress seo, technical seo"
}
</script>

What Google does with Article markup

As of October 2026, Google’s Article documentation has no required properties. It asks you to add the ones that apply to your content and recommends five: author (with a name, a type and a url to a profile), datePublished, dateModified, headline and image. With them, Google can show better title text, images and dates for the article in Search, in Google News and on its other surfaces. It may still choose not to.

There is no Article report in Search Console, and URL Inspection doesn’t list Article among a page’s enhancements. The Rich Results Test does detect Article items, so that is where you check them. Top stories and Google News don’t require the markup either; they depend on Google’s news policies and the content.

So the payoff is quieter than a review star or a price in the results. Good Article markup removes ambiguity: which date is the publish date, who wrote the piece, which image represents it. Wrong markup does the reverse: an old article shown with a new date, the wrong author, or your logo used as the article image.

Article, BlogPosting or NewsArticle

The generator offers the three types Google’s Article documentation uses in its examples. Google’s Article documentation accepts all three and lists the same properties for each, so the choice describes the page; it doesn’t unlock anything.

TypeUse it forExample
BlogPostingPosts in a blog: dated, authored, listed in a feed.A company blog post about a product update.
NewsArticleReporting on recent events by a news publisher.A local paper’s report on a council vote.
ArticleEditorial pages that are neither blog posts nor news.An evergreen guide in a resources section, or a magazine feature.

Don’t pick NewsArticle to look newsworthy. An evergreen tutorial marked as news is simply mislabelled. If you run Rank Math with its News Sitemap, note that Rank Math switches posts included in that sitemap to NewsArticle on its own, whatever the Article Type setting says.

What the generator outputs, field by field

Every text field is trimmed. Description, publisher, modified date, images, section and keywords are left out when blank. Headline, author name, article URL and published date are always printed, even when blank, so fill all four in. The form starts with sample values, including an example.com URL, a sample author and a sample publisher; replace every one.

FieldBecomesWhat to check
Article type@typeArticle, BlogPosting or NewsArticle.
Article URLmainEntityOfPage, a WebPage with that @idThe canonical URL, not a preview or tracking URL.
HeadlineheadlineThe title shown on the page.
DescriptiondescriptionOptional, and not on Google’s recommended list.
Authorauthor, a Person with a nameOne author, no profile URL.
Publisherpublisher, an Organization with a nameNo logo or URL.
Published and modified datesdatePublished, dateModifiedA date only, with no time or time zone.
Image URLsimage, a list of URLsOne per line; blank lines are dropped.
Section and keywordsarticleSection, keywordsValid schema.org; Google doesn’t list them.

What to add before you publish

The output is valid as it stands, but it stops short of Google’s recommendations in a few places, and some sites need more. Work through this list for the page you are marking up.

  • author.url: a link to the author’s profile page on your site, or sameAs links to their profiles elsewhere. It is how Google tells two people with the same name apart.
  • Every author. If two people wrote the piece, author becomes a list of two Person items, not one name with "and" in it.
  • An Organization author when the byline is a company or a team. The generator always prints Person, so change the type.
  • A time and time zone on both dates, such as 2026-06-17T09:30:00-04:00. Without a time zone, Google assumes the one Googlebot uses.
  • Images in the ratios Google asks for, 16x9, 4x3 and 1x1, each at least 50,000 pixels when you multiply width by height, and crawlable.
  • isAccessibleForFree set to false, with the paywalled part marked, if the article sits behind a paywall. Google documents this separately for subscription content.

Author and date, as generated and as completed

Before: "author": {"@type": "Person", "name": "Jane Doe"}, "datePublished": "2026-06-17"

After: "author": [{"@type": "Person", "name": "Jane Doe", "url": "https://example.com/authors/jane-doe"}, {"@type": "Person", "name": "Sam Lee", "url": "https://example.com/authors/sam-lee"}], "datePublished": "2026-06-17T09:30:00-04:00"

Illustrative values. Two authors, each with a profile URL, and a publish date with its time zone.

Publisher isn’t among the properties Google’s Article documentation recommends. It is valid schema.org and does no harm, which is why the generator keeps it, but don’t spend time on a publisher logo for Google’s sake.

Dates that agree with the page

Dates cause more Article problems than any other field, because WordPress, the theme and the markup can each show a different one. Google’s guidance on byline dates comes down to this: show a clear date on the page, label it Published or Updated when you show both, use the same dates in datePublished and dateModified, and get the time zone right.

Change dateModified when the content changes in a way a reader would care about: a new section, corrected facts, updated prices. Don’t change it for a typo fix or a new internal link to make the post look fresh. Some themes and plugins show the modified date after any save at all; if yours does, the page will claim an update the reader can’t find.

datePublished never moves. If you rewrite an old post, keep its original publish date and add an updated date, or publish the rewrite as a new article on a new URL. A post that says Published October 2026 for content first published in 2021 misleads readers and gains nothing.

A rewritten post

Before: Visible: "Updated September 30, 2026". Markup: "datePublished": "2026-09-30", no dateModified

After: Visible: "Published March 4, 2025 · Updated September 30, 2026". Markup: "datePublished": "2025-03-04T08:00:00-05:00", "dateModified": "2026-09-30T14:10:00-04:00"

Illustrative values. The page and the markup now tell the same story, each date with its own time zone offset.

Author markup that identifies a real person

Google’s author best practices are short. Include every author. Put only the person’s name in the name field: no "Posted by", no job title, no "and" joining two names. Use Person for people and Organization for companies. Point url, or sameAs, at a page that is about that person.

In WordPress the obvious url is the author archive that core creates at /author/username/, as long as your theme shows a bio there. If you turned author archives off in Yoast SEO or Rank Math to avoid thin pages, those URLs now redirect, so link to an about-the-team page with a section for that person instead, or leave url out. Never point it at a URL that redirects to the home page.

Check the WordPress user, too. Posts published under a shared admin account give every article the same author, often literally named admin. Assign each post to the person who wrote it and give that user a real display name, because SEO plugins build their author markup from that user.

The name field

Before: "name": "By Jane Doe, Senior Editor"

After: "name": "Jane Doe", "jobTitle": "Senior Editor"

jobTitle is its own schema.org property on Person. The name field holds the name and nothing else.

Where Article markup comes from in WordPress

Most WordPress posts already have Article markup before you open this generator. Check the live page before adding anything.

Yoast SEO prints Article markup on posts by default, as part of one connected graph with the WebPage, the author as a Person, and the Organization or Person you set under Site representation. Change the default for all posts under Yoast SEO, Settings, Content types, Posts. Change a single post in the Schema tab of the Yoast sidebar, where Article type offers Article, Blog post, News article and several narrower types.

Rank Math uses Article for posts by default too. The site-wide setting is under Rank Math SEO, Titles & Meta, Posts: Schema Type is Article, and Article Type chooses Article, Blog Post or News Article. For one post, open the Schema tab in Rank Math’s sidebar.

SEOPress handles Article markup in SEOPress PRO, through Structured Data Types: per post in the Structured Data Types metabox, or for a whole post type under SEO, Schemas.

Themes are a fourth source. Some add microdata to their post templates, with itemscope and itemtype attributes that describe the post as a BlogPosting or Article. The Schema Markup Validator at validator.schema.org lists microdata and JSON-LD items side by side, so a theme’s item shows up next to your plugin’s.

When to use the generator’s output, and when not to

If an SEO plugin already prints Article markup for the post, don’t paste a second block. Two Article items with different authors, dates or images leave Google to pick, and you don’t control which. Fix the plugin’s inputs instead: the author’s profile, the featured image, the visible dates, the Article type setting.

The generator is the right tool when nothing else describes the page: a site with no SEO plugin, a landing page your SEO plugin marks up as a plain WebPage, a static HTML section, or a custom post type your plugin skips. It also works as a reference: fill it in with what the post should say, then compare that with what the Rich Results Test finds on the live URL.

If you do paste it, put it in a Custom HTML block on that post, or in a head snippet limited to that URL. Enter the post’s canonical URL in the Article URL field, because mainEntityOfPage ties the markup to that address.

To do this across a whole site, RankHive finds posts with real Search Console impressions that have no structured data, drafts the block, and after you approve it, its WordPress plugin prints it in that post’s head. That block sits beside your SEO plugin’s graph, not inside it, so test the first one for a duplicate Article.

Worked example: a rewritten how-to post

An illustrative case. A gardening site on Rank Math has a 2025 post, "How to winterize a sprinkler system", rewritten in September 2026. The editor changed the visible date to the rewrite date and, unsure whether Rank Math covered the post, pasted Article markup from this generator into it.

The Rich Results Test now shows two Article items. Rank Math’s is a BlogPosting with the March 2025 publish date and the September 2026 modified date, which is right. The pasted one is an Article with September 2026 as the publish date and the generator’s sample author still in it.

The fix

Before: Two items: Rank Math’s BlogPosting, plus a pasted Article with a sample author and the wrong publish date

After: One BlogPosting from Rank Math, with the original publish date, the rewrite as dateModified, and a byline showing both dates

Deleting the pasted block and restoring both visible dates fixed both problems. The generator was still useful: filled in correctly, its output was the checklist for what Rank Math’s item should contain.

Checking Article markup in the Rich Results Test

Because Search Console has no Article report, the Rich Results Test is your monitoring. Run it after you publish, and again after any theme or SEO plugin change, since those are what usually break Article markup.

  1. 1.Test the live URL, not pasted code, so you see what WordPress actually serves.
  2. 2.Open the Article item. If there are two, find where each comes from before changing anything.
  3. 3.Compare headline, image, author and both dates with what the page shows.
  4. 4.Check the image URLs open in a browser and aren’t blocked by robots.txt or hotlink protection.
  5. 5.Run the same URL through the Schema Markup Validator to catch theme microdata and properties Google ignores.

Troubleshooting Article markup by symptom

Most Article faults trace back to dates, duplicate sources or images. Start from what you see.

SymptomLikely causeFix
Two Article items in the testAn SEO plugin and a pasted block, or theme microdata, each describe the post.Keep one source and remove the others.
Invalid value for datePublishedA date such as 17/06/2026 or June 17, 2026 in the markup.Use ISO 8601, such as 2026-06-17, ideally with a time and offset.
Search shows an old date for an updated postThe visible date, the markup and the sitemap disagree, or dateModified is missing.Make the page and the markup show the same two dates.
The wrong image appears with the resultimage lists a logo or small icon, or the main image is too small.List the article’s main image, in the recommended ratios.
Author shows as adminThe post belongs to a shared WordPress account.Reassign the post and give the user a real name.
dateModified earlier than datePublishedDates entered in the wrong fields.Swap them.

FAQ about the Article Schema

Which article type should I choose?

BlogPosting for blog posts, NewsArticle for news reporting from a news publisher, and Article for other editorial pages. Google’s Article documentation lists the same properties for all three, so pick the one that describes the page honestly.

Does Google require any Article properties?

No. Google’s Article documentation has no required properties. It recommends author, datePublished, dateModified, headline and image. This generator prints all five, but you should add an author URL and a time zone on the dates.

Are images required?

Not required, but recommended. Google asks for crawlable images that represent the article, ideally in 16x9, 4x3 and 1x1 ratios and at least 50,000 pixels each when you multiply width by height.

Do I need this if I use Yoast SEO or Rank Math?

Usually not. Both print Article markup on posts by default. Use this generator’s output only where your plugin prints nothing, and test the live page so you don’t end up with two Article items.

Why is there no Article report in Search Console?

Google doesn’t provide one for Article markup. Check it with the Rich Results Test on the live URL, after publishing and after any theme or SEO plugin change.

Should I change dateModified every time I update a post?

Only when the change matters to a reader, such as new information or corrected facts. Changing it for small edits claims freshness the page doesn’t have, and the visible updated date should always match the markup.

Will Article markup get my post into Top stories?

Not by itself. Top stories and Google News don’t require Article markup, and no markup guarantees a placement. It helps Google read the headline, dates and images correctly when it does show the article.