Checking today's festival…

Festival magic for
any website.

A zero-dependency script that layers animated Dashain kites, Tihar diyas, Holi colour and more over your page. It is date-aware, accessible, and installs with one tag.

<script src="https://cdn.jsdelivr.net/npm/festival-overlay@1/dist/festival-overlay.auto.min.js"></script>
0 dependencies ~8 KB gzipped 5 festivals Click anywhere for a burst

Pick a festival

The overlay sits above this page. The page stays fully clickable.

Playground

Every option here maps 1:1 to a library option.

Intensity intensity
0.95
date · used by auto
Greeting bannerbanner: true (Shadow DOM ribbon)
Respect reduced motionrespectReducedMotion
Status
Idle
Frame rate
— fps
Requested
auto
Rendering
—
resolve(date) →
—

Embed it

Snippets update live from the playground settings.

Built to be a polite guest

🪶

Zero dependencies

Pure Canvas 2D. No images, fonts or frameworks. About 8 KB gzipped for all five themes.

📅

Date-aware auto mode

Shows the right festival on the right day and does nothing on other days. The calendar updates over the CDN without a re-deploy.

🖱️

Never in the way

pointer-events: none, aria-hidden, and an optional auto-stop timer. It never covers content for good.

♿

Reduced motion aware

Honours prefers-reduced-motion, and pauses when the tab is hidden to save battery.

⚡

Zero-allocation loop

Pooled particles, time-based motion, DPR capped at 2, and a debounced resize. It holds 60 fps on mid-range phones.

🧩

Pluggable themes

A new festival is one theme file plus one calendar entry. The engine never changes.

Festival calendar

What festival: 'auto' will pick, from the bundled calendar.

Lunar festivals (Dashain, Tihar, Holi) are stored as data, not computed, and are marked unverified until a maintainer confirms them against the official Nepali calendar.