Schema Markup for Small Websites: FAQ, Article and Breadcrumb
Schema markup is a machine-readable summary of what a page already says. It does not replace a clear title, a useful article or a fast layout. It tells search systems the page type, the headline, the publisher, the questions answered and the trail of breadcrumbs a visitor followed. Small sites benefit most when they add a few honest types and skip the rest.
This guide explains JSON-LD for static HTML. You do not need a plugin. You need a match between the visible content and the script. If the script claims a five-star product and the page is a free calculator, the markup is worse than having none.
Start with types you can support
Four types cover most small tool and content sites. WebSite belongs on the homepage and can include a search action if a real on-site search exists. Article belongs on blog posts. BreadcrumbList belongs on pages that show a breadcrumb trail. FAQPage belongs only when the questions and answers are visible on the page. Tool pages can add SoftwareApplication when the page is genuinely an application, with a name, description and operating system such as “Any” for a browser tool.
Leave out Recipe, Event, JobPosting, Product offers and Review unless those things are real. Empty offers and invented ratings are a common reason rich results disappear later.
Use JSON-LD, not hidden HTML wrappers
JSON-LD is a <script type="application/ld+json"> block. It keeps structured data out of your visible markup, which helps you maintain templates. Put one object per script, or a small @graph if you prefer a single block. Invalid JSON — a trailing comma, an unescaped quote, smart quotes copied from a document — makes the whole block fail.
Validate after each edit. A schema tester or the rich results report in Search Console will show missing required properties. Fix those before you add more types.
Article markup that stays accurate
Article JSON-LD should repeat facts already on the page: headline, description, canonical URL, datePublished, dateModified, and an author or publisher organisation. If you update a section, change dateModified. If the headline in the H1 changes, change the headline property. Search systems compare these strings; large mismatches look like leftovers from an old template.
You do not need a fake image object if the article has no hero image. A text-first post can omit image rather than pointing at a logo that is not the article artwork. Keep the page light; structured data should not force extra image downloads.
FAQ markup only for visible Q&A
FAQPage requires that each question and accepted answer appear on the HTML page. Duplicate the same wording, not a shorter teaser in JSON and a different essay in the article. Hidden FAQ content that exists only in the script is against the guidelines.
Write questions people actually ask after reading the article. “What is schema?” is weaker than “Does schema markup guarantee rich results?” Keep answers short in both the page and the script. Five focused questions are enough for a tutorial. A list of twenty keyword questions is noise.
Breadcrumbs that match the trail
If the page shows Home › Blog › Title, the BreadcrumbList should use those names and the real URLs. Do not invent extra levels. Do not point the last item at a different address than the canonical. Breadcrumbs help search features and they help you notice architecture mistakes, such as a tool page that claims it sits under Blog.
SoftwareApplication for browser tools
A free browser utility can be described as a WebApplication. Include name, description, applicationCategory, operatingSystem and a short offer that states the price is 0 when the tool is free. Do not mark a blog post as SoftwareApplication. Do not add aggregateRating unless ratings are collected and shown.
Keep the description aligned with the on-page intro. The SEO Analyzer description should mention HTML audits, not “the best AI in the world.” Honest software markup supports understanding; hype belongs nowhere in JSON-LD.
How schema interacts with speed
JSON-LD is text. A few hundred bytes in the head will not ruin a 95+ performance budget. What ruins the budget is loading a tag-manager bundle, a schema plugin that injects five unused types, or a screenshot image added only so Article markup has an image field. Prefer valid compact scripts and no extra assets.
Place scripts so they do not block rendering. JSON-LD is not render-blocking in modern browsers the way a large CSS file is, but you should still avoid huge graphs copied from a generator that includes every optional property with empty strings.
A safe implementation order
- Add WebSite on the homepage with the canonical domain.
- Add Article plus BreadcrumbList on each blog post.
- Add FAQPage only after the FAQ section is written in HTML.
- Add SoftwareApplication on tool pages that are real apps.
- Test one URL of each template in a rich results tester.
- Watch Search Console enhancements for errors after deployment.
Do this on templates, not by hand on fifty one-off variants, or the dates and headlines will drift. On a static site, keep a shared head partial in mind even if you copy files: the fields that change are headline, description, dates and URL.
Common mistakes to avoid
- Marking every page as Article, including Contact and Privacy.
- Using Organization markup with a logo URL that 404s.
- Copying JSON from another site and leaving their domain in @id.
- Escaping HTML entities inside JSON incorrectly so the script breaks.
- Adding HowTo markup when the page is not a step-by-step how-to.
If a type is uncertain, omit it. Clean Article and Breadcrumb data is more useful than a pile of speculative types.
Frequently asked questions
Does schema markup guarantee rich results?
No. Valid markup makes a page eligible. Google still decides whether to show a rich result based on guidelines, quality, query and available space.
Should I add Review schema if I have no reviews?
No. Do not invent ratings. Schema must describe content that is visible and true on the page. Fake review markup can cause manual or automated issues.
Is JSON-LD better than microdata?
JSON-LD is easier to maintain on static HTML sites because it lives in a script tag and does not wrap every heading. Google recommends it for most cases.
Can one page have more than one schema type?
Yes, when each type matches visible content. An article can include Article, BreadcrumbList and FAQPage if those elements are actually on the page.
Where should I put JSON-LD?
Place it in the head or at the end of the body. Keep it valid JSON, match the canonical URL, and update dates when the page content changes.
Schema works when it is boring and true. Describe the page you published, keep the JSON valid, and resist types you cannot support. Combined with clean URLs, a readable sitemap and internal links, structured data helps search systems understand a small site without adding weight that would hurt a high speed score.