XooCode(){

Article Schema Generator

Fill out a form. Get valid Article JSON-LD.

A form-driven builder for schema.org Article markup with a live JSON-LD preview that updates as you type. Handles the required headline, description, and image triple, the three-date pattern (datePublished, dateModified, dateCreated), and nested author and publisher entities. Switch to Full coverage mode for alternativeHeadline, articleBody, wordCount, keywords, @id author attribution, paywall toggle, and mainEntityOfPage. Everything runs in your browser, nothing is sent to XooCode.

Article form

Title of the article. Google truncates at 110 characters. 56/110

Summary of the article. Google truncates at ~160 chars in the SERP.

Images (three aspect ratios)

Google's Article rich result requires images in three aspect ratios: 1:1 (1200x1200), 4:3 (1200x900), and 16:9 (1200x675). All three are recommended for full rich result eligibility.

Square. Minimum 1200x1200px.

Landscape. Minimum 1200x900px.

Widescreen. Minimum 1200x675px.

Canonical URL of the article page.

When the article was first published.

When the article was last updated.

Emits as nested Person. In Full mode you can use @id instead.

Emits as nested Organization.

Live JSON-LD output

schema.org/Article
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "Pediatric Care in Post-War Denmark: A Clinical Framework",
  "description": "A clinical framework for pediatric care in post-war Denmark, introducing the triage protocols and nutritional benchmarks that would come to define modern children's medicine across Scandinavia.",
  "image": [
    "https://roydanmedjournal.dk/images/1945/pediatric-framework-1x1.jpg",
    "https://roydanmedjournal.dk/images/1945/pediatric-framework-4x3.jpg",
    "https://roydanmedjournal.dk/images/1945/pediatric-framework-16x9.jpg"
  ],
  "url": "https://roydanmedjournal.dk/archive/1945/pediatric-care-post-war-denmark",
  "datePublished": "1945-03-15",
  "dateModified": "2024-11-01",
  "author": {
    "@type": "Person",
    "name": "Jane Xoo"
  },
  "publisher": {
    "@type": "Organization",
    "name": "Royal Danish Medical Journal"
  }
}
</script>

Updates as you type. Empty fields are omitted from the output. Click the copy icon above to copy the full <script> tag ready for pasting into your HTML head.

How to use the generator

The tool is a two-pane split: a form on the left, a live JSON-LD preview on the right. Type into any field and the preview updates immediately. When you’re done, click the copy icon in the preview header and paste the <script> block into your page’s <head> tag. That’s the whole workflow.

  1. 1

    Start from the seed or start blank

    Above the form there’s a Load example button. Click it and every field populates with Jane Xoo’s 1945 pediatric paper, a fictional reference article from the Xoo universe. Use it to see what a fully-populated Article output looks like, then clear and start over for your own content. Or skip the seed entirely and start from a blank form.
  2. 2

    Pick your coverage mode

    The Coverage dropdown next to the Load example button has two settings. Essential shows the fields Google needs for Article rich results: headline, images, dates, author, and publisher. Full keeps everything from Essential and adds dateCreated, alternativeHeadline, articleBody, wordCount, keywords, the @id author toggle, the paywall toggle, and mainEntityOfPage.
  3. 3

    Fill in the image triple

    Google requires images in three aspect ratios for Article rich results: 1:1 at 1200×1200, 4:3 at 1200×900, and 16:9 at 1200×675. The form has three separate URL fields, one per aspect ratio. Each image should be at least 1200 pixels wide. Missing an aspect ratio won’t break validation, but it reduces the surfaces where your rich result can appear.
  4. 4

    Copy the output

    The preview pane shows the full <script type="application/ld+json"> wrapper with syntax highlighting. Click the copy icon to grab it and paste into your page head. Test it with Google’s Rich Results Test before publishing to catch value-level issues the form can’t see (broken image URLs, invalid dates, etc).

The three-date pattern

Article markup supports three date properties, and getting them right matters more than most authors expect. datePublished is the only required date. It tells Google and AI crawlers when the article first went live. Without it, your markup is technically valid but practically invisible to any system that filters by recency.

dateModified tells Google the content is actively maintained. When you update an article with new information, setting dateModified to the actual revision date signals freshness without resetting the publication history. Google uses this in ranking for time-sensitive queries: an article published in 2021 but modified last week can outrank a brand-new post on the same topic if the modification is substantive.

