@tsparticles/plugin-emitters

tsParticles emitters plugin
6,723,672 8,997
Install
npm install @tsparticles/plugin-emitters
Latest Version:4.4.0
License:MIT
Last Updated:Oct 21, 2026
Links: GitHub  ·  npm
Maintainer: matteobruni

banner

tsParticles Emitters Plugin

jsDelivr npmjs npmjs GitHub Sponsors

tsParticles plugin for particles emitters.

Quick checklist

  1. Install @tsparticles/engine (or use the CDN bundle below)
  2. Call the package loader function(s) before tsParticles.load(...)
  3. Apply the package options in your tsParticles.load(...) config

How to use it

CDN / Vanilla JS / jQuery

The CDN/Vanilla version JS has one required file in vanilla configuration:

Including the tsparticles.plugin.emitters.min.js file will export the function to load the plugin:

loadEmittersPlugin;

Usage

Once the scripts are loaded you can set up tsParticles and the plugin like this:

(async () => {
  await loadInteractivityPlugin(tsParticles);
  await loadEmittersPlugin(tsParticles);

  await tsParticles.load({
    id: "tsparticles",
    options: {/* options */},
  });
})();

ESM / CommonJS

This package is compatible also with ES or CommonJS modules, firstly this needs to be installed, like this:

$ npm install @tsparticles/plugin-emitters

or

$ yarn add @tsparticles/plugin-emitters

Then you need to import it in the app, like this:

const { tsParticles } = require("@tsparticles/engine");
const { loadInteractivityPlugin } = require("@tsparticles/plugin-interactivity");
const { loadEmittersPlugin } = require("@tsparticles/plugin-emitters");

(async () => {
  await loadInteractivityPlugin(tsParticles);
  await loadEmittersPlugin(tsParticles);
})();

or

import { tsParticles } from "@tsparticles/engine";
import { loadInteractivityPlugin } from "@tsparticles/plugin-interactivity";
import { loadEmittersPlugin } from "@tsparticles/plugin-emitters";

(async () => {
  await loadInteractivityPlugin(tsParticles);
  await loadEmittersPlugin(tsParticles);
})();

Granular loading

Instead of the full loadEmittersPlugin, you can import only the parts you need to reduce bundle size:

  • Plugin only (emitter lifecycle and drawing):
    import { loadEmittersPluginSimple } from "@tsparticles/plugin-emitters/plugin";
    
  • Interaction only (click/hover on emitters):
    import { loadEmittersInteraction } from "@tsparticles/plugin-emitters/interaction";
    

Lazy-loaded variants are also available by appending /lazy to the import path:

import { loadEmittersPluginSimple } from "@tsparticles/plugin-emitters/plugin/lazy";
import { loadEmittersInteraction } from "@tsparticles/plugin-emitters/interaction/lazy";

Option mapping

  • Primary options key: emitters
{
  "emitters": {}
}

Common pitfalls

  • Calling tsParticles.load(...) before loadInteractivityPlugin(...)
  • Verify required peer packages before enabling advanced options
  • Change one option group at a time to isolate regressions quickly

Related docs

Related Packages

Version History

Version Released License
4.4.0 MIT
4.3.2 MIT
4.3.1 MIT
4.3.0 MIT
4.2.1 MIT
Pre-releases (46)
Version Released License
4.0.0-beta.17 MIT
4.0.0-beta.16 MIT
4.0.0-beta.15 MIT
4.0.0-beta.12 MIT
4.0.0-beta.11 MIT