TapCub is live — analytics, insights and live chat, free on one platform

Free tool Business hours template generator for websites and support teams

Your hours live in too many places: the contact page, the structured data Google reads, the chat widget’s offline message and the holiday notice. Type the weekly schedule and any holiday exceptions in plain words, pick your time zone, and get all of them from one source, plus a table of what those hours mean for customers in other time zones this week.

  • schema.org JSON-LD
  • Time zones with daylight saving
  • Runs locally
Generator

Enter your hours

Write one rule per line. Later lines override earlier ones for the same day, so “Mon-Sun 9-17” followed by “Sun closed” works.

Examples: Mon-Fri 09:00-18:00, Sat 10am-2pm, Sun closed, Weekdays 9:00-12:00, 13:00-17:30, Fri 18:00-02:00 (past midnight), Daily 24h. Days not listed count as closed.

One date or range per line: 2026-12-25 closed Christmas Day, 2026-12-24 09:00-13:00, 2026-12-31 to 2027-01-01 closed. Text after the hours is the label.

The hours above are local time here. JSON-LD has no time zone field; search engines read opens / closes as the business’s local time.

For the website copy, offline message and holiday notice.

Defaults to your own time zone when it differs from the business’s.

Any date in that week (YYYY-MM-DD). Empty = this week. Conversions change when daylight saving starts or ends.

“Organization → customer service contact” puts the hours on a ContactPoint (hoursAvailable), for support lines and chat without a physical location.

Google’s local business documentation shows date-limited entries with validFrom / validThrough inside openingHoursSpecification; schema.org also defines specialOpeningHoursSpecification, which overrides the regular hours. ContactPoint always uses validFrom / validThrough.

Right now

Closed now — opens 09:00 US Eastern time

Recalculated each time the page loads, including today’s holiday exception.

Checks

Input problems by line, and how the schedule maps to TapCub live chat working hours.

  • CheckTapCub live chat working hours use one start and end time for all selected days, and these hours differ by day. Choose the window to cover (for example 09:00–18:00); outside it visitors see the offline form, and the offline message below can list the full schedule.
  • NoteTapCub live chat has no holiday calendar for working hours. On holidays set agents offline (visitors then get the offline form) and paste the holiday notice into the offline text.
JSON-LD
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "LocalBusiness",
  "name": "Northwind",
  "url": "https://www.example.com",
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": [
        "Monday",
        "Tuesday",
        "Wednesday",
        "Thursday",
        "Friday"
      ],
      "opens": "09:00",
      "closes": "18:00"
    },
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": "Saturday",
      "opens": "10:00",
      "closes": "14:00"
    },
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": "Sunday",
      "opens": "00:00",
      "closes": "00:00"
    },
    {
      "@type": "OpeningHoursSpecification",
      "opens": "09:00",
      "closes": "13:00",
      "validFrom": "2026-12-24",
      "validThrough": "2026-12-24"
    },
    {
      "@type": "OpeningHoursSpecification",
      "opens": "00:00",
      "closes": "00:00",
      "validFrom": "2026-12-25",
      "validThrough": "2026-12-25"
    },
    {
      "@type": "OpeningHoursSpecification",
      "opens": "00:00",
      "closes": "00:00",
      "validFrom": "2027-01-01",
      "validThrough": "2027-01-01"
    }
  ]
}
</script>

Paste into the page’s HTML, or merge the hours into your existing LocalBusiness / Organization markup. Google’s local business result also needs name and address.

Hours in other time zones

The same hours as they fall on customers’ clocks. A day shift is shown with the weekday.

DayUS Eastern timeLondon timeSingapore time (UTC+8)
Mon09:00–18:00Mon 14:00–23:00Mon 22:00 – Tue 07:00
Tue09:00–18:00Tue 14:00–23:00Tue 22:00 – Wed 07:00
Wed09:00–18:00Wed 14:00–23:00Wed 22:00 – Thu 07:00
Thu09:00–18:00Thu 14:00–23:00Thu 22:00 – Fri 07:00
Fri09:00–18:00Fri 14:00–23:00Fri 22:00 – Sat 07:00
Sat10:00–14:00Sat 15:00–19:00Sat 23:00 – Sun 03:00
SunClosed——

