JSON-LD Schema Generator

Create JSON-LD structured data for Articles, Products, Local Businesses, and more by filling out a simple form.

๐Ÿ’ก This schema is for blog posts and news articles. The title, publication date, and author will be accurately conveyed to search engines. Mandatory fields marked in red will exclude your content from rich results if left empty.
JSON-LD Script

๐Ÿ’ก How to apply โ€” Copy the block and paste it anywhere within the HTML <head> or right before </body> . The location does not matter, but each page should have markup appropriate for its content. After pasting, check for recognition using Google's Rich Results Test and Search Console's Enhancements report.
โš  The markup content must match the content actually visible on the page. Marking up ratings, prices, or FAQs that are not present on the page is a violation of Google's spam policies and may lead to rich result removal or manual actions.

What is the JSON-LD Schema Generator?

Help search engines understand your content and earn rich results like star ratings, prices, and FAQ dropdowns. This tool generates the necessary JSON-LD script for `Article`, `LocalBusiness`, `Product`, `FAQ`, `Breadcrumbs`, and `Organization` schemas. Our form is built for practical use, with detailed fields for business hours and live validation that warns you about missing required fields. Since everything runs in your browser, your private business information is never sent to our servers. It's free, with no sign-up needed.

How to use

  1. Select the schema type you need from the top menu, such as `๐Ÿ“„ Article`, `๐Ÿช LocalBusiness`, or `๐Ÿ“ฆ Product`.
  2. Fill out the form on the left. Fields marked with a red `*` are mandatory to be eligible for rich results.
  3. As you type, the complete `<script>` block is generated on the right. Review the warnings below it for potential issues.
  4. For a `LocalBusiness`, check the operating days and enter the `Opening Time` and `Closing Time` for each.
  5. Click `Copy` and paste the script into your page's HTML, either in the `<head>` or before the closing `</body>` tag.
  6. Test your implementation with Google's Rich Results Test to ensure it's recognized correctly.

JSON-LD Schema Generator guide

How this tool is used in real work, and what to watch out for.

Does Markup Guarantee Rich Results? โ€” There Are Conditions

Structured data is an "eligibility requirement," not a "guarantee." Even if your markup is syntactically perfect, Google may not display it as a rich result. To actually get rich results, all four of these conditions generally need to be met:

  • Correct syntax and required fields โ€” This is the part this tool helps with. If you leave a required field empty, your content won't even be considered.
  • The page must be indexed โ€” Rich results don't appear for unindexed pages. If a page is blocked by robots.txt, Google can't read the markup either.
  • The markup content must be visible on the page โ€” We'll cover this in more detail below.
  • Google must deem the type useful for that context โ€” This is beyond your control. FAQ is a prime example of this.
Structured data is not a direct ranking factor. The real benefits are increased click-through rates (CTR) from the same ranking position and helping search engines understand your page's topic precisely. If a result with star ratings appears next to one without, it's obvious which one is more likely to be clicked.

Why You Shouldn't Put Content in Markup That's Not on the Page

Following this one rule will prevent most problems. Google's structured data policy is that "markup should describe the content visible to the user." Violating this can lead to a manual action, causing rich results for your entire site to disappear. The penalty can apply to the whole site, not just one page.

Here are some common types of violations:

  • Adding `aggregateRating` of 4.8 and 128 reviews to a product page that has no reviews โ€” This is the most common and most certain way to get penalized. A company giving its own product a star rating is also a policy violation.
  • Putting FAQs in the markup that don't exist on the page โ€” The answers must be visible on the screen. Content within a collapsed accordion is fine, but it can't be completely absent.
  • Writing a `BreadcrumbList` in a different order than the visible breadcrumb menu on the page.
  • A `price` that differs from the actual price โ€” Mismatched values will lead to exclusion from shopping-related features.
This tool can catch formatting errors, like a star rating without a review count or an average rating higher than the maximum. However, it cannot know if "that value is actually present on the page." That part must be verified by a human.

LocalBusiness โ€” What Really Matters for Businesses in Practice

If you have a local shop, `LocalBusiness` is the most beneficial schema type. However, for a business in a market like Korea's, there are a few things to keep in mind.

First, your Name, Address, and Phone (NAP) must be identical, character for character, across your website, Google Business Profile, Naver Place, and KakaoMap (the dominant local portal and map services in Korea). Subtle differences like "Teheran-ro 123, 4th floor" versus "Teheran-ro 123 4th floor" can make a search engine uncertain if they refer to the same business. This markup serves as evidence to corroborate information Google already has, so inconsistencies are unhelpful or, worse, confusing.

