Skip to content

Bundle Guide ​

tsParticles is modular. The @tsparticles/engine package contains only the core engine; to get visible effects you must register shapes (what to draw), updaters (how to animate), interactions (how to react to mouse/touch), and plugins (extra features). All this happens through bundles.

Bundle categories ​

CategoryBundleAPI
Engine + loader@tsparticles/basic, @tsparticles/slim, tsparticles, @tsparticles/alltsParticles.load({ id, options })
Dedicated API@tsparticles/confetti, @tsparticles/fireworks, @tsparticles/particles, @tsparticles/ribbonsconfetti({...}), fireworks({...}), etc.

Complete feature comparison ​

Legend: ● = included, ○ = not included

Featurebasicslimfull (tsparticles)all
Shapes
Circle●●●●
Square○●●●
Star○●●●
Polygon○●●●
Line○●●●
Image○●●●
Emoji○●●●
Text○○●●
Cards (suits)○○○●
Heart○○○●
Arrow○○○●
Rounded rect○○○●
Rounded polygon○○○●
Spiral○○○●
Squircle○○○●
Cog○○○●
Infinity○○○●
Matrix○○○●
Path○○○●
Ribbon○○○●
External interactions (mouse/touch)
Attract○●●●
Bounce○●●●
Bubble○●●●
Connect○●●●
Destroy○●●●
Grab○●●●
Parallax○●●●
Pause○●●●
Push○●●●
Remove○●●●
Repulse○●●●
Slow○●●●
Drag○○●●
Trail○○●●
Cannon○○○●
Particle○○○●
Pop○○○●
Light○○○●
Particle interactions
Links○●●●
Collisions○●●●
Attract○●●●
Repulse○○○●
Updaters (animations)
Opacity●●●●
Size●●●●
Out modes●●●●
Paint (color)●●●●
Rotate○●●●
Life○●●●
Destroy○○●●
Roll○○●●
Tilt○○●●
Twinkle○○●●
Wobble○○●●
Gradient○○○●
Orbit○○○●
Plugins
Move●●●●
Blend●●●●
Emitters○○●●
Absorbers○○●●
Sounds○○○●
Motion (user prefs)○○○●
Themes○○○●
Polygon mask○○○●
Canvas mask○○○●
Background mask○○○●
Export (image, json, video)○○○●
Manual particles○○○●
Responsive○○○●
Trail○○○●
Zoom○○○●
Poisson disc○○○●
Paths
Any path○○○● (14 generators)
Effects
Bubble, Filter, Shadow, etc.○○○● (5 effects)
Easing
Quad○●●●
Back, Bounce, Circ, Cubic, Elastic, Expo, Gaussian, Linear, Quart, Quint, Sigmoid, Sine, Smoothstep○○○●
Color plugins
HEX, HSL, RGB●●●●
HSV, HWB, LAB, LCH, Named, OKLAB, OKLCH○○○●

Dedicated API bundles ​

Featureconfettifireworksparticlesribbons
Shapescircle, heart, cards, emoji, image, polygon, square, starline(from basic)ribbon
Interactions——links + collisions—
Special pluginsemitters, motionemitters, sounds, blend—emitters, motion
API callconfetti(opts)fireworks(opts)particles(opts)ribbons(opts)

Selection guide ​

mermaid
flowchart TD
    A[Need to start fast?] -->|Yes| B[Use a preset?]
    A -->|No| C[What bundle size?]
    B -->|Yes| D["@tsparticles/configs + @tsparticles/slim"]
    B -->|No| E["Confetti? → @tsparticles/confetti"]
    B -->|No| F["Fireworks? → @tsparticles/fireworks"]
    B -->|No| G["Particle BG? → @tsparticles/particles"]
    B -->|No| H["Ribbons? → @tsparticles/ribbons"]
    C -->|"Minimal (circles only)"| I["@tsparticles/basic"]
    C -->|"Medium (shapes + interactions)"| J["@tsparticles/slim"]
    C -->|"Maximum (all features)"| K["tsparticles (loadFull)"]
    C -->|"Whole repository"| L["@tsparticles/all"]

Rules of thumb:

  1. Most projects start with @tsparticles/slim.
  2. If bundle size is critical and you only need circles: @tsparticles/basic.
  3. If you need emitters, absorbers, text, wobble/tilt/roll: tsparticles with loadFull.
  4. For quick prototyping with all features: @tsparticles/all.
  5. For targeted effects (confetti, fireworks, particle BG, ribbons) with minimal setup: dedicated API bundles.

Quick install ​

Bundlenpm commandLoader functionCDN URL
@tsparticles/basicpnpm add @tsparticles/engine @tsparticles/basicloadBasic(tsParticles)@tsparticles/basic@4/tsparticles.basic.bundle.min.js
@tsparticles/slimpnpm add @tsparticles/engine @tsparticles/slimloadSlim(tsParticles)@tsparticles/slim@4/tsparticles.slim.bundle.min.js
tsparticles (full)pnpm add @tsparticles/engine tsparticlesloadFull(tsParticles)tsparticles@4/tsparticles.bundle.min.js
@tsparticles/allpnpm add @tsparticles/engine @tsparticles/allloadAll(tsParticles)@tsparticles/all@4/tsparticles.all.bundle.min.js
@tsparticles/confettipnpm add @tsparticles/confetticonfetti(opts)@tsparticles/confetti@4/tsparticles.confetti.bundle.min.js
@tsparticles/fireworkspnpm add @tsparticles/fireworksfireworks(opts)@tsparticles/fireworks@4/tsparticles.fireworks.bundle.min.js
@tsparticles/particlespnpm add @tsparticles/particlesparticles(opts)@tsparticles/particles@4/tsparticles.particles.bundle.min.js
@tsparticles/ribbonspnpm add @tsparticles/ribbonsribbons(opts)@tsparticles/ribbons@4/tsparticles.ribbons.bundle.min.js

Note: for basic/slim/full/all bundles you MUST call load* before tsParticles.load(). CDN files expose the loader function globally but do NOT auto-call it. The confetti/fireworks/particles/ribbons bundles have self-contained APIs — call confetti(), fireworks(), etc. directly.

CDN example for @tsparticles/slim:

html
<script src="https://cdn.jsdelivr.net/npm/@tsparticles/engine@4/tsparticles.engine.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@tsparticles/slim@4/tsparticles.slim.bundle.min.js"></script>
<script>
  (async () => {
    await loadSlim(tsParticles);
    await tsParticles.load({ id: "tsparticles", options: { ... } });
  })();
</script>

CDN example for @tsparticles/confetti:

html
<script src="https://cdn.jsdelivr.net/npm/@tsparticles/confetti@4/tsparticles.confetti.bundle.min.js"></script>
<script>
  confetti({ particleCount: 100 });
</script>

See also the installation guide for CDN, npm, yarn, and file details.