Converted for the week starting Monday 2026-11-09.

Website copy
Mon–Fri: 09:00–18:00
Sat: 10:00–14:00
Sun: Closed
All times are US Eastern time.

Holiday hours:
- Dec 24 (Christmas Eve): open 09:00–13:00
- Dec 25 (Christmas Day): closed
- Jan 1 (New Year’s Day): closed

For a contact page or footer. Consecutive days with the same hours are grouped.

Chat offline message
We’re offline right now. Our team is available Mon–Fri 09:00–18:00, Sat 10:00–14:00 US Eastern time, which is 14:00–23:00 London time. Leave a message with your email and we’ll reply as soon as we’re back.

For the offline text of your chat widget or a messaging app away message.

Holiday notice
Holiday hours: Dec 24 (Christmas Eve): open 09:00–13:00; Dec 25 (Christmas Day): closed; Jan 1 (New Year’s Day): closed. Messages left in the chat during these times will be answered when we’re back.

For a banner, an email or the offline text during the holiday period.

Runs entirely in your browser. Nothing you type here is uploaded or stored by TapCub.

Share these inputs: the values go after the # in the link, so they never reach a server.

Version v1.0Updated Update history

Read the result

One schedule, five places it is used

All outputs come from the same lines, so they cannot disagree with each other.

JSON-LD

Structured data that tells search engines your hours. Days with the same hours are grouped into one OpeningHoursSpecification; closed days are written as 00:00–00:00 and 24-hour days as 00:00–23:59, the forms shown in Google’s documentation. Holiday exceptions carry validFrom and validThrough dates.

Time zone table

Each range is converted on the actual dates of the chosen week, so daylight saving is applied correctly. When the range crosses midnight on the customer’s clock, both weekdays are shown, for example “Sun 21:00 – Mon 06:00”.

Website copy and offline message

The copy lists every day; the offline message lists only the open days and, if you chose another time zone, what the main window means there. Both name the time zone, because “9–6” alone is ambiguous for visitors abroad.

Checks

Errors point to the line to fix. The TapCub note says whether the schedule fits the live chat working-hours setting as it is, or what to choose if it does not.

The “right now” line uses your device’s clock, so it is always current when you open the page.

How to use it

Publish your hours in four places

Update the lines here whenever your hours change, then copy each output to where it belongs.

  1. 1

    Write the weekly hours

    One line per rule, in 24-hour or am/pm time. Add a second range after a comma for a lunch break; a closing time earlier than the opening time means past midnight.

  2. 2

    Add holiday exceptions

    A date or a date range, “closed” or special hours, and a label. Remove them after the holiday so the structured data does not keep old dates.

  3. 3

    Copy JSON-LD and the website text

    Add the JSON-LD to your contact or location page and check it with Google’s Rich Results Test. Use the copy on the same page so the visible hours match the markup.

  4. 4

    Set up the chat widget

    Paste the offline message into your chat tool, set its working hours from the TapCub note, and swap in the holiday notice before each holiday.

Rules

How the hours are written in structured data

schema.org defines the properties; Google’s local business documentation shows how it expects the special cases.

  • dayOfWeek uses English day names; Google accepts the short form without the schema.org URL (“Monday”).
  • opens / closes are local times of the business. A closing time earlier than the opening time spans into the next day (schema.org), so Friday 18:00–02:00 is one entry.
  • Open 24 hours: opens 00:00, closes 23:59. Closed all day: opens and closes 00:00 (both from Google’s documentation).
  • Holidays: an entry with validFrom and validThrough; or, per schema.org, specialOpeningHoursSpecification, which overrides the regular hours. A ContactPoint lists its hours in hoursAvailable.
