NarsilCreative

Articles · SEO

How to Add Schema Markup to Your Website (No Plugin Needed)

By The Narsil Team · 6 min read

TL;DR

To add schema markup, generate a JSON-LD block for the type that matches your page (LocalBusiness, Organization, or Article for most businesses), paste it anywhere in the page's HTML, and confirm it parses in Google's Rich Results Test. The whole job takes minutes per page. The judgment call is which types to bother with, because Google has retired the rich results for several types that generators still happily produce.

To add schema markup: pick the type that matches your page, generate the JSON-LD block, paste it into the page's HTML, and validate it. That's the whole procedure, and for most pages it takes under five minutes. No plugin required, no developer required for most platforms, and no ongoing maintenance beyond updating the block when the facts on the page change.

The part that deserves your attention isn't the pasting. It's choosing which types to deploy, because the schema ecosystem has a freshness problem: Google has retired the visible rewards for several popular types, and most generators and tutorials haven't caught up. Adding markup that earns nothing isn't harmful, but the time is real, and you should spend it where it still counts.

What schema markup is, in one paragraph

Schema markup is structured data that restates your page's facts in a format built for machines. The modern form is JSON-LD: a script block that says, in effect, "this page is about a business named X, at this address, with this phone number, and these are its official profiles." Machines can read your HTML without it. What schema removes is doubt, and systems that assemble answers, from Google to the AI assistants, prefer facts they don't have to infer. Whether that translates into AI citations is a separate question with a fair amount of nuance, and we've written up what the evidence says about schema and AI citations separately. This piece is the how.

Step 1: pick the type that matches the page

Match the markup to what the page actually is. For most businesses that means:

  • LocalBusiness on the homepage or contact page: name, address, phone, URL, and your profile links. Google's vocabulary includes specific subtypes (Plumber, Electrician, HVACBusiness, Dentist and dozens more), and the specific subtype beats the generic one when it fits.
  • Organization for the entity behind the site, especially if you aren't a local business: name, URL, logo, and sameAs links to your real profiles.
  • Article on blog posts and guides: headline, author, publish date, modified date. This is how your dates and authorship become legible instead of inferred.
  • FAQPage on pages with genuine question-and-answer content, with a caveat covered below.

One page, one primary type. A plumbing homepage doesn't need Article markup, and a blog post doesn't need LocalBusiness.

Step 2: know what's been retired before you build

This is the step the tutorials skip, so here it is as a plain timeline, all of it from Google's own documentation and announcements:

HowTo rich results were deprecated in September 2023. FAQ rich results were restricted to government and health sites in August 2023, then removed entirely in May 2026. Neither type earns the visual treatment in search results anymore, for anyone.

What that means practically: skip HowTo completely, and treat FAQ markup as optional entity hygiene rather than a search feature. The markup remains valid schema, and restating your questions and answers in machine-readable form is a defensible, cheap thing to do for AI systems that parse structure. It is not a rich-results play, and any tool or agency still selling it as one is working from a three-year-old playbook. That's also why our own generator refuses to offer HowTo and puts a warning on the FAQ tab: a tool that will cheerfully produce obsolete markup is a tool optimizing for your click, not your outcome.

Still earning visible treatment where they apply: Review snippets, Product markup, Breadcrumb, Event, and a handful of others. For the average service business, though, the workhorses are LocalBusiness, Organization, and Article, and their value doesn't depend on a visual rich result at all.

Step 3: generate the block

You can write JSON-LD by hand, but a generator is faster and avoids syntax errors. Our free schema markup generator builds LocalBusiness, Organization, Article, and FAQ blocks in your browser, omits any field you leave blank, and hands you the finished script tag.

Here's the shape of a LocalBusiness block, trimmed to the essentials, as a template you can adapt directly:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Plumber",
  "name": "Bold City Plumbing",
  "url": "https://boldcityplumbing.com",
  "telephone": "+1-904-555-0123",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "123 Main St",
    "addressLocality": "Jacksonville",
    "addressRegion": "FL",
    "postalCode": "32202",
    "addressCountry": "US"
  },
  "sameAs": [
    "https://www.facebook.com/boldcityplumbing",
    "https://www.yelp.com/biz/bold-city-plumbing"
  ]
}
</script>

Two details that matter more than they look. First, the name, address, and phone in this block must match your Google Business Profile and your citations character for character. Machines cross-reference sources, and consistency is a big part of how LLMs decide which brands to trust; your own site disagreeing with your own listings is a self-inflicted wound. Second, sameAs should point at profiles that are actually yours and actually live. An empty or broken profile link is worse than none.

