Fill in your details and copy the JSON-LD into your page head. It publishes your address, hours and contact details as data a search engine or an assistant can read directly, rather than as sentences it has to interpret.
Everything here runs in your browser. Nothing you type is sent to us or stored anywhere, which matters given the form asks for your address and phone number.
Valid markup is not a rich result
This produces valid JSON-LD, and that is all it produces. Being valid makes you eligible for a rich result. It does not earn you one: Google decides, it declines frequently, and it does not explain why. Nor does markup make a claim true. If the hours in your markup disagree with the hours on your page, you have not improved anything, you have created a contradiction that is worse than having neither. Before you rely on it, run the page through Google's Rich Results Test, which reads your live page rather than this preview.
What structured data actually does
It publishes the facts about your business as data rather than as prose. Your address, your opening hours, your phone number, the kind of business you are. A search engine reading a sentence has to infer those. A search engine reading JSON-LD does not have to guess, and increasingly it will not bother trying.
Why opening hours are the field worth getting right
Opening hours are the single most common thing people search for about a local business, and the single most common thing that is wrong. If they exist only as text in your footer, every place that displays them is inferring them. Publishing them as data means one source you control, and it is the field most likely to be read back to somebody asking an assistant whether you are open.
Where it goes and what breaks it
Inside a script tag in the page head, on the page the markup describes. One block per page. The most common failure is not invalid markup, it is markup that contradicts the visible page: hours in the JSON that differ from hours in the footer. Fix the page and the markup together or you have created a second thing to keep in step.
Why we do not ask for a review count
Most generators offer an aggregate rating field, and filling it in with numbers you have not earned is the fastest way to get structured data ignored across your whole site. Ratings should come from a real review source. There is no field for them here because the honest way to add them is not by typing them into a form.
Questions
Will this get me a rich result in Google?
It might, and nobody can promise it. Valid markup makes you eligible. Google decides whether to show a rich result, and declines constantly for reasons nobody outside it can see. Anyone guaranteeing a rich result from a snippet of markup is selling you something they cannot deliver.
Which business type should I choose?
The most specific one that genuinely fits. Dentist is better than MedicalBusiness, which is better than LocalBusiness. If nothing fits properly, LocalBusiness is the correct answer rather than the nearest wrong one, because claiming a type you are not is worse than being general.
Do I need this on every page?
No. Put the business markup on your home page and your contact page. Repeating it on every page adds nothing and gives you more places for it to drift out of date.
Is my data sent anywhere?
No. The generator runs entirely in your browser. Nothing you type is transmitted to us, logged or stored, which is worth knowing given the form asks for your address and phone number.
Want to know whether your site already publishes this? The X-Ray reads your live pages and reports which structured data types it finds, along with your security headers, certificate and speed.