What you type → what the JSON-LD says
LineJSON-LD
Mon-Fri 09:00-18:00dayOfWeek: Monday … Friday, opens 09:00, closes 18:00
Fri 18:00-02:00dayOfWeek: Friday, opens 18:00, closes 02:00
Daily 24hall seven days, opens 00:00, closes 23:59
Sun closeddayOfWeek: Sunday, opens 00:00, closes 00:00
2026-12-25 closedopens 00:00, closes 00:00, validFrom / validThrough 2026-12-25
Worked example

A New York support team, seen from London and Singapore

Monday to Friday 09:00–18:00 and Saturday 10:00–14:00 New York time, converted for the week of 9 November 2026 (after the US clocks went back on 1 November).

The same hours on three clocks
Day (New York)New YorkLondonSingapore (UTC+8)
Mon–Fri09:00–18:0014:00–23:00 same day22:00 – 07:00 next day
Sat10:00–14:0015:00–19:00Sat 23:00 – Sun 03:00
SunClosed——

In the week of 16 March 2026, New York was already on summer time and London was not yet, so the London column read 13:00–22:00. That is why the table converts a specific week.

Common mistakes

Hours that confuse customers and search engines

Most problems come from hours that are correct in one place and stale in another.

No time zone

“Support 9–6” means nothing to a customer eight hours away. Name the time zone in the visible text; the structured data is always local time.

Old holiday dates left in markup

A Christmas closure still in the JSON-LD in March is at best ignored. Remove exceptions once they are over.

Splitting overnight hours

Writing Friday 18:00–24:00 and Saturday 00:00–02:00 as two entries is unnecessary: one entry with closes earlier than opens means past midnight.

Chat promises nobody keeps

If the widget says “online” outside staffed hours, visitors wait for a reply that never comes. Match the chat working hours to the real schedule and show the offline form outside them.

FAQ

Business hours questions

Still have a question?

Chat with the team behind TapCub — we usually reply within a few hours on business days.

How do I add business hours to structured data?

Use openingHoursSpecification on a LocalBusiness (or one of its subtypes such as Store or Restaurant): one entry per group of days with the same opens and closes times. For a support line without a physical location, put the same entries in hoursAvailable on a ContactPoint. This tool writes both.

How do I mark a day as closed or open 24 hours?

Google’s local business documentation sets opens and closes to 00:00 for a day that is closed all day, and opens 00:00 with closes 23:59 for 24 hours. This tool writes closed days that way rather than leaving them out, so the markup states every day explicitly.

How do I show holiday hours?

Add an entry limited by validFrom and validThrough dates, with 00:00–00:00 for a closure or the special hours otherwise. schema.org also has specialOpeningHoursSpecification for hours that override the regular ones; pick either form in the tool.

What about hours past midnight?

Write the closing time as it is: “Fri 18:00-02:00”. In schema.org a closing time earlier than the opening time spans into the next day, and Google’s documentation shows the same single-entry form.

Which time zone do opens and closes use?

The business’s local time. OpeningHoursSpecification has no time zone field; search engines combine it with the business location. Write the time zone in the visible text for visitors abroad.

How do I show support hours to customers in other countries?

Pick up to two extra time zones. The table converts each day on real dates, so daylight saving changes are applied, and the offline message can include what your main window means in the first one.

Does TapCub live chat support holiday hours?

Not as a calendar. Working hours are one time zone, a set of days and one daily window. On holidays, set agents offline so visitors get the offline form, and put the holiday notice in the offline text.

Changelog

Update history

New features, fixes and data refreshes for this tool, newest first.

  1. · v1.0

    LaunchedFirst release.

Missing something or found an error? Tell us — requests that come up often go into the next update. All tool updates

Next step

Let the chat widget follow your hours

TapCub live chat shows agents online during working hours and an offline form outside them, with every message in the same inbox.

See your data clearly. Find your growth.

Every click, backed by data. Install one line of code and see your first numbers in a minute.

No credit card · Free plans for analytics and chat · Cookieless analytics