About the Business Hours Widget
Zyff's business hours widget shows your opening times on any website, free — and says whether you are open right now. Set each day independently, add a second period for a lunchtime closure, and use a closing time earlier than the opening time for a day that runs past midnight. The open or closed status is worked out in the visitor's own browser and re-checked every minute, so a tab left open overnight never keeps claiming you are open. The output is one div and one script tag that works in WordPress, Shopify, Wix, Squarespace, Webflow or a hand-written HTML page alike.
How to add opening hours to your website
Set your hours
Switch each day open or closed and set its times. Copy Monday to the rest of the week in one click, then adjust the days that differ.
Add a second period if you need one
A day can have two windows, which is how a lunchtime closure is expressed. A closing time earlier than its opening time means the day runs past midnight.
Choose a layout
The full week is the standard contact-page block, compact suits a footer, the badge is just the current status on one line, and Today shows today's hours with the week behind a toggle.
Copy the embed code
Paste the container div and script tag where the hours should appear, or download the standalone HTML file. Check the 390px mobile preview before you ship it.
What the Business Hours Widget does
A live open or closed status
Not just a table: the widget works out whether you are open at this moment and says so, with the next change beside it — "Closes at 17:30", "Opens Monday at 9am". That is the line visitors actually want.
Re-checked every minute
The status is recalculated on a timer rather than once at page load, so a visitor who leaves the tab open past closing time sees it flip rather than being told all evening that you are open.
Split days and late nights
Two periods per day covers a lunchtime closure, and a window whose closing time is earlier than its opening time correctly runs past midnight — so a bar open 20:00 to 02:00 is not treated as never open.
Four layouts
The full week, a compact list for a footer, a one-line open/closed badge, and a Today view with the rest of the week behind a toggle.
12 or 24 hour, Monday or Sunday
Both are settings rather than assumptions, and the times are formatted by the widget itself so the preview and the live embed always read identically.
Nothing to slow your page
The whole widget runs in the visitor's browser from the settings in your snippet, so it makes no request to Zyff when your page loads.
At a glance
| Days | All seven, each open or closed independently |
|---|---|
| Periods per day | Up to 2, for a lunchtime closure |
| Overnight hours | Supported — a close time before the open time runs past midnight |
| Layouts | 4 templates: full week, compact list, status badge, Today with a toggle |
| Clock | 12 or 24 hour; week starting Monday or Sunday |
| Status refresh | Re-evaluated every 60 seconds in the visitor's browser |
| Output | One container div plus one script tag, or a downloadable HTML file |
| Price | Free to build; paid plans for saved widgets |
Frequently asked questions
How do I add opening hours to my website?
Set your hours in Zyff's builder, pick a layout, then copy the generated embed code into your page. The whole flow is free with no signup, and the snippet is plain HTML, so it drops into any CMS block that accepts custom code — a contact page, a footer, or a sidebar.
Which timezone are the hours shown in?
The visitor's own. The widget runs entirely in their browser with no server behind it, so their clock is the only one available — which means someone in another country sees "open now" judged against their local time, not yours. For a local business that is almost always right, because the people checking are nearby. If most of your enquiries come from elsewhere, set the times as someone there would read them.
Can I show a lunchtime closure?
Yes. Add a second period to that day, so it might run 09:00 to 12:30 and again 13:30 to 17:30. The status reads both windows, so the widget correctly says you are closed during the gap.
What about hours that run past midnight?
Set the closing time earlier than the opening time — 20:00 to 02:00 — and the widget treats the window as running into the next day. A naive open-to-close comparison reports such a day as never open, which is the bug this avoids.
Does the open/closed status update on its own?
Yes, every minute, in the visitor's browser. That matters more than it sounds: someone who opens your contact page at 4:55pm and comes back to the tab at 6pm would otherwise still be told you are open.
Will this show my opening hours in Google search results?
Not by itself. The hours Google shows beside a business come from your Google Business Profile, not from your website, so keep those up to date separately. This widget is for the visitors who are already on your site — and it answers the question a table alone does not, which is whether you are open right now.
Can I mark a bank holiday or a one-off closure?
Not as a dated exception. The widget describes a normal week, and the footnote field is there for the honest version — "Bank holidays may differ". Dated exceptions would need the widget to know today's date against a calendar of holidays for a country it cannot determine.
Where do I paste the opening hours code?
Wherever the hours should appear — a contact page, a footer, or a sidebar. The badge layout is small enough to sit inside a header. Put the container div in that spot and keep the script tag with it.
Is the business hours widget really free?
Yes. Building it, styling it and embedding it are free with no signup, no trial and no watermark — a free embed carries a small "Opening hours by Zyff" link, which is how the tool stays free. The full week and compact layouts are free, and so is the live open/closed status: a widget that could not say whether you are open would be wrong rather than merely limited. A paid plan adds the badge and Today layouts, full colour control and removes the attribution link.