How are opening hours that cross midnight represented?

The Citead team, updated

In short. Use one OpeningHoursSpecification with the starting day in dayOfWeek and a closes value lower than opens for an overnight interval.

Definition: Represent an opening interval that crosses midnight with one OpeningHoursSpecification. Set dayOfWeek to the day on which the interval starts, set opens to the evening time, and set closes to the after-midnight time. Schema.org treats a closes value lower than opens as an interval spanning the next day.

Key facts

  • Google's Local Business documentation, last updated 8 September 2026, says to use one OpeningHoursSpecification for hours past midnight.
  • Its example assigns the interval to Saturday and uses 18:00 for opens and 03:00 for closes.
  • Schema.org's OpeningHoursSpecification type defines dayOfWeek as the day for which the hours are valid and describes the lower closing-time rule.

How should an overnight interval be encoded?

Google's Local Business documentation says that hours past midnight use a single OpeningHoursSpecification property. The example describes hours from Saturday at 6pm until Sunday at 3am, so dayOfWeek carries the starting day and closes carries the time after midnight.

{
  "@type": "OpeningHoursSpecification",
  "dayOfWeek": "Saturday",
  "opens": "18:00",
  "closes": "03:00"
}

The same documentation supports openingHoursSpecification as either an array or a single object. Use one object for one overnight interval; use multiple objects when the page describes separate intervals.

What do opens, closes, and dayOfWeek mean?

Schema.org describes OpeningHoursSpecification as a structured value for the opening hours of a place or a service inside a place. The opens property is the opening hour on the given day or days, closes is the closing hour on the given day or days, and dayOfWeek identifies the day for which the hours are valid.

The rule that resolves midnight is explicit: when the value of closes is less than the value of opens, the hour range is assumed to span over the next day. Thus 18:00 followed by 03:00 represents one interval that begins on Saturday and finishes on Sunday. This interpretation comes from the Schema.org type definition, while Google's example shows the same pattern in LocalBusiness markup.

Google's property table describes both openingHoursSpecification.opens and openingHoursSpecification.closes as Time values in hh:mm:ss format. The overnight example on that page displays the shorter hh:mm values 18:00 and 03:00, so preserve the format shown by the documentation and the structured-data implementation being used.

How can you check the markup?

Google says to validate LocalBusiness structured data with the Rich Results Test and fix critical errors. Its workflow also says to deploy a few pages containing the structured data and use the URL Inspection tool to test how Google sees the page.

The page must be accessible to Google. Google's instructions identify a robots.txt file, a noindex tag, and login requirements as conditions that can block access. The openingHoursSpecification property is defined by Schema.org as the opening hours of a place and has Place as its domain and OpeningHoursSpecification as its range.

FAQ

Should an overnight interval use two objects?

For one interval that crosses midnight, Google's example uses one object with dayOfWeek set to Saturday, opens set to 18:00, and closes set to 03:00. Schema.org defines a lower closing value as a span over the next day.

Which day belongs in dayOfWeek?

Use the day on which the interval starts. Google's example labels the 6pm to 3am interval Saturday, and Schema.org defines dayOfWeek as the day for which the opening hours are valid.

Should the time include seconds?

Google's property table describes opens and closes in hh:mm:ss format, while its overnight example uses 18:00 and 03:00. Follow the representation supported by the documentation and implementation used for the markup.

Sources

  1. Google Search Central, "Local Business (LocalBusiness) Structured Data", 8 September 2026
  2. Schema.org, "OpeningHoursSpecification", 16 September 2026
  3. Schema.org, "openingHoursSpecification", 16 September 2026

Check how a page reads to answer engines. Open the GEO score analyzer

Test a page and see what to fix first

The analysis usually takes less than 10 seconds and needs no account.

400,000+ pages scored in the public benchmark