Organization schema builder

Search engines work out who runs a site from scattered clues, and they don’t always guess right. A short block of JSON-LD tells them outright. Fill in the form and the block gets written as you type.

The organization

Written in the code as Organization. Choose the closest match. If nothing fits well, stay with the first entry of the group.

The name on your incorporation or registration papers.

More than one? Put a comma between them.

A year alone is fine. A full date is written YYYY-MM-DD.

Website and profiles

Complete, starting with https://.

A PNG, JPG, WebP or SVG file hosted on your own site, 112 × 112 pixels or larger.

One complete URL on each line: Facebook, Instagram, LinkedIn, YouTube, Wikipedia, a government or registry listing…

Address and contact

Two letters (ISO 3166): US, GB, DE, AU…

With US or CA as the country, ten digits become +1-503-555-0123. Elsewhere, start with + and your country code.

Anyone can read it in the page source, so prefer a shared mailbox to a personal one.

Names of cities, counties or regions with commas between them.

Tax or registration number

For example a US EIN, a UK charity number or an EU VAT number. It is published in the code, so enter only a number that is already public.

This form runs entirely in your browser and sends nothing to our server. A draft stays in this browser’s storage until you start over.

JSON-LD block

It follows the form as you type. Copy it unchanged into the home page of your site.

JSON-LD

Before you paste

    Telling machines who you are

    A person who lands on your home page knows who you are within seconds. The logo is in the corner, the address is in the footer, the social icons lead to your accounts. A search engine has to work all of that out from layout and wording, and it gets it wrong sometimes. It may take a partner’s logo for yours, or pin a namesake’s profile to your name.

    Structured data saves it the guessing. You add a small script to the page, one visitors never see, that lists the facts as labeled fields. The labels come from schema.org, a shared vocabulary maintained by Google, Microsoft, Yahoo and Yandex. The format is JSON-LD, which is ordinary JSON with two reserved keys. @context names the vocabulary and @type says what kind of thing you’re describing.

    <script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@type": "Organization",
      "@id": "https://www.example.org/#organization",
      "name": "Riverside Community Center",
      "url": "https://www.example.org/",
      "logo": "https://www.example.org/logo.png",
      "sameAs": ["https://www.linkedin.com/company/riverside-cc"]
    }
    </script>

    What each part of the form produces

    Kind of organization
    Becomes @type. The list holds 7 organization types, 14 kinds of LocalBusiness and 2 places. Pick a business type or a place and you also get the opening-hours section, and the logo is copied into image, which local results expect. Museums and places of worship are written as two types, for example ["Museum", "Organization"], so fields such as legalName stay valid.
    Names
    name is the one people use, legalName the registered one, alternateName an abbreviation or a former name.
    Home page URL
    Fills url and also builds @id, a permanent identifier (your address followed by #organization) that other structured data on your site can point to.
    Profiles
    Each line goes into sameAs. That’s how you tell a search engine that this Facebook page, this LinkedIn page or this Wikipedia article is about you.
    Address
    A PostalAddress object. It’s only written when there’s a street, a city or a postal code.
    Phone
    Stored in international form. With US or CA as the country, ten digits become +1-503-555-0123. A number you type with + and a country code is kept, with hyphens between the groups.
    Hours
    Days with identical times are merged into one OpeningHoursSpecification. Two time ranges on the same day describe a midday closing.
    Tax ID or charity number
    Written as taxID.

    Fields you leave empty stay out of the block.

    The review list under the code

    A missing name is the only thing that counts as an error. Everything else is a warning or a note.

    • URL and logo. Both should be complete https:// addresses. A logo address that doesn’t end in an image extension gets a note. A logo hosted on a social network or a file-sharing service gets a warning, because those links expire or turn crawlers away.
    • Local business fields. For business and place types, a missing street or city and a missing phone number are warnings. Missing hours only get a note. A day that’s checked but has no times is a warning.
    • Formats. A US ZIP code has to be five digits or ZIP+4. The founding date has to be a year or YYYY-MM-DD. Each profile line has to be a full URL. A phone number that can’t be converted is kept exactly as you typed it.

    Once the last warning is gone, the label next to the code reads “Good to paste”.

    Where the block goes

    Paste the block once, on the home page, anywhere in <head> or <body>. Search engines read JSON-LD in either place.

    • Hand-written or static sites: paste it into the home page template before </head>.
    • WordPress: look in your SEO plugin first. Yoast SEO, Rank Math and SEOPress already output an Organization block from their settings, and two competing blocks confuse more than they help. Use their fields, or switch their output off and add yours with a header-code plugin or a Custom HTML block.
    • Shopify, Squarespace, Wix, Webflow: each has a “custom code” or “code injection” setting for the home page head.

    Then test the live page with the two validators linked under the code. The Rich Results Test tells you what Google could parse. The schema.org validator checks the vocabulary itself.

    Structured data is something you declare, and the search engine is free to do what it likes with it. It makes a logo in results, a knowledge panel or linked profiles possible, but whether and when they show up isn’t your call. The search engine also compares the block with the visible page. An address or phone number that’s in the code and nowhere else on the site will probably be ignored.

    The block doesn’t update itself. When your hours or phone number change, come back, edit the draft and paste the new version over the old one.

    Questions people ask

    Should I use Organization or LocalBusiness?

    Go with a LocalBusiness type when customers come to a physical address during set hours, like a shop, a restaurant, a clinic or an office with a reception desk. Organization is for a company, association or agency that people don’t visit, or that works online.

    Where do I put JSON-LD on my website?

    Inside a <script type="application/ld+json"> tag in the HTML of the home page. The head is the usual spot, but the body works too. It has to be in the HTML the server sends, or added by a script that search engines can run.

    Will this give my site a knowledge panel?

    It helps, but it can’t force one. Google builds panels from many sources and mostly for entities it already recognizes. What the markup does is make sure that if a panel or a logo is shown, the name, logo and profiles come from you.

    What are the logo requirements for Organization markup?

    Google asks for an image of at least 112 × 112 pixels, in a common format such as PNG, JPG, WebP or SVG, at a URL crawlers can fetch. It should look right on a white background. Host it on your own domain.

    Is JSON-LD better than microdata?

    Search engines understand both. Google recommends JSON-LD because it sits in one block, apart from the visible HTML, so a redesign can’t break it by accident. Microdata spreads its attributes across your tags.

    Does a Google Business Profile replace this markup?

    No, the two work together. The profile feeds Google Maps and local results. The markup confirms, on your own site, that the business in the profile is the same one. Keep the name, address and phone number identical in both.