Local Business Hours Schema Generator
Generate valid Schema.org openingHoursSpecification JSON-LD from a simple weekly grid so search engines show your hours correctly.
What is opening hours schema?
Opening hours schema is a small block of structured data you add to your website so search engines can read exactly when your business is open and closed. It uses the Schema.org openingHoursSpecification format, written as json-ld, to describe each day of the week with a clear open time and close time. When Google and other search engines read this schema, they can show accurate business hours in search results, on Google Maps, and inside your knowledge panel. That means someone searching for you at 8pm sees whether you are still open before they pick up the phone or drive over.
In plain terms, it turns your weekly timetable into machine readable structured data. Instead of hoping a search engine correctly guesses your hours from a paragraph on your contact page, you hand it a precise, labelled answer. The tool on this page builds that json-ld for you from a simple weekly grid, so you never have to write the schema markup by hand or worry about a misplaced comma breaking the whole thing. That precision is what makes the difference between a listing that quietly earns trust and one that sends a searcher to a closed door.
How do you generate opening hours schema?
Generating opening hours schema takes about a minute with the tool above. You fill in your weekly hours on the grid, the generator converts them into valid openingHoursSpecification json-ld, and you paste the result into your page. Here is the full process step by step.
- Enter your opening and closing time for each day of the week using the 24 hour format, for example 09:00 to 17:00.
- Mark any days your business is fully closed so the generator can leave them out or flag them correctly.
- Add a second row for any day with a split shift, such as a lunch break where you close midday and reopen in the afternoon.
- Let the tool build the openingHoursSpecification structured data as clean json-ld while you watch the output update.
- Copy the generated schema markup and paste it inside a script tag in the head or body of the relevant page.
- Validate the result with a testing tool, then publish and let search engines recrawl your page.
Because the generator produces the code for you, there is no need to memorise the Schema.org syntax or debug quotation marks. You focus on getting your business hours right, and the tool handles the formatting. If your hours change next season, you come back, adjust the grid, and regenerate in seconds rather than hunting through raw code for the one number that needs updating. That speed matters when a small edit to your hours is the only thing standing between a customer and an accurate result.
Why does opening hours schema matter for local SEO?
Opening hours schema matters because it feeds accurate, structured business hours directly to the systems people use to find you. When your hours are correct in search and on Maps, customers show up when you are actually open, which reduces wasted trips and the frustrated one star reviews that follow a locked door at the posted time. Accurate hours are a quiet trust signal that tells both searchers and search engines your listing is well maintained.
Search engines also use structured data to decide what to display and how prominently. A clean specification makes your page eligible for richer local business results, where an open or closed status and the day's times can appear right in the listing. That extra detail can be the difference between a searcher tapping your result and scrolling past to a competitor whose hours are clearly shown. Most local searches happen on a phone, often from someone standing on the street or sitting in a car deciding where to go next, and in that moment a visible open status carries real weight.
For local businesses, every small advantage compounds. When your structured data agrees with your Google Business Profile and your on page content, you send a consistent message that is easier for Google to trust. Consistency across these sources is one of the foundations of strong local visibility, and this markup is a low effort, high clarity piece of that puzzle. You can read Google's own guidance on this in their local business structured data documentation.
Understanding the openingHoursSpecification fields
The openingHoursSpecification type is the heart of your hours markup. It is a small object that describes when your business is open, and it repeats for each set of hours that share the same pattern. Below are the fields you will actually use, and how the generator fills them for you. The official reference lives on Schema.org.
dayOfWeek
The dayOfWeek field names the day or days a set of hours applies to. In json-ld you reference each day using its Schema.org URL, such as https://schema.org/Monday. When several days share identical hours, you can pass dayOfWeek as an array of those URLs so a single openingHoursSpecification block covers Monday through Friday at once. This keeps your structured data compact and easy to read.
opens and closes
The opens and closes fields carry the start and end time in 24 hour HH:MM format. A typical weekday block looks like this: an openingHoursSpecification object with dayOfWeek set to the array of Schema.org day URLs, opens set to "09:00", and closes set to "17:00". Using 24 hour time removes any confusion between morning and evening, which is exactly the kind of ambiguity that breaks business hours in search. Midnight is written 00:00 and a close at 11:30pm is written 23:30.
Split shifts and closed days
If you close for lunch or run a split shift, you do not cram two ranges into one block. Instead you create two separate openingHoursSpecification entries for that day, for example one from 09:00 to 12:00 and another from 13:00 to 17:00. Closed days are simply left out of the specification, since the absence of hours signals closed. This is cleaner than trying to mark a zero length range, and the generator handles it automatically.
validFrom and validThrough
The validFrom and validThrough fields let you define temporary or seasonal hours. If you run extended summer hours or a special holiday schedule, you add an openingHoursSpecification block with those two date fields set, and search engines apply that block only within the given window. This is how you communicate structured data for a one off holiday closure or a seasonal change without permanently overwriting your standard business hours.
Best practices and common mistakes
A valid opening hours schema is only useful if the hours inside it are correct and consistent with everywhere else you publish them. Keep these points in mind.
- Always use the 24 hour HH:MM time format. Writing "9am" or "5:00 PM" is invalid for the opens and closes fields and can cause the whole block to be ignored.
- Match your Google Business Profile exactly. If your schema markup and your Business Profile disagree, you send Google conflicting signals and undermine trust in both.
- Handle closed days properly by omitting them rather than inventing a 00:00 to 00:00 range, which can be read as open all day.
- Escape your json-ld correctly. Stray quotation marks, trailing commas, or smart quotes pasted from a document are the most common reasons structured data fails to parse.
- Keep it in sync. When your hours change for a holiday or a new season, update the schema at the same time you update every other listing, or the stale data will mislead customers.
- Validate before you publish. Run the finished json-ld through a validator so you catch problems before search engines do.
When should you use an opening hours schema generator?
A generator saves you from hand writing structured data and from the small syntax errors that quietly break it. Reach for one in these situations.
- You are not a developer and you want valid openingHoursSpecification json-ld without learning Schema.org syntax or editing raw code.
- You manage multiple locations or clients and need to produce consistent, correct business hours markup quickly for each one.
- Your hours are complicated, with split shifts, weekend variations, or seasonal changes that are easy to get wrong by hand.
- You just launched or redesigned a site and want to add opening hours schema as part of a clean local SEO foundation from day one.
- You inherited a site from another developer and are not sure the existing hours markup is valid, so you want to regenerate it from a known good source rather than trust old code.
In each of these cases the generator does two jobs at once. It removes the risk of a syntax slip, and it gives you a repeatable process you can run again every time your real hours change. That repeatability is what keeps your published hours honest over months and years, long after the day you first added them.
Frequently asked questions
How is openingHoursSpecification different from the openingHours property?
Not quite. The older openingHours property packs everything into a single text string, while openingHoursSpecification uses separate, labelled fields for dayOfWeek, opens, and closes. The specification form is more precise, supports validFrom and validThrough for special dates, and is the recommended approach for modern structured data.
Where do I put the opening hours schema on my page?
Place the json-ld inside a script tag with the type set to application/ld+json, usually within the head or at the end of the body of the page that describes your business, most often the homepage or contact page. Search engines read it there; visitors never see it.
Will this markup guarantee my hours show in Google?
No structured data guarantees a specific search feature. It makes your page eligible to display accurate hours and improves the clarity of your data, but Google decides when and how to show it. For your public hours, your Google Business Profile remains the primary source, and your schema should match it.
How do I handle a business that is open 24 hours?
For a location open around the clock, set opens to 00:00 and closes to 23:59 for the relevant days, which most consumers of the data treat as continuous. The generator gives you a simple way to mark 24 hour days so you do not have to remember this convention.
Do I need json-ld, or can I use microdata?
You can express these hours in microdata, but Google recommends json-ld because it keeps your structured data separate from your visible HTML and is far easier to manage. The tool on this page outputs json-ld for exactly that reason.
How often should I update my hours markup?
Update it whenever your hours change: new seasonal hours, a holiday closure, or a permanent adjustment. Use validFrom and validThrough for temporary changes so your standard hours stay intact, and revisit the markup any time you edit your Business Profile.
Track how your local rankings respond
Clean opening hours schema is one piece of a strong local presence, but you also need to know whether your visibility is actually improving across the map. ProMapRanker shows you where your business ranks in Google's local results across a grid of real locations, so you can see the payoff from technical fixes like structured data and connect them to real ranking movement. Instead of guessing whether your latest change helped, you get a map that shows exactly which neighbourhoods you own and which ones a competitor still holds. Run a scan before and after your next round of on page work and you have a clear, visual record of progress you can share with a client or your own team. start free with 150 credits and check where you stand today.
Related tools
- Local Business Schema Generator builds the full LocalBusiness structured data your opening hours fit inside.
- Organization Schema Generator creates Organization json-ld for your brand, logo, and contact details.
- Service Schema Generator marks up the individual services your business offers.
- JSON-LD Validator checks any structured data block for errors before you publish.
Related tools
Article Schema Generator
Generate Article/BlogPosting JSON-LD with author, dates, and publisher to help content qualify for rich results. Extends the schema cluster to content sites.
Open โBreadcrumb Schema Generator
Create BreadcrumbList JSON-LD to give Google a clean navigation trail and richer SERP listings. Rounds out the schema suite for long-tail wins.
Open โEvent Schema Generator
Create Event JSON-LD with dates, venue, and ticket offers for richer event listings in search. Useful for local venues and businesses running promotions.
Open โFAQ Schema Generator
Build FAQPage JSON-LD from your questions and answers to win rich-result real estate in search. Anchor of the schema cluster with strong recurring demand.
Open โHow-To Schema Generator
Build valid HowTo JSON-LD from your step list to win rich how-to results and AI answers.
Open โJobPosting Schema Generator
Generate JobPosting JSON-LD so your local job openings appear in Google for Jobs.
Open โTrack your real Google Maps rankings
These free tools get you set up - ProMapRanker shows where you actually rank across your whole service area on a geo-grid.
Start free - 150 credits