Free AI visibility check. One page, all four dimensions. No signup, nothing installed. Check a page →
Home/Tools

Free tool

JSON-LD templates

Six blocks covering almost every small-business page. Replace the values, validate, ship.

Updated 4 min read

Paste these into your <head>. Replace every bracketed value. Validate with the Schema Markup Validator before shipping — malformed JSON-LD is discarded silently.

Organization — every page

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Organization",
  "@id": "https://[domain]/#org",
  "name": "[Exact legal or trading name]",
  "url": "https://[domain]",
  "description": "[One sentence with a constraint]",
  "email": "[email]",
  "telephone": "[+61...]",
  "sameAs": ["[LinkedIn]", "[Facebook]", "[Instagram]"]
}
</script>
WHAT A VISITOR SEES marked up WHAT A MACHINE READS "@type""Organization" "name""Your business" "address""Sydney NSW" "openingHours""Mo-Fr 09:00"

LocalBusiness — if you have a physical location

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "LocalBusiness",
  "@id": "https://[domain]/#org",
  "name": "[Name]",
  "url": "https://[domain]",
  "telephone": "[+61...]",
  "priceRange": "$$",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "[Street]",
    "addressLocality": "[Town]",
    "addressRegion": "[NSW]",
    "postalCode": "[2800]",
    "addressCountry": "AU"
  },
  "openingHoursSpecification": [{
    "@type": "OpeningHoursSpecification",
    "dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday"],
    "opens": "08:00", "closes": "17:00"
  }]
}
</script>

Use LocalBusiness instead of Organization, not as well as. Two conflicting blocks is worse than one.

FAQPage — any page answering questions

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [{
    "@type": "Question",
    "name": "[The question, phrased as a customer would ask it]",
    "acceptedAnswer": {
      "@type": "Answer",
      "text": "[Answer in the first sentence. Detail after. Under 50 words.]"
    }
  }]
}
</script>

The questions and answers must also be visible on the page.

Article — guides and blog posts

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "[Under 110 characters]",
  "description": "[One sentence]",
  "datePublished": "[2026-03-11]",
  "dateModified": "[2026-07-31]",
  "author": { "@type": "Person", "name": "[Real name]", "url": "https://[domain]/team/[slug]" },
  "publisher": { "@id": "https://[domain]/#org" }
}
</script>

Service — what you sell, if it is not a product

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Service",
  "name": "[Service name]",
  "serviceType": "[Category]",
  "provider": { "@id": "https://[domain]/#org" },
  "areaServed": { "@type": "AdministrativeArea", "name": "[Region]" },
  "offers": {
    "@type": "Offer",
    "price": "[number]",
    "priceCurrency": "AUD"
  }
}
</script>

Product — ecommerce

Most platforms emit this already. Check before adding a second one.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "[Product name]",
  "description": "[One sentence]",
  "sku": "[SKU]",
  "brand": { "@type": "Brand", "name": "[Brand]" },
  "offers": {
    "@type": "Offer",
    "price": "[number]",
    "priceCurrency": "AUD",
    "availability": "https://schema.org/InStock",
    "url": "https://[domain]/[product-url]"
  }
}
</script>
NEVER

Put a rating, review count or price in schema that is not real and visible on the page. It is a policy violation and it is the fastest way to lose trust you cannot easily win back.

Background reading: JSON-LD without the jargon.

Take this to your assistant

Paste it into ChatGPT, Copilot, Claude or Gemini and apply it to your own website.

Nothing is sent anywhere. The text is copied to your clipboard.