UK Bank Holidays Widget
Show the official bank holiday dates for any UK division - the next one with a day count, the upcoming list or a full year - including substitute days, with a calendar download and a GOV.UK credit that says when the dates were last updated.
Live preview
Under the widget on your page: Powered by A2Z Tools
Embed code
<iframe src="https://a2z.tools/embed/w/uk-bank-holidays" title="UK Bank Holidays by A2Z Tools" width="100%" height="760" style="border:0;width:100%" loading="lazy" allow="clipboard-write"></iframe>
A plain iframe. Works everywhere, including site builders that strip scripts. Adjust height if your content needs more room.
<div data-a2z-widget="uk-bank-holidays" data-height="760"></div> <script async src="https://a2z.tools/embed.js"></script>
Adds a small script (what it does) that sizes the widget to fit its content, loads it lazily and keeps it isolated from your page's CSS.
Works with
How it works
The dates are never typed into the widget. A2Z's server downloads GOV.UK's official bank-holidays.json once a day and the widget reads it from the same site, so a new one-off holiday or a moved date appears without anyone editing the embed. A visitor picks England and Wales, Scotland or Northern Ireland; the publisher can preset the division and a layout - next holiday only, an upcoming list (6 rows by default, up to 12) or a year view with previous and next buttons. Substitute days arrive with GOV.UK's own note: Boxing Day 2026 falls on a Saturday, so Monday 28 December is shown as the substitute day, and Scotland's 2 January 2027 moves to Monday 4 January. "Today" is the date in London, so the day count is the same for every visitor. If GOV.UK cannot be reached the last good copy is shown with a cached-copy marker; if no copy exists the widget says the dates are unavailable rather than guessing.
Method
- Data: GET /api/embed/holidays/uk -> GOV.UK bank-holidays.json (cached 24 h, stale copy up to 30 days, else 503)
- Next holiday = first event with date >= today's date in Europe/London
- Days until = (holiday date - today) in whole calendar days; 0 = today, 1 = tomorrow
- Calendar file: RFC 5545 all-day events, DTSTART;VALUE=DATE and DTEND = the next day
Worked examples
Next holiday card
Inputs: England and Wales, visitor's date 1 October 2026
Result: Christmas Day - Friday, 25 December 2026 - in 85 days
From 1 October to 25 December is 85 days.
Substitute day in Scotland
Inputs: Scotland, year view 2027
Result: Includes 2nd January - Monday, 4 January 2027, marked Substitute
2 January 2027 is a Saturday, so GOV.UK lists Monday 4 January.
Limitations
- Only bank holidays in GOV.UK's list are shown; local holidays and company closures are not included.
- Dates GOV.UK has not yet published (beyond the end of its list) cannot be shown.
- Needs A2Z's server to be reachable; with no cached copy the widget shows an unavailable message.
Where publishers use it
- A bank, building society or courier showing which days branches and deliveries pause
- A Scottish school or council site that must show St Andrew's Day and 2 January, which England does not have
- A Belfast business page listing St Patrick's Day and the Battle of the Boyne holiday
- An HR or payroll provider's help centre explaining substitute days and why pay dates move
- A booking site's footer saying when the next closure is, with a one-click calendar file
Questions
Why are the dates different for Scotland and Northern Ireland?
Each division has its own list. Scotland has 2 January and St Andrew's Day (30 November) and its summer holiday is on the first Monday of August; Northern Ireland adds St Patrick's Day (17 March) and 12 July. England and Wales have 8 bank holidays in a normal year.
What is a substitute day?
When a bank holiday falls on a weekend, a weekday is usually given instead. In 2026 Boxing Day is a Saturday, so Monday 28 December is the substitute day in all three divisions; GOV.UK marks it "Substitute day" and so does the widget.
How far ahead are dates shown?
As far as GOV.UK has published - at the time of checking, to the end of 2028. The year view only offers years that are in the official list.
Where do the dates come from and how fresh are they?
From GOV.UK's bank-holidays.json, published under the Open Government Licence v3.0. A2Z refreshes it at most once a day and the credit line shows the time of the copy in UK time.
What happens if GOV.UK is down?
For up to 30 days the last good copy is used with a "Cached copy" marker. After that the widget shows that the dates are unavailable and a retry button - it never invents dates.
Sources
- UK bank holidays - GOV.UK . Official dates for England and Wales, Scotland and Northern Ireland with substitute-day notes; JSON feed at gov.uk/bank-holidays.json under the Open Government Licence v3.0. Checked 2026-10-01.
- Open Government Licence v3.0 - The National Archives . Licence for reusing the GOV.UK data, with attribution.
- RFC 5545 - Internet Calendaring and Scheduling Core Object Specification (iCalendar) - IETF . All-day events written with DTSTART;VALUE=DATE and an exclusive DTEND.
Cite or recommend this tool
If you reference this tool in an article, course or documentation, these formats are ready to copy. They are optional - nothing is added to your site unless you paste it.
A2Z Tools UK Bank Holidays https://a2z.tools/embed/uk-bank-holidays
<a href="https://a2z.tools/embed/uk-bank-holidays">A2Z Tools UK Bank Holidays</a>
[A2Z Tools UK Bank Holidays](https://a2z.tools/embed/uk-bank-holidays)
UK Bank Holidays by A2Z Tools - https://a2z.tools/embed/uk-bank-holidays
Related widgets
-
Working days between two dates, or N working days on, skipping weekends and official UK bank holidays.
-
Days, hours and minutes to the next Christmas, Easter, Thanksgiving, Black Friday or 13 other holidays.
-
Holiday opening hours and closure dates that hide past days and highlight today in your time zone.
-
A keyboard-friendly month calendar with today highlighted and your own marked dates.
-
Live days, hours, minutes and seconds to a date you set, with an "event has started" message.
-
Exact age in years, months and days, totals in months, weeks and days, and the next birthday.