Article Schema Generator

Build valid JSON-LD structured data for any article type in seconds.

Ad placeholder (leaderboard)
Enjoying the tools? Go Pro for £4.99 (one-time) and remove all ads — forever, on this device. Remove ads — £4.99

Every time an article appears in Google Search, Google has to decide how much space to give it. A bare blue link takes up one line. An Article rich result can take up three or four: headline, author name and photo, publication date, and a large thumbnail image. The difference between the two outcomes is almost always whether the page contains correct Article structured data — JSON-LD markup that describes the content in terms Google can read.

This generator builds that markup for you. Fill in the form, get valid JSON-LD instantly, and paste it into your page. No account needed, no data uploaded.

How it works

The tool presents a structured form with one section per area of the Article schema. As you type, the JSON-LD updates live in the output panel. The mapping from field to JSON-LD property follows the official schema.org/Article specification and Google’s Article rich-result documentation exactly:

  • Author fields become nested Person or Organization nodes — schema.org does not accept bare name strings; it requires typed entities with their own @type key.
  • Publisher becomes an Organization with an embedded ImageObject for the logo, because Google’s News guidelines require the logo to carry explicit width and height so it can be verified against its minimum-size rules.
  • Images become ImageObject nodes carrying url, width, height, and caption. Multiple images are output as an array so Google can choose the best crop for each display surface (AMP, Top Stories, Discover).
  • Optional fields (keywords, wordCount, articleSection, inLanguage) are omitted entirely when left blank rather than set to empty strings, keeping the output clean and avoiding schema validation warnings.

When you fill in the Breadcrumb section, the tool wraps both the Article and a BreadcrumbList inside a single @graph array — the pattern Google recommends for multi-schema pages.

Worked example

A technology blog post published on 1 June 2026 might produce output like this (abbreviated):

{
  "@context": "https://schema.org",
  "@type": "BlogPosting",
  "headline": "10 tips for better SEO in 2026",
  "datePublished": "2026-06-01",
  "author": {
    "@type": "Person",
    "name": "Jane Smith",
    "jobTitle": "Senior Writer",
    "url": "https://example.com/authors/jane"
  },
  "publisher": {
    "@type": "Organization",
    "name": "Example Media Ltd",
    "logo": {
      "@type": "ImageObject",
      "url": "https://example.com/logo.png",
      "width": 300,
      "height": 112
    }
  },
  "image": {
    "@type": "ImageObject",
    "url": "https://example.com/article-hero.jpg",
    "width": 1200,
    "height": 630
  },
  "wordCount": 1850,
  "keywords": "SEO, structured data, schema.org"
}

The same form for a NewsArticle with print fields set would add dateline, printEdition, printSection, and printPage. A ScholarlyArticle would instead add pagination, volumeNumber, issueNumber, and nest the journal inside an isPartOf Periodical node.

Formula note: nested entity construction

Schema.org uses a typed-node graph model. Every entity — person, organisation, image, rating — is represented as a nested JSON object with its own "@type" key rather than a flat scalar value. The rules this generator applies:

  • Author: { "@type": "Person", "name": "...", "jobTitle": "...", "url": "...", "image": "..." } or { "@type": "Organization", "name": "...", "url": "..." } depending on the toggle.
  • Publisher logo size check: width and height are cast to numbers; if either parses as zero or NaN it is omitted, because the spec requires positive integers.
  • Aggregate rating formula: the rating object uses "bestRating": 5 and "worstRating": 1 as defaults, which is correct for a 1-to-5 star scale. The ratingValue is stored as a floating-point number (e.g. 4.7), not a string.
  • Breadcrumb position: each breadcrumb item gets an integer position starting at 1 — schema.org requires this for ListItem in a BreadcrumbList.
  • Citation detection: citation lines starting with http:// or https:// become { "@type": "CreativeWork", "url": "..." } nodes; all other lines become { "@type": "CreativeWork", "name": "..." } nodes representing plain-text references.
  • @graph output: when a breadcrumb is present, the entire document switches to the @graph pattern — an array of independent typed nodes each with their own implicit @context inherited from the root — rather than nesting one schema inside another.

Richness score

The panel at the top tracks how many optional fields you have filled relative to the total available. A “Basic” rating (below 50%) means only required fields are present; “Good” (50–80%) adds images, keywords, and descriptions; “Rich” (above 80%) means nearly all optional signals are populated. More signals give Google more confidence that your markup accurately represents your content, which improves the chance of earning a rich result.

Ad placeholder (rectangle)