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
PersonorOrganizationnodes — schema.org does not accept bare name strings; it requires typed entities with their own@typekey. - Publisher becomes an
Organizationwith an embeddedImageObjectfor 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
ImageObjectnodes carryingurl,width,height, andcaption. 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": 5and"worstRating": 1as defaults, which is correct for a 1-to-5 star scale. TheratingValueis stored as a floating-point number (e.g. 4.7), not a string. - Breadcrumb position: each breadcrumb item gets an integer
positionstarting at 1 — schema.org requires this forListItemin aBreadcrumbList. - Citation detection: citation lines starting with
http://orhttps://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
@graphpattern — an array of independent typed nodes each with their own implicit@contextinherited 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.