Fireworks controlsDrag this bar in fullscreenControls:

Firework types

Choose which shells the homepage fires. At least one stays on.

Version 1.11.160fps target5,000 particles15 shellsSmooth as butterClick for fireworks

The best, most advanced, most powerful JavaScript fireworks ever made.

Smooth as butter. The high preset aims at 60fps with 5,000 particles and 10 rockets in the air, across 15 shell types. WebGL 2 first, Canvas when it has to be, multi-line text, a Super Grand Finale, and zero dependencies.

Some libraries just draw circles and call them fireworks. Grand Fireworks renders genuine pyrotechnic geometry β€” crossettes that split mid-air, weeping willows that trail gravity-realistic embers, galactic spirals, and chrysanthemum shells that bloom. Built for landing pages, hero sections, celebrations, and anyone who refuses to ship a half-baked effect.

View source on GitHub Β· Download source ZIP Β· Open the GitHub Pages site Β· What changed in 1.11.1

WebGL 215 shellsText fireworksSound engineGuided workbenchEvery feature, compared

Quick start

<script src="GrandFireworks.js"></script>
<script>
  const fireworks = new GrandFireworks();
  fireworks.start();
</script>

The zero-argument constructor creates a transparent fullscreen overlay, uses the cinematic style with the high adaptive performance preset, does not start automatically, and runs indefinitely once started.

CDN

Load directly from GitHub via jsDelivr β€” no build step, no bundler required.

<script src="https://cdn.jsdelivr.net/gh/travisjmac/grand-fireworks-js@latest/dist/GrandFireworks.min.js"></script>

To stay on one release rather than following the latest, pin its tag:

<script src="https://cdn.jsdelivr.net/gh/travisjmac/grand-fireworks-js@v1.11.1/dist/GrandFireworks.min.js"></script>

Experiences

Explore the default fireworks show, a cinematic scene, or the hands-on feature lab.

Build it into anything

Grand Fireworks is designed to be dropped into an existing page, experience, or game without adopting a framework or rebuilding your UI. Create one instance, choose a container, and trigger shells, text, finales, or your own gameplay events from ordinary JavaScript. The engine handles the spectacle; your project keeps its own rules, controls, and personality.

Configure your show

How it compares

Every row is a Grand Fireworks feature. fireworks-js gets a mark only where version 2.10.8 has that same feature. Open the comparison on its own page.

FeatureGrand Fireworks JSfireworks-js
Renderer
WebGL 2 rendererβœ…βŒ
Canvas 2D rendererβœ…βœ…
Automatic Canvas fallback when WebGL is unavailableβœ…βŒ
Point-sprite particlesβœ…βŒ
Device-pixel-ratio capβœ…βŒ
WebGL context-loss recoveryβœ…βŒ
Long-exposure trailsβœ…βœ…
Bloomβœ…βŒ
Star-shaped sparksβœ…βŒ
Rocket exhaustβœ…βŒ
Explosion flashesβœ…βŒ
Full-screen flashβœ…βŒ
Shells
Grand peony shellβœ…βŒ
Imperial chrysanthemum shellβœ…βŒ
Weeping willow shellβœ…βŒ
Royal palm shellβœ…βŒ
Diamond ring shellβœ…βŒ
Crossette supreme shellβœ…βŒ
Golden brocade shellβœ…βŒ
Dragon fish shellβœ…βŒ
Majestic comet shellβœ…βŒ
Cascading horsetail shellβœ…βŒ
Starburst shellβœ…βŒ
Glitter nova shellβœ…βŒ
Crown jewel shellβœ…βŒ
Thunder clap shellβœ…βŒ
Galactic spiral shellβœ…βŒ
Show
Automatic launching showβœ…βœ…
Intensity controlβœ…βœ…
Opening salvoβœ…βŒ
Gravityβœ…βœ…
Air dragβœ…βœ…
Windβœ…βŒ
Camera zoomβœ…βŒ
Layer opacityβœ…βœ…
Color controlβœ…βœ…
Named color themesβœ…βŒ
Named visual stylesβœ…βŒ
Mixed styleβœ…βŒ
Random showβœ…βŒ
Global speed controlβœ…βŒ
Grouped salvosβœ…βŒ
Secondary crackleβœ…βŒ
Ember color burnβœ…βŒ
Shimmerβœ…βŒ
Sparkleβœ…βŒ
Pointer launches a rocketβœ…βœ…
Burst at an exact pointβœ…βŒ
Fly a rocket from one point to anotherβœ…βŒ
Draw inside an element you chooseβœ…βœ…
Transparent fullscreen overlayβœ…βŒ
Pause and resumeβœ…βœ…
Stop the showβœ…βœ…
Wait until shells in the air finishβœ…βœ…
Clear the skyβœ…βœ…
Launch a shell on demandβœ…βœ…
Change options while runningβœ…βœ…
Read the current optionsβœ…βœ…
Runtime statsβœ…βŒ
Text
Text fireworksβœ…βŒ
Multi-line textβœ…βŒ
Hybrid particle and crisp textβœ…βŒ
Text position and alignmentβœ…βŒ
Text tiltβœ…βŒ
Text dissolve, hold, and fallβœ…βŒ
A sequence of text messagesβœ…βŒ
Finale
Grand finaleβœ…βŒ
World Enderβœ…βŒ
Show durationβœ…βŒ
Sound
Sound effectsβœ…βœ…
Turn sound on and offβœ…βœ…
Volume controlβœ…βœ…
Procedural launch, whistle, boom, and crackleβœ…βŒ
Ambient hissβœ…βŒ
Stereo panningβœ…βŒ
Performance
Quality presets, including a 60fps targetβœ…βŒ
Adaptive qualityβœ…βŒ
Pause when the tab is hiddenβœ…βŒ
Pause when scrolled offscreenβœ…βŒ
Reduced-motion supportβœ…βŒ
Particle capβœ…βœ…
Rocket capβœ…βŒ
Building with it
TypeScript declarationsβœ…βœ…
Zero runtime dependenciesβœ…βœ…
Host-driven frame loopβœ…βŒ
React componentβœ…βœ…
Preact componentβœ…βœ…
Solid componentβœ…βœ…
Vue componentβœ…βœ…
Svelte componentβœ…βœ…
Angular componentβœ…βœ…
Custom elementβœ…βœ…
SSR-safe React, Vue, and Svelte mountsβœ…βš οΈ React use client
Configuration referenceβœ…βœ…
Guided workbenchβœ…βŒ
Copy the running configurationβœ…βŒ
Live demoβœ…βœ…

βœ… supported Β· ⚠️ partial Β· ❌ not supported

Verified October 2026 against fireworks-js 2.10.8 and Grand Fireworks JS 1.11.1. Sources: fireworks.ts, types.ts, sound.ts, README.