A quick word on format, since older tutorials still show alternatives: use JSON-LD, not microdata or RDFa. Microdata weaves the markup into your HTML attributes, which makes it fragile (a theme update can silently shred it) and miserable to maintain. JSON-LD lives in one self-contained block, survives template changes, and is the format Google's own documentation recommends. If your site carries old microdata that validates, leave it; for anything new, JSON-LD.

Step 4: paste it

JSON-LD goes anywhere in the page's HTML. The head is the convention, and most platforms give you a way in without touching code: WordPress themes have header-script boxes or hooks, site builders have custom-code embeds, and anything custom just takes the block in the template. It renders nothing visible on the page, which is exactly right: this is machine-facing text.

The three ways schema goes wrong

Adding the markup is easy enough that the failures are rarely mechanical. They're judgment failures, and the same three keep showing up in audits:

First, markup that disagrees with the page. Google's guidelines require structured data to reflect content that's visible on the page. Marking up services you don't list, an address you don't show, or reviews that appear nowhere isn't clever; it's the one schema behavior that can draw a manual action. The block describes the page. It doesn't extend it.

Second, self-serving review markup. Google stopped displaying review stars that a business marks up about itself in September 2019. Putting aggregateRating on your own LocalBusiness with your own testimonials earns nothing and signals that whoever built the site is working from a very old playbook. Reviews belong on the platforms that collect them.

Third, set-and-forget drift. The business moves, the phone number changes, the markup keeps broadcasting 2023. Because schema is invisible, nobody notices until a machine repeats the wrong fact somewhere visible. Put the block on the same update checklist as your Google Business Profile, and touch both in the same sitting.

Step 5: validate, or don't bother at all

Unvalidated schema is a coin flip. One stray comma and the entire block is invisible to every parser, silently, forever. So the last step is non-negotiable:

  1. Run the page through Google's Rich Results Test. It confirms the markup parses and names any rich result the page is eligible for.
  2. For types Google doesn't reward visually, validator.schema.org checks the syntax against the full vocabulary.
  3. Re-validate whenever the block changes. Schema that has drifted from reality (an old phone number, a moved office) is worse than no schema, because it actively feeds machines the wrong fact.

Where schema belongs in your priorities

Near the end of the technical checklist, after the things that decide whether you can rank at all. Our website launch checklist puts indexability, page coverage, and titles first for a reason: schema clarifies a page that already answers something. It cannot rescue a page that doesn't. In the Reforge Method, schema lands in the technical pass of the Assay phase: foundation work, done once, checked quarterly, never billed as a growth lever.

That's the fair summary of the whole topic: cheap, quick, worth doing, and worth doing accurately, because the only thing schema really promises is that machines will take you at your word. Make sure your word is current.

Originally published August 18, 2026.

FAQ

Where exactly does schema markup go on a page?
Anywhere in the page's HTML, though the head is the convention. JSON-LD is a script tag with type application/ld+json, and parsers find it wherever it sits. On WordPress, a header-scripts box or your theme's hook works; on a custom site, paste it into the template. It renders nothing visible, so the only way to confirm it's live is to view source or run a validator.
Do I need a plugin to add schema markup?
No. A plugin is convenient if it stays current, but the markup itself is a static block of JSON you can generate once and paste. For a small site, a generator plus a validation pass gives you the same result with one less plugin to update, and you know exactly what's on the page.
Which schema types should a local business add first?
LocalBusiness first, with the exact same name, address, and phone as your Google Business Profile and citations. Then Organization or Person for the entity behind the site, and Article on posts if you publish. That covers the entity story machines check. FAQ markup is optional hygiene now, and HowTo is not worth adding at all.
How do I know if my schema markup works?
Two checks. Google's Rich Results Test tells you whether the markup parses and whether the page is eligible for any rich result. validator.schema.org checks the syntax against the full vocabulary, including types Google ignores. If the JSON has a stray comma or an unclosed brace, both will catch it, which is why validation is the non-optional step.
What makes Narsil Creative different?
Narsil Creative is an AI SEO agency in Atlantic Beach, Florida, in the Jacksonville metro, with pricing published at $1,500 and $4,000 per month. We reforge classic SEO craft for AI search with a three-phase system called the Reforge Method, and we say plainly which tactics are hygiene and which are levers, schema included.

See what AI says about your business

Ask ChatGPT to recommend a business like yours. If you're not in the answer, that's the problem we fix. Start with a free AI Visibility Audit. We'll show you where you appear, where you don't, and what to reforge first.

Related articles