Choose the most specific `@type` possible. The more precise the subtypeโ€”like `CafeOrCoffeeShop`, `Dentist`, or `ExerciseGym` instead of the generic `LocalBusiness`โ€”the better the search engine's understanding. Only use `LocalBusiness` or `ProfessionalService` when nothing else in the list fits.

  • If you have multiple branches, each branch should have its own page with its own markup. Putting multiple branches on one page will not be recognized.
  • For opening hours, unchecking a day marks it as closed and excludes it. Days with the same hours are automatically grouped into a single entry. For 24-hour operation, enter 00:00 to 23:59.
  • This form cannot create split opening hours for a single day, such as for a lunch break. You'll need to manually duplicate the `openingHoursSpecification` object in the generated JSON and adjust the times.
  • You can find latitude and longitude by right-clicking the location on Naver Maps or Google Maps. Both are required to create a `geo` object.
  • Use `sameAs` to list your Naver Place, Instagram, and blog URLs. This helps search engines connect these scattered profiles to your business.
For offline businesses in Korea, search traffic from Naver Place is still dominant. `LocalBusiness` markup helps Google and Bing understand your business, but it's separate from your Naver Place ranking. Tend to both, but manage your expectations for each.

Choosing a Type and How Many per Page

You can include multiple schema types on a single page. It's common for a blog post page to have both `BlogPosting` and `BreadcrumbList` markup, each in its own script block. Since this tool creates one type at a time, you can generate the code, switch the type, and then copy and paste the second block. Your inputs for each type are saved separately in your browser, so they won't be erased when you switch back and forth.

Lower your expectations for `FAQPage`. Since 2023, Google only shows FAQ rich results for certain types of sites, such as government and health organizations. Adding the markup isn't a problem and still helps with page comprehension, but you shouldn't invest a lot of work expecting an expandable UI to appear in search results.

PageSchema to UseNotes
Blog PostBlogPosting + BreadcrumbListSelect BlogPosting from the subtype dropdown.
News ArticleNewsArticlePublication and modification dates are especially important.
Store/Clinic PageLocalBusiness subtypeSeparate page for each branch.
Product DetailProduct + BreadcrumbListOnly include star ratings if actual reviews are present.
Company 'About' or Home PageOrganizationUsually placed only on the home page.
FAQ PageFAQPageDon't expect to see the expandable UI in results.

Always Verify After Pasting

  1. Paste the generated script block anywhere inside the page's HTML, either within the `<head>` or before the closing `</body>` tag. The location does not matter.
  2. Test the page URL with Google's Rich Results Test (search.google.com/test/rich-results) to see if it's recognized. If the page isn't live yet, you can paste the code directly into the tool.
  3. Also check the schema syntax itself with the Schema.org Validator (validator.schema.org). The Google tool only validates types that Google uses.
  4. After a few days, check the Enhancements reports in Google Search Console for any errors or warnings. What shows up here is what's actually being processed.
  5. Whenever you update the page's content, update the markup too. If you change a price but the markup still shows the old one, it's a mismatch.
Google can generally read markup injected later via JavaScript, but it goes through a rendering queue, which slows down processing. If possible, include it in the initial server-rendered HTML. Many themes for platforms like WordPress or Tistory (a popular Korean blogging service) already include some schema, so it's a good idea to run your page through the Rich Results Test first to check the current state before adding duplicates.

Frequently asked questions

Will using structured data improve my search ranking?

It's not a direct ranking factor, but the rich results it can generate (like star ratings or prices) often increase click-through rates from search. It also helps search engines better understand your page content.

Can I put information in the schema that isn't on my page?

No. Your JSON-LD markup must correspond to content that is visible to users on the page. Adding fake reviews, prices, or other information is a policy violation and may result in a penalty from Google.

How do I enter the opening hours for a LocalBusiness?

Check the box for each day your business is open and enter the times in 24-hour format (e.g., `09:00` to `18:00`). To mark a day as closed, simply uncheck it. The tool automatically groups days with identical hours.

Is the business information I enter sent to your server?

No. Your company name, address, phone number, and all other details are processed entirely within your browser. Nothing you type is ever transmitted or stored on our servers, ensuring your data remains private.