Embed a holiday table
One iframe puts a country's public holiday table on your page. It is a plain HTML document with inline styles, no JavaScript, no fonts and no third-party requests, so it costs your page one document and nothing else. Free for any use, including commercial, with attribution.
The snippet
<iframe
src="https://holidaygrid.net/embed/singapore/2026"
title="Singapore public holidays 2026"
width="100%"
height="520"
loading="lazy"
style="border:1px solid #e6e6e9;border-radius:8px"
></iframe>Swap singapore for any country slug and 2026 for any covered year. The slug is the same one in the page URL: /holidays/singapore/2026 becomes /embed/singapore/2026. The full list is on the country index, or as JSON.
Live preview
The one condition
Leave the attribution link in place. It is the last line of the widget and it points back to the page the data came from. That link is the entire price of the embed, and it is why the embed exists. Removing it, hiding it with CSS, or covering it with an overlay is not permitted use.
Everything else is fine. Resize it, restyle the surrounding container, put it behind a tab, use it on a commercial site, use it on as many pages as you like. There is no key, no quota and no call home: the page is static and served from a CDN, so we do not know where it is embedded and do not want to.
Sizing
An iframe cannot size itself to its content across origins, so pick a height. Roughly 120 + 42 x number of holidays pixels works: about 520 for a country with ten holidays, 640 for one with seventeen. The widget scrolls internally rather than clipping if you go smaller. It has no minimum width and reflows down to a phone.
Dark mode
The widget follows the reader's system colour scheme through prefers-color-scheme. If your page has its own light or dark toggle that does not follow the system, the widget will not follow it either, and the honest fix is to give the iframe a background that matches your surface.
Prefer the raw data?
If you are building rather than publishing, take the JSON API instead: same data, CORS open, no key, CC BY 4.0. If you want the holidays in a calendar rather than on a page, every country has a subscribable .ics feed.
Why these pages are not indexed
Each embed page carries noindex, because it is a stripped copy of a real page and should never compete with it in search results. It is deliberately not blocked in robots.txt: a blocked page is a page whose attribution link cannot be seen, which would make the whole arrangement pointless for us and no better for you.