dateCreated is the draft date, the moment the document was first authored regardless of when it went public. Most articles don’t need this. It’s useful for academic papers, legal documents, and editorial workflows where the gap between drafting and publication is meaningful. The generator exposes dateCreated only in Full mode.

Google’s three-aspect-ratio image requirement

Article rich results need images in three aspect ratios: 1:1, 4:3, and 16:9. Google’s documentation says “images should be at least 1200 pixels wide,” which translates to 1200×1200 for the square crop, 1200×900 for the 4:3 crop, and 1200×675 for the 16:9 crop.

The three aspect ratios serve different surfaces. The 1:1 square appears in mobile search results and Google Discover on smaller screens. The 4:3 ratio shows up in desktop search snippets and the standard article card layout. The 16:9 widescreen format is used in the Discover feed, Top Stories carousel, and AMP story previews. Each surface picks the best-fit image from your markup. If an aspect ratio is missing, that surface falls back to cropping the next-closest match, which often looks poor and can reduce click-through.

Missing an aspect ratio does not break the markup or invalidate the JSON-LD. The Rich Results Test will still pass. But it reduces your rich result eligibility across surfaces. For maximum coverage, supply all three.

When to use Article vs a subtype

Article is the catch-all type in the schema.org article hierarchy. If your content is written prose intended for a general audience and doesn’t fit a more specific bucket, Article is the correct choice. But schema.org defines several subtypes that carry additional properties and trigger different Google behaviours. Picking the right one matters.

Use NewsArticle for journalism: breaking news, investigative reports, opinion columns with a dateline. NewsArticle inherits everything from Article and adds dateline and print-edition metadata. More importantly, NewsArticle is the type Google requires for Top Stories carousel eligibility. If your site is a registered news publisher, this is the type you want.

Use BlogPosting for personal or company blog content where individual author identity matters. BlogPosting is technically a subtype of SocialMediaPosting, which itself descends from Article. It signals informal, author-attributed content and pairs well with individual author entities that have their own @id, social profiles, and expertise signals.

Use TechArticle for developer documentation, API guides, tutorials, and technical how-tos. TechArticle adds proficiencyLevel (Beginner, Expert) and dependencies properties that help search engines categorise content by reader skill level. If your content assumes technical background knowledge, TechArticle is the better fit.

If none of those subtypes match, plain Article is correct. You lose nothing by using it, and you avoid the risk of misclassifying your content into a subtype whose semantics don’t apply.

What this generator isn't

The Article Schema Generator is a tightly-scoped authoring tool. Knowing what it doesn’t try to do will save you time looking for features that were never supposed to exist.

It IS a full Article JSON-LD builder

Covers the headline, description, and image triple, the three-date pattern, nested author and publisher entities, and every semantically-useful Article property in Full mode.

It is NOT a NewsArticle builder

NewsArticle adds dateline and print metadata for journalism. Use the NewsArticle Generator for news content.

It IS Essential/Full aware

Essential mode shows only the fields Google requires for Article rich results. Full mode exposes dateCreated, alternativeHeadline, articleBody, wordCount, keywords, @id author toggle, paywall toggle, and mainEntityOfPage.

It is NOT a headline optimizer

The form accepts whatever headline you type. It does not score, rewrite, or A/B test headlines. Headline optimization is a separate discipline from structured data authoring.

It IS @id author aware

Full mode lets you toggle author output between an inline Person object and an @id reference. Use @id when your site has a central author entity defined elsewhere in your markup.

It is NOT a Rich Results Test

Run the JSON-LD through Google's Rich Results Test afterwards to catch value-level mistakes the form can't see (broken URLs, invalid dates, missing image dimensions).

Authoritative sources

The generator’s behaviour is sourced from primary documentation. These are the documents to consult when you need to verify anything the tool produces.

  • schema.org/Article. The canonical vocabulary definition. Article inherits from CreativeWork which inherits from Thing, so the full property list is much longer than the Article-specific section.
  • Google Article structured data documentation. The current required and recommended property lists for Article rich results. Read this when deciding which fields to populate.
  • Google Rich Results Test. Run your generator output through this to confirm the markup is valid and eligible for Article rich results. Free and immediate.
  • Google paywalled content documentation. Covers the isAccessibleForFree property and the cssSelector pattern for marking paywall boundaries in Article markup. Relevant when you toggle the paywall option in Full mode.