---
name: tsparticles
summary: "tsParticles is a dependency-free TypeScript library for rendering animated particle effects (confetti, snow, fireworks, interactive link networks, and more) on a canvas. It ships a modular engine with optional feature bundles and official wrapper components for nearly every major frontend framework."
language: TypeScript
license: MIT
repo: https://github.com/tsparticles/tsparticles
source: https://opensources.dev/resource/tsparticles
health: 100
---

# tsparticles

tsParticles is a dependency-free TypeScript library for rendering animated particle effects (confetti, snow, fireworks, interactive link networks, and more) on a canvas. It ships a modular engine with optional feature bundles and official wrapper components for nearly every major frontend framework.

[![banner](https://particles.js.org/images/banner3.png)](https://particles.js.org)

# tsParticles - TypeScript Particles

**A lightweight TypeScript library for creating particles. Dependency free (*), browser ready and compatible with
React.js, Vue.js (2.x and 3.x), Angular, Svelte, jQuery, Preact, Inferno, Riot.js, Solid.js, and Web Components**

[![GitHub Sponsors](https://img.shields.io/github/sponsors/matteobruni?style=for-the-badge)](https://github.com/sponsors/matteobruni)
[![jsDelivr hits (npm)](https://img.shields.io/jsdelivr/npm/hm/tsparticles?style=for-the-badge)](https://www.jsdelivr.com/package/npm/tsparticles)
[![Cdnjs](https://img.shields.io/cdnjs/v/@tsparticles/engine?style=for-the-badge)](https://cdnjs.com/libraries/tsparticles)
[![npm](https://img.shields.io/npm/v/@tsparticles/engine?style=for-the-badge)](https://www.npmjs.com/package/tsparticles)
[![npm](https://img.shields.io/npm/dm/tsparticles?style=for-the-badge)](https://www.npmjs.com/package/tsparticles)
[![CodeFactor](https://www.codefactor.io/repository/github/tsparticles/tsparticles/badge)](https://www.codefactor.io/repository/github/tsparticles/tsparticles)
[![Codacy Badge](https://api.codacy.com/project/badge/Grade/b983aaf3461a4c48b1e2eecce1ff1d74)](https://www.codacy.com/manual/ar3s/tsparticles?utm_source=github.com&utm_medium=referral&utm_content=tsparticles/tsparticles&utm_campaign=Badge_Grade)
[![Rate this package](https://badges.openbase.com/js/rating/tsparticles.svg?style=openbase&token=A9jHQ1nkb6fnCndKM7O2w4hx3OD8PVCuqHtSpw8mMOg=)](https://openbase.com/js/tsparticles?utm_source=embedded&utm_medium=badge&utm_campaign=rating-badge&utm_term=js/tsparticles)
[![Gitpod Ready-to-Code](https://img.shields.io/badge/Gitpod-ready--to--code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/tsparticles/tsparticles)
[![Run on Repl.it](https://repl.it/badge/github/tsparticles/tsparticles)](https://repl.it/github/tsparticles/tsparticles)

[![Discord](https://img.shields.io/discord/872061157379301416?label=discord&logo=discord&logoColor=white&style=for-the-badge)](https://discord.gg/hACwv45Hme)
[![Telegram](https://particles.js.org/images/telegram.png)](https://t.me/tsparticles)
[![Reddit](https://img.shields.io/reddit/subreddit-subscribers/tsParticles?style=for-the-badge)](https://www.reddit.com/r/tsParticles/)

[![tsParticles Product Hunt](https://api.producthunt.com/widgets/embed-image/v1/featured.svg?post_id=186113&theme=light)](https://www.producthunt.com/posts/tsparticles?utm_source=badge-featured&utm_medium=badge&utm_source=badge-tsparticles)
[![Buy Me A Coffee](https://img.buymeacoffee.com/button-api/?text=Buy%20me%20a%20beer&emoji=🍺&slug=matteobruni&button_colour=5F7FFF&font_colour=ffffff&font_family=Arial&outline_colour=000000&coffee_colour=FFDD00)](https://www.buymeacoffee.com/matteobruni)

---

## Table of Contents

- [tsParticles - TypeScript Particles](#tsparticles---typescript-particles)
  - [Table of Contents](#table-of-contents)
  - [Do you want to use it on your website?](#do-you-want-to-use-it-on-your-website)
  - [Start here in 2 minutes](#start-here-in-2-minutes)
  - [***Library installation***](#library-installation)
    - [***Hosting / CDN***](#hosting--cdn)
      - [jsDelivr](#jsdelivr)
      - [cdnjs](#cdnjs)
      - [unpkg](#unpkg)
    - [***npm***](#npm)
    - [***yarn***](#yarn)
    - [***pnpm***](#pnpm)
      - [Import and require](#import-and-require)
    - [***Usage***](#usage)
  - [Official components for some of the most used frameworks](#official-components-for-some-of-the-most-used-frameworks)
    - [Angular](#angular)
      - [`@tsparticles/angular`](#tsparticlesangular)
    - [Astro](#astro)
      - [`@tsparticles/astro`](#tsparticlesastro)
    - [Ember.js](#emberjs)
      - [`@tsparticles/ember`](#tsparticlesember)
    - [Inferno](#inferno)
      - [`@tsparticles/inferno`](#tsparticlesinferno)
    - [jQuery](#jquery)
      - [`@tsparticles/jquery`](#tsparticlesjquery)
    - [Preact](#preact)
      - [`@tsparticles/preact`](#tsparticlespreact)
    - [Qwik](#qwik)
      - [`@tsparticles/qwik`](#tsparticlesqwik)
    - [ReactJS](#reactjs)
      - [`@tsparticles/nextjs`](#tsparticlesnextjs)
      - [`@tsparticles/react`](#tsparticlesreact)
    - [RiotJS](#riotjs)
      - [`@tsparticles/riot`](#tsparticlesriot)
    - [SolidJS](#solidjs)
      - [`@tsparticles/solid`](#tsparticlessolid)
    - [Svelte](#svelte)
      - [`@tsparticles/svelte`](#tsparticlessvelte)
    - [VueJS 2.x](#vuejs-2x)
      - [`@tsparticles/nuxt2`](#tsparticlesnuxt2)
      - [`@tsparticles/vue2`](#tsparticlesvue2)
    - [VueJS 3.x](#vuejs-3x)
      - [`@tsparticles/nuxt3`](#tsparticlesnuxt3)
      - [`@tsparticles/nuxt4`](#tsparticlesnuxt4)
      - [`@tsparticles/vue3`](#tsparticlesvue3)
    - [Web Components](#web-components)
      - [`@tsparticles/webcomponents`](#tsparticleswebcomponents)
    - [WordPress](#wordpress)
      - [`@tsparticles/wordpress`](#tsparticleswordpress)
    - [Elementor](#elementor)
  - [Presets](#presets)
    - [Ambient](#ambient)
    - [Big Circles](#big-circles)
    - [Bubbles](#bubbles)
    - [Confetti](#confetti)
    - [Confetti Cannon](#confetti-cannon)
    - [Confetti Explosions](#confetti-explosions)
    - [Confetti Falling](#confetti-falling)
    - [Confetti Parade](#confetti-parade)
    - [Party](#party)
    - [Fire](#fire)
    - [Firefly](#firefly)
    - [Fireworks](#fireworks)
    - [Fountain](#fountain)
    - [Hyperspace](#hyperspace)
    - [Links](#links)
    - [Sea Anemone](#sea-anemone)
    - [Snow](#snow)
    - [Squares](#squares)
    - [Stars](#stars)
    - [Triangles](#triangles)
  - [Templates and Resources](#templates-and-resources)
  - [***Demo / Generator***](#demo--generator)
  - [***Video Tutorials***](#video-tutorials)
    - [Characters as particles](#characters-as-particles)
    - [Polygon mask](#polygon-mask)
    - [Animated stars](#animated-stars)
    - [Nyan cat flying on scrolling stars](#nyan-cat-flying-on-scrolling-stars)
    - [Snow particles](#snow-particles)
    - [Background Mask particles](#background-mask-particles)
  - [***Options***](#options)
  - [Want to see it in action and try it?](#want-to-see-it-in-action-and-try-it)
  - [Migrating from Particles.js](#migrating-from-particlesjs)
  - [Plugins/Customizations](#pluginscustomizations)
  - [Dependency Graph](#dependency-graph)

---

## Do you want to use it on your website?

*Documentation and Development references *[*here*](https://particles.js.org/docs/)* 📖*

**This library is available on two of the most popular CDNs and it's easy and ready to use, if you were using
particles.js
it's even easier**.

You'll find the
instructions [below](https://github.com/tsparticles/tsparticles/blob/main/README.md#library-installation), with all the
links you need, and *don't be scared by ****TypeScript****, it's just the source language*.

**The output files are just JavaScript**. 🤩

CDNs and `npm` have all the sources you need in **Javascript**, a bundle browser ready (tsparticles.engine.min.js), and
all
files splitted for `import` syntax.

**If you are interested** there are some *simple instructions*
just [below](https://github.com/tsparticles/tsparticles/blob/main/README.md#library-installation) to guide you to
migrate from the old particles.js library.

## Start here in 2 minutes

If you are new to tsParticles, this path is usually the fastest:

1. Install `@tsparticles/engine` and `@tsparticles/slim`
2. Load the slim bundle once
3. Start with a small config and iterate

```javascript
import { tsParticles } from "@tsparticles/engine";
import { loadSlim } from "@tsparticles/slim";

await loadSlim(tsParticles);

await tsParticles.load({
  id: "tsparticles",
  options: {
    background: {
      color: "#0d1117",
    },
    particles: {
      move: {
        enable: true,
      },
      number: {
        value: 60,
      },
    },
  },
});
```

Useful docs for the next step:

- Docs home: [https://particles.js.org/docs/](https://particles.js.org/docs/)
- Options guide: [https://github.com/tsparticles/tsparticles/blob/main/markdown/Options.md](https://github.com/tsparticles/tsparticles/blob/main/markdown/Options.md)
- Migration guide: [https://github.com/tsparticles/tsparticles/blob/main/markdown/pjsMigration.md](https://github.com/tsparticles/tsparticles/blob/main/markdown/pjsMigration.md)
- Presets catalog: [https://github.com/tsparticles/presets](https://github.com/tsparticles/presets)

## Quick checklist

- Install `@tsparticles/engine` and one bundle (`@tsparticles/slim` is the common default)
- Load the bundle before calling `tsParticles.load(...)`
- Start from a small config, then extend incrementally

## Choose your quick-start path

- **I want fewer dependencies**: use `@tsparticles/engine` + only needed feature packages
- **I want the easiest default**: use `@tsparticles/slim`
- **I need everything enabled**: use `@tsparticles/all`

## Common pitfalls

- Loading options that require plugins before loading those plugin packages
- Starting with very high particle counts before checking FPS
- Mixing legacy snake_case keys with modern camelCase options

## Related docs

- Main docs: [https://particles.js.org/docs/](https://particles.js.org/docs/)
- Root options guide: [https://github.com/tsparticles/tsparticles/blob/main/markdown/Options.md](https://github.com/tsparticles/tsparticles/blob/main/markdown/Options.md)
- Migration guide: [https://github.com/tsparticles/tsparticles/blob/main/markdown/pjsMigration.md](https://github.com/tsparticles/tsparticles/blob/main/markdown/pjsMigration.md)

## ***Library installation***

### ***Hosting / CDN***

***Please use these hosts or your own to load tsParticles on your projects***

### jsDelivr

[![jsDelivr](https://data.jsdelivr.com/v1/package/npm/@tsparticles/confetti/badge)](https://www.jsdelivr.com/package/npm/@tsparticles/confetti)
[![jsDelivr](https://data.jsdelivr.com/v1/package/npm/@tsparticles/particles/badge)](https://www.jsdelivr.com/package/npm/@tsparticles/particles)
[![jsDelivr](https://data.jsdelivr.com/v1/package/npm/@tsparticles/engine/badge)](https://www.jsdelivr.com/package/npm/@tsparticles/engine)
[![jsDelivr](https://data.jsdelivr.com/v1/package/npm/@tsparticles/fireworks/badge)](https://www.jsdelivr.com/package/npm/@tsparticles/fireworks)
[![jsDelivr](https://data.jsdelivr.com/v1/package/npm/@tsparticles/basic/badge)](https://www.jsdelivr.com/package/npm/@tsparticles/basic)
[![jsDelivr](https://data.jsdelivr.com/v1/package/npm/@tsparticles/slim/badge)](https://www.jsdelivr.com/package/npm/@tsparticles/slim)
[![jsDelivr](https://data.jsdelivr.com/v1/package/npm/tsparticles/badge)](https://www.jsdelivr.com/package/npm/tsparticles)
[![jsDelivr](https://data.jsdelivr.com/v1/package/npm/@tsparticles/all/badge)](https://www.jsdelivr.com/package/npm/@tsparticles/all)

### cdnjs

[![Cdnjs](https://img.shields.io/cdnjs/v/tsparticles)](https://cdnjs.com/libraries/tsparticles)

### unpkg

[https://unpkg.com/@tsparticles/confetti/](https://unpkg.com/@tsparticles/confetti/) [https://unpkg.com/@tsparticles/particles/](https://unpkg.com/@tsparticles/particles/) [https://unpkg.com/@tsparticles/engine/](https://unpkg.com/@tsparticles/engine/) [https://unpkg.com/@tsparticles/fireworks/](https://unpkg.com/@tsparticles/fireworks/) [https://unpkg.com/@tsparticles/basic/](https://unpkg.com/@tsparticles/basic/) [https://unpkg.com/@tsparticles/slim/](https://unpkg.com/@tsparticles/slim/) [https://unpkg.com/tsparticles/](https://unpkg.com/tsparticles/) [https://unpkg.com/@tsparticles/all/](https://unpkg.com/@tsparticles/all/)

---

### ***npm***

*tsParticles Confetti*

[![npm](https://img.shields.io/npm/v/@tsparticles/confetti?style=for-the-badge)](https://www.npmjs.com/package/@tsparticles/confetti) [![npmjs](https://img.shields.io/npm/dt/@tsparticles/confetti?style=for-the-badge)](https://www.npmjs.com/package/@tsparticles/confetti)

*tsParticles Particles*

[![npm](https://img.shields.io/npm/v/@tsparticles/particles?style=for-the-badge)](https://www.npmjs.com/package/@tsparticles/particles) [![npmjs](https://img.shields.io/npm/dt/@tsparticles/particles?style=for-the-badge)](https://www.npmjs.com/package/@tsparticles/particles)

*tsParticles Engine*

[![npm](https://img.shields.io/npm/v/@tsparticles/engine?style=for-the-badge)](https://www.npmjs.com/package/@tsparticles/engine) [![npmjs](https://img.shields.io/npm/dt/@tsparticles/engine?style=for-the-badge)](https://www.npmjs.com/package/@tsparticles/engine)

*tsParticles Fireworks*

[![npm](https://img.shields.io/npm/v/@tsparticles/fireworks?style=for-the-badge)](https://www.npmjs.com/package/@tsparticles/fireworks) [![npmjs](https://img.shields.io/npm/dt/@tsparticles/fireworks?style=for-the-badge)](https://www.npmjs.com/package/@tsparticles/fireworks)

*tsParticles Basic*

[![npm](https://img.shields.io/npm/v/@tsparticles/basic?style=for-the-badge)](https://www.npmjs.com/package/@tsparticles/basic) [![npmjs](https://img.shields.io/npm/dt/@tsparticles/basic?style=for-the-badge)](https://www.npmjs.com/package/@tsparticles/basic)

*tsParticles Slim*

[![npm](https://img.shields.io/npm/v/@tsparticles/slim?style=for-the-badge)](https://www.npmjs.com/package/@tsparticles/slim) [![npmjs](https://img.shields.io/npm/dt/@tsparticles/slim?style=for-the-badge)](https://www.npmjs.com/package/@tsparticles/slim)

*tsParticles*

[![npm](https://img.shields.io/npm/v/tsparticles?style=for-the-badge)](https://www.npmjs.com/package/tsparticles) [![npmjs](https://img.shields.io/npm/dt/tsparticles?style=for-the-badge)](https://www.npmjs.com/package/tsparticles)

*tsParticles All*

[![npm](https://img.shields.io/npm/v/@tsparticles/all?style=for-the-badge)](https://www.npmjs.com/package/@tsparticles/all) [![npmjs](https://img.shields.io/npm/dt/@tsparticles/all?style=for-the-badge)](https://www.npmjs.com/package/@tsparticles/all)

```shell
npm install @tsparticles/engine
```

### ***yarn***

```shell
yarn add @tsparticles/engine
```

### ***pnpm***

```shell
pnpm install @tsparticles/engine
```

### Import and require

```javascript
const tsParticles = require("@tsparticles/engine");

// or

import { tsParticles } from "@tsparticles/engine";
```

The imported `tsParticles` is the same instance you have when including the script in the page using the `<script>` tag.

---

### ***Usage***

Load tsParticles and configure the particles:

[![tsParticles demo](https://media.giphy.com/media/ftHwBpp3b0qNyCXRuu/giphy.gif)](https://particles.js.org)
[![tsParticles Confetti demo](https://media.giphy.com/media/ftHwBpp3b0qNyCXRuu/giphy.gif)](https://confetti.js.org)

**index.html**

```html
<div id="tsparticles"></div>

<script src="tsparticles.engine.min.js"></script>
```

**app.js**

```javascript
// @path-json can be an object or an array, the first will be loaded directly, and the object from the array will be randomly selected
/* tsParticles.load(@params); */

tsParticles
  .load({
    id: "tsparticles",
    url: "presets/default.json",
  })
  .then((container) => {
    console.log("callback - tsparticles config loaded");
  })
  .catch((error) => {
    console.error(error);
  });

//or

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

//or

tsParticles.load({
  id: "tsparticles",
  options: [
    {
      /* options here */
    },
    {
      /* other options here */
    },
  ],
});
//random object

tsParticles.load({
  id: "tsparticles",
  options: [
    {
      /* options here */
    },
    {
      /* other options here */
    },
  ],
  index: 1,
}); //the second one
// Important! If the index is not in range 0...<array.length, the index will be ignored.

// after initialization this can be used.

/* tsParticles.setOnClickHandler(@callback); */

/* this will be fired from all particles loaded */

tsParticles.setOnClickHandler((event, particles) => {
  /* custom on click handler */
});

// now you can control the animations too, it's possible to pause and resume the animations
// these methods don't change the config so you're safe with all your configurations
// domItem(0) returns the first tsParticles instance loaded in the dom
const particles = tsParticles.item(0);

// play will start the animations, if the move is not enabled it won't enable it, it just updates the frame
particles.play();

// pause will stop the animations
particles.pause();
```

---

## Official components for some of the most used frameworks

### Angular

### `@tsparticles/angular`

[![npm](https://img.shields.io/npm/v/@tsparticles/angular?style=for-the-badge)](https://www.npmjs.com/package/@tsparticles/angular) [![npm](https://img.shields.io/npm/dm/@tsparticles/angular?style=for-the-badge)](https://www.npmjs.com/package/@tsparticles/angular)

Instructions available [here](https://github.com/tsparticles/tsparticles/tree/main/wrappers/angular#readme)

### Astro

### `@tsparticles/astro`

[![npm](https://img.shields.io/npm/v/@tsparticles/astro?style=for-the-badge)](https://www.npmjs.com/package/@tsparticles/astro) [![npm](https://img.shields.io/npm/dm/@tsparticles/astro?style=for-the-badge)](https://www.npmjs.com/package/@tsparticles/astro)

Instructions available [here](https://github.com/tsparticles/tsparticles/tree/main/wrappers/astro#readme)

### Ember.js

### `@tsparticles/ember`

[![npm](https://img.shields.io/npm/v/@tsparticles/ember?style=for-the-badge)](https://www.npmjs.com/package/@tsparticles/ember) [![npm](https://img.shields.io/npm/dm/@tsparticles/ember?style=for-the-badge)](https://www.npmjs.com/package/@tsparticles/ember)

Instructions available [here](https://github.com/tsparticles/tsparticles/tree/main/wrappers/ember#readme)

### Inferno

### `@tsparticles/inferno`

[![npm](https://img.shields.io/npm/v/@tsparticles/inferno?style=for-the-badge)](https://www.npmjs.com/package/@tsparticles/inferno) [![npm](https://img.shields.io/npm/dm/@tsparticles/inferno?style=for-the-badge)](https://www.npmjs.com/package/@tsparticles/inferno)

Instructions available [here](https://github.com/tsparticles/tsparticles/tree/main/wrappers/inferno#readme)

### jQuery

### `@tsparticles/jquery`

[![npm](https://img.shields.io/npm/v/@tsparticles/jquery?style=for-the-badge)](https://www.npmjs.com/package/@tsparticles/jquery) [![npm](https://img.shields.io/npm/dm/@tsparticles/jquery?style=for-the-badge)](https://www.npmjs.com/package/@tsparticles/jquery)

Instructions available [here](https://github.com/tsparticles/tsparticles/tree/main/wrappers/jquery#readme)

### Preact

### `@tsparticles/preact`

[![npm](https://img.shields.io/npm/v/@tsparticles/preact?style=for-the-badge)](https://www.npmjs.com/package/@tsparticles/preact) [![npm](https://img.shields.io/npm/dm/@tsparticles/preact?style=for-the-badge)](https://www.npmjs.com/package/@tsparticles/preact)

Instructions available [here](https://github.com/tsparticles/tsparticles/tree/main/wrappers/preact#readme)

### Qwik

### `@tsparticles/qwik`

[![npm](https://img.shields.io/npm/v/@tsparticles/qwik?style=for-the-badge)](https://www.npmjs.com/package/@tsparticles/qwik) [![npm](https://img.shields.io/npm/dm/@tsparticles/qwik?style=for-the-badge)](https://www.npmjs.com/package/@tsparticles/qwik)

Instructions available [here](https://github.com/tsparticles/tsparticles/tree/main/wrappers/qwik#readme)

### ReactJS

### `@tsparticles/nextjs`

[![npm](https://img.shields.io/npm/v/@tsparticles/nextjs?style=for-the-badge)](https://www.npmjs.com/package/@tsparticles/nextjs) [![npm](https://img.shields.io/npm/dm/@tsparticles/nextjs?style=for-the-badge)](https://www.npmjs.com/package/@tsparticles/nextjs)

Instructions available [here](https://github.com/tsparticles/tsparticles/tree/main/wrappers/nextjs#readme)

### `@tsparticles/react`

[![npm](https://img.shields.io/npm/v/@tsparticles/react?style=for-the-badge)](https://www.npmjs.com/package/@tsparticles/react) [![npm](https://img.shields.io/npm/dm/@tsparticles/react?style=for-the-badge)](https://www.npmjs.com/package/@tsparticles/react)

Instructions available [here](https://github.com/tsparticles/tsparticles/tree/main/wrappers/react#readme)

### RiotJS

### `@tsparticles/riot`

[![npm](https://img.shields.io/npm/v/@tsparticles/riot?style=for-the-badge)](https://www.npmjs.com/package/@tsparticles/riot) [![npm](https://img.shields.io/npm/dm/@tsparticles/riot?style=for-the-badge)](https://www.npmjs.com/package/@tsparticles/riot)

Instructions available [here](https://github.com/tsparticles/tsparticles/tree/main/wrappers/riot#readme)

### SolidJS

### `@tsparticles/solid`

[![npm](https://img.shields.io/npm/v/@tsparticles/solid?style=for-the-badge)](https://www.npmjs.com/package/@tsparticles/solid) [![npm](https://img.shields.io/npm/dm/@tsparticles/solid?style=for-the-badge)](https://www.npmjs.com/package/@tsparticles/solid)

Instructions available [here](https://github.com/tsparticles/tsparticles/tree/main/wrappers/solid#readme)

### Svelte

### `@tsparticles/svelte`

[![npm](https://img.shields.io/npm/v/@tsparticles/svelte?style=for-the-badge)](https://www.npmjs.com/package/@tsparticles/svelte) [![npm downloads](https://img.shields.io/npm/dm/@tsparticles/svelte?style=for-the-badge)](https://www.npmjs.com/package/@tsparticles/svelte)

Instructions available [here](https://github.com/tsparticles/tsparticles/tree/main/wrappers/svelte#readme)

### VueJS 2.x

### `@tsparticles/nuxt2`

[![npm](https://img.shields.io/npm/v/@tsparticles/nuxt2?style=for-the-badge)](https://www.npmjs.com/package/@tsparticles/nuxt2) [![npm](https://img.shields.io/npm/dm/@tsparticles/nuxt2?style=for-the-badge)](https://www.npmjs.com/package/@tsparticles/nuxt2)

Instructions available [here](https://github.com/tsparticles/tsparticles/tree/main/wrappers/nuxt2#readme)

### `@tsparticles/vue2`

[![npm](https://img.shields.io/npm/v/@tsparticles/vue2?style=for-the-badge)](https://www.npmjs.com/package/@tsparticles/vue2) [![npm](https://img.shields.io/npm/dm/@tsparticles/vue2?style=for-the-badge)](https://www.npmjs.com/package/@tsparticles/vue2)

Instructions available [here](https://github.com/tsparticles/tsparticles/tree/main/wrappers/vue2#readme)

### VueJS 3.x

### `@tsparticles/nuxt3`

[![npm](https://img.shields.io/npm/v/@tsparticles/nuxt3?style=for-the-badge)](https://www.npmjs.com/package/@tsparticles/nuxt3) [![npm](https://img.shields.io/npm/dm/@tsparticles/nuxt3?style=for-the-badge)](https://www.npmjs.com/package/@tsparticles/nuxt3)

Instructions available [here](https://github.com/tsparticles/tsparticles/tree/main/wrappers/nuxt3#readme)

### `@tsparticles/nuxt4`

[![npm](https://img.shields.io/npm/v/@tsparticles/nuxt4?style=for-the-badge)](https://www.npmjs.com/package/@tsparticles/nuxt4) [![npm](https://img.shields.io/npm/dm/@tsparticles/nuxt4?style=for-the-badge)](https://www.npmjs.com/package/@tsparticles/nuxt4)

Instructions available [here](https://github.com/tsparticles/tsparticles/tree/main/wrappers/nuxt4#readme)

### `@tsparticles/vue3`

[![npm](https://img.shields.io/npm/v/@tsparticles/vue3?style=for-the-badge)](https://www.npmjs.com/package/@tsparticles/vue3) [![npm](https://img.shields.io/npm/dm/@tsparticles/vue3?style=for-the-badge)](https://www.npmjs.com/package/@tsparticles/vue3)

Instructions available [here](https://github.com/tsparticles/tsparticles/tree/main/wrappers/vue3#readme)

### Web Components

### `@tsparticles/webcomponents`

[![npm](https://img.shields.io/npm/v/@tsparticles/webcomponents?style=for-the-badge)](https://www.npmjs.com/package/@tsparticles/webcomponents) [![npm](https://img.shields.io/npm/dm/@tsparticles/webcomponents?style=for-the-badge)](https://www.npmjs.com/package/@tsparticles/webcomponents)

Instructions available [here](https://github.com/tsparticles/tsparticles/tree/main/wrappers/webcomponents#readme)

### WordPress

### `@tsparticles/wordpress`

[![npm](https://img.shields.io/npm/v/@tsparticles/wordpress?style=for-the-badge)](https://www.npmjs.com/package/@tsparticles/wordpress) [![npm](https://img.shields.io/npm/dm/@tsparticles/wordpress?style=for-the-badge)](https://www.npmjs.com/package/@tsparticles/wordpress) [![WordPress Plugin Downloads](https://img.shields.io/wordpress/plugin/dw/@tsparticles/block?style=for-the-badge)](https://wordpress.org/plugins/tsparticles-block/) [![WordPress Plugin Active Installs](https://img.shields.io/wordpress/plugin/installs/tsparticles-block?style=for-the-badge)](https://wordpress.org/plugins/tsparticles-block/)

The plugin page hosted on WordPress.org can be
found [here](https://wordpress.org/plugins/tsparticles-block/#description)

### Elementor

Actually, an official tsParticles plugin isn't existing, but I have a collaboration with
the `Premium Addons for Elementor` plugin collection.

---

## Presets

There are some presets ready to be used in [this repository](https://github.com/tsparticles/presets), and they also have a bundle file that contains everything
needed to run.

### Ambient

[![jsDelivr](https://data.jsdelivr.com/v1/package/npm/@tsparticles/preset-ambient/badge)](https://www.jsdelivr.com/package/npm/@tsparticles/preset-ambient) [![npmjs](https://badge.fury.io/js/@tsparticles/preset-ambient.svg)](https://www.npmjs.com/package/@tsparticles/preset-ambient) [![npmjs](https://img.shields.io/npm/dt/@tsparticles/preset-ambient)](https://www.npmjs.com/package/@tsparticles/preset-ambient)

This preset loads ambient circles on a dark background.

[![demo](https://github.com/tsparticles/presets/raw/main/presets/ambient/images/sample.png)](https://particles.js.org/samples/presets/ambient)

You can find the instructions [here](https://github.com/tsparticles/presets/tree/main/presets/ambient#readme)

### Big Circles

[![jsDelivr](https://data.jsdelivr.com/v1/package/npm/@tsparticles/preset-big-circles/badge)](https://www.jsdelivr.com/package/npm/@tsparticles/preset-big-circles) [![npmjs](https://badge.fury.io/js/@tsparticles/preset-big-circles.svg)](https://www.npmjs.com/package/@tsparticles/preset-big-circles) [![npmjs](https://img.shields.io/npm/dt/@tsparticles/preset-big-circles)](https://www.npmjs.com/package/@tsparticles/preset-big-circles)

This preset loads big colored circles moving upwards on a white background.

[![demo](https://github.com/tsparticles/presets/raw/main/presets/bigCircles/images/sample.png)](https://particles.js.org/samples/presets/bigCircles)

You can find the instructions [here](https://github.com/tsparticles/presets/tree/main/presets/bigCircles#readme)

### Bubbles

[![jsDelivr](https://data.jsdelivr.com/v1/package/npm/@tsparticles/preset-bubbles/badge)](https://www.jsdelivr.com/package/npm/tsparticles) [![npmjs](https://badge.fury.io/js/@tsparticles/preset-bubbles.svg)](https://www.npmjs.com/package/@tsparticles/preset-bubbles) [![npmjs](https://img.shields.io/npm/dt/@tsparticles/preset-bubbles)](https://www.npmjs.com/package/@tsparticles/preset-bubbles)

This preset loads colored bubbles coming from the bottom of the screen on a white background.

[![demo](https://github.com/tsparticles/presets/raw/main/presets/bubbles/images/sample.png)](https://particles.js.org/samples/presets/bubbles)

You can find the instructions [here](https://github.com/tsparticles/presets/tree/main/presets/bubbles#readme)

### Confetti

[![jsDelivr](https://data.jsdelivr.com/v1/package/npm/@tsparticles/preset-confetti/badge)](https://www.jsdelivr.com/package/npm/@tsparticles/preset-confetti) [![npmjs](https://badge.fury.io/js/@tsparticles/preset-confetti.svg)](https://www.npmjs.com/package/@tsparticles/preset-confetti) [![npmjs](https://img.shields.io/npm/dt/@tsparticles/preset-confetti)](https://www.npmjs.com/package/@tsparticles/preset-confetti)

This preset loads white and red confetti launched from the screen center on a transparent background.

[![demo](https://github.com/tsparticles/presets/raw/main/presets/confetti/images/sample.png)](https://particles.js.org/samples/presets/confetti)

You can find the instructions [here](https://github.com/tsparticles/presets/tree/main/presets/confetti#readme)

### Confetti Cannon

[![jsDelivr](https://data.jsdelivr.com/v1/package/npm/@tsparticles/preset-confetti-cannon/badge)](https://www.jsdelivr.com/package/npm/@tsparticles/preset-confetti-cannon) [![npmjs](https://badge.fury.io/js/@tsparticles/preset-confetti-cannon.svg)](https://www.npmjs.com/package/@tsparticles/preset-confetti-cannon) [![npmjs](https://img.shields.io/npm/dt/@tsparticles/preset-confetti-cannon)](https://www.npmjs.com/package/@tsparticles/preset-confetti-cannon)

This preset loads confetti launched from a draggable cannon.

[![demo](https://github.com/tsparticles/presets/raw/main/presets/confettiCannon/images/sample.png)](https://particles.js.org/samples/presets/confettiCannon)

You can find the instructions [here](https://github.com/tsparticles/presets/tree/main/presets/confettiCannon#readme)

### Confetti Explosions

[![jsDelivr](https://data.jsdelivr.com/v1/package/npm/@tsparticles/preset-confetti-explosions/badge)](https://www.jsdelivr.com/package/npm/@tsparticles/preset-confetti-explosions) [![npmjs](https://badge.fury.io/js/@tsparticles/preset-confetti-explosions.svg)](https://www.npmjs.com/package/@tsparticles/preset-confetti-explosions) [![npmjs](https://img.shields.io/npm/dt/@tsparticles/preset-confetti-explosions)](https://www.npmjs.com/package/@tsparticles/preset-confetti-explosions)

This preset loads confetti bursts at multiple points on the screen.

[![demo](https://github.com/tsparticles/presets/raw/main/presets/confettiExplosions/images/sample.png)](https://particles.js.org/samples/presets/confettiExplosions)

You can find the instructions [here](https://github.com/tsparticles/presets/tree/main/presets/confettiExplosions#readme)

### Confetti Falling

[![jsDelivr](https://data.jsdelivr.com/v1/package/npm/@tsparticles/preset-confetti-falling/badge)](https://www.jsdelivr.com/package/npm/@tsparticles/preset-confetti-falling) [![npmjs](https://badge.fury.io/js/@tsparticles/preset-confetti-falling.svg)](https://www.npmjs.com/package/@tsparticles/preset-confetti-falling) [![npmjs](https://img.shields.io/npm/dt/@tsparticles/preset-confetti-falling)](https://www.npmjs.com/package/@tsparticles/preset-confetti-falling)

This preset loads slowly falling confetti particles.

[![demo](https://github.com/tsparticles/presets/raw/main/presets/confettiFalling/images/sample.png)](https://particles.js.org/samples/presets/confettiFalling)

You can find the instructions [here](https://github.com/tsparticles/presets/tree/main/presets/confettiFalling#readme)

### Confetti Parade

[![jsDelivr](https://data.jsdelivr.com/v1/package/npm/@tsparticles/preset-confetti-parade/badge)](https://www.jsdelivr.com/package/npm/@tsparticles/preset-confetti-parade) [![npmjs](https://badge.fury.io/js/@tsparticles/preset-confetti-parade.svg)](https://www.npmjs.com/package/@tsparticles/preset-confetti-parade) [![npmjs](https://img.shields.io/npm/dt/@tsparticles/preset-confetti-parade)](https://www.npmjs.com/package/@tsparticles/preset-confetti-parade)

This preset loads confetti moving horizontally across the screen like a parade.

[![demo](https://github.com/tsparticles/presets/raw/main/presets/confettiParade/images/sample.png)](https://particles.js.org/samples/presets/confettiParade)

You can find the instructions [here](https://github.com/tsparticles/presets/tree/main/presets/confettiParade#readme)

### Party

[![jsDelivr](https://data.jsdelivr.com/v1/package/npm/@tsparticles/preset-party/badge)](https://www.jsdelivr.com/package/npm/@tsparticles/preset-party) [![npmjs](https://badge.fury.io/js/@tsparticles/preset-party.svg)](https://www.npmjs.com/package/@tsparticles/preset-party) [![npmjs](https://img.shields.io/npm/dt/@tsparticles/preset-party)](https://www.npmjs.com/package/@tsparticles/preset-party)

This preset creates an animated confetti-like celebration effect.

[![demo](https://github.com/tsparticles/presets/raw/main/presets/party/images/sample.png)](https://particles.js.org/samples/presets/party)

You can find the instructions [here](https://github.com/tsparticles/presets/tree/main/presets/party#readme)

### Fire

[![jsDelivr](https://data.jsdelivr.com/v1/package/npm/@tsparticles/preset-fire/badge)](https://www.jsdelivr.com/package/npm/@tsparticles/preset-fire) [![npmjs](https://badge.fury.io/js/@tsparticles/preset-fire.svg)](https://www.npmjs.com/package/@tsparticles/preset-fire) [![npmjs](https://img.shields.io/npm/dt/@tsparticles/preset-fire)](https://www.npmjs.com/package/@tsparticles/preset-fire)

This preset loads a faded red to a black background with particles colored like fire and ash sparks.

[![demo](https://github.com/tsparticles/presets/raw/main/presets/fire/images/sample.png)](https://particles.js.org/samples/presets/fire)

You can find the instructions [here](https://github.com/tsparticles/presets/tree/main/presets/fire#readme)

### Firefly

[![jsDelivr](https://data.jsdelivr.com/v1/package/npm/@tsparticles/preset-firefly/badge)](https://www.jsdelivr.com/package/npm/@tsparticles/preset-firefly) [![npmjs](https://badge.fury.io/js/@tsparticles/preset-firefly.svg)](https://www.npmjs.com/package/@tsparticles/preset-firefly) [![npmjs](https://img.shields.io/npm/dt/@tsparticles/preset-firefly)](https://www.npmjs.com/package/@tsparticles/preset-firefly)

This preset loads a mouse trail made with small fading particles like little fireflies.

[![demo](https://github.com/tsparticles/presets/raw/main/presets/firefly/images/sample.png)](https://particles.js.org/samples/presets/firefly)

You can find the instructions [here](https://github.com/tsparticles/presets/tree/main/presets/firefly#readme)

### Fireworks

[![jsDelivr](https://data.jsdelivr.com/v1/package/npm/@tsparticles/preset-fireworks/badge)](https://www.jsdelivr.com/package/npm/@tsparticles/preset-fireworks) [![npmjs](https://badge.fury.io/js/@tsparticles/preset-fireworks.svg)](https://www.npmjs.com/package/@tsparticles/preset-fireworks) [![npmjs](https://img.shields.io/npm/dt/@tsparticles/preset-fireworks)](https://www.npmjs.com/package/@tsparticles/preset-fireworks)

This preset loads a beautiful fireworks effect.

[![demo](https://github.com/tsparticles/presets/raw/main/presets/fireworks/images/sample.png)](https://particles.js.org/samples/presets/fireworks)

You can find the instructions [here](https://github.com/tsparticles/presets/tree/main/presets/fireworks#readme)

### Hyperspace

[![jsDelivr](https://data.jsdelivr.com/v1/package/npm/@tsparticles/preset-hyperspace/badge)](https://www.jsdelivr.com/package/npm/@tsparticles/preset-hyperspace) [![npmjs](https://badge.fury.io/js/@tsparticles/preset-hyperspace.svg)](https://www.npmjs.com/package/@tsparticles/preset-hyperspace) [![npmjs](https://img.shields.io/npm/dt/@tsparticles/preset-hyperspace)](https://www.npmjs.com/package/@tsparticles/preset-hyperspace)

This preset loads a hyperspace tunnel effect with fast-moving particles.

[![demo](https://github.com/tsparticles/presets/raw/main/presets/hyperspace/images/sample.png)](https://particles.js.org/samples/presets/hyperspace)

You can find the instructions [here](https://github.com/tsparticles/presets/tree/main/presets/hyperspace#readme)

### Fountain

[![jsDelivr](https://data.jsdelivr.com/v1/package/npm/@tsparticles/preset-fountain/badge)](https://www.jsdelivr.com/package/npm/@tsparticles/preset-fountain) [![npmjs](https://badge.fury.io/js/@tsparticles/preset-fountain.svg)](https://www.npmjs.com/package/@tsparticles/preset-fountain) [![npmjs](https://img.shields.io/npm/dt/@tsparticles/preset-fountain)](https://www.npmjs.com/package/@tsparticles/preset-fountain)

[![demo](https://github.com/tsparticles/presets/raw/main/presets/fountain/images/sample.png)](https://particles.js.org/samples/presets/fountain)

You can find the instructions [here](https://github.com/tsparticles/presets/tree/main/presets/fountain#readme)

### Links

[![jsDelivr](https://data.jsdelivr.com/v1/package/npm/@tsparticles/preset-links/badge)](https://www.jsdelivr.com/package/npm/@tsparticles/preset-links) [![npmjs](https://badge.fury.io/js/@tsparticles/preset-links.svg)](https://www.npmjs.com/package/@tsparticles/preset-links) [![npmjs](https://img.shields.io/npm/dt/@tsparticles/preset-links)](https://www.npmjs.com/package/@tsparticles/preset-links)

[![demo](https://github.com/tsparticles/presets/raw/main/presets/links/images/sample.png)](https://particles.js.org/samples/presets/links)

You can find the instructions [here](https://github.com/tsparticles/presets/tree/main/presets/links#readme)

### Sea Anemone

[![jsDelivr](https://data.jsdelivr.com/v1/package/npm/@tsparticles/preset-sea-anemone/badge)](https://www.jsdelivr.com/package/npm/@tsparticles/preset-sea-anemone) [![npmjs](https://badge.fury.io/js/@tsparticles/preset-sea-anemone.svg)](https://www.npmjs.com/package/@tsparticles/preset-sea-anemone) [![npmjs](https://img.shields.io/npm/dt/@tsparticles/preset-sea-anemone)](https://www.npmjs.com/package/@tsparticles/preset-sea-anemone)

[![demo](https://github.com/tsparticles/presets/raw/main/presets/seaAnemone/images/sample.png)](https://particles.js.org/samples/presets/seaAnemone)

You can find the instructions [here](https://github.com/tsparticles/presets/tree/main/presets/seaAnemone#readme)

### Snow

[![jsDelivr](https://data.jsdelivr.com/v1/package/npm/@tsparticles/preset-snow/badge)](https://www.jsdelivr.com/package/npm/@tsparticles/preset-snow) [![npmjs](https://badge.fury.io/js/@tsparticles/preset-snow.svg)](https://www.npmjs.com/package/@tsparticles/preset-snow) [![npmjs](https://img.shields.io/npm/dt/@tsparticles/preset-snow)](https://www.npmjs.com/package/@tsparticles/preset-snow)

[![demo](https://github.com/tsparticles/presets/raw/main/presets/snow/images/sample.png)](https://particles.js.org/samples/presets/snow)

You can find the instructions [here](https://github.com/tsparticles/presets/tree/main/presets/snow#readme)

### Squares

[![jsDelivr](https://data.jsdelivr.com/v1/package/npm/@tsparticles/preset-squares/badge)](https://www.jsdelivr.com/package/npm/@tsparticles/preset-squares) [![npmjs](https://badge.fury.io/js/@tsparticles/preset-squares.svg)](https://www.npmjs.com/package/@tsparticles/preset-squares) [![npmjs](https://img.shields.io/npm/dt/@tsparticles/preset-squares)](https://www.npmjs.com/package/@tsparticles/preset-squares)

[![demo](https://github.com/tsparticles/presets/raw/main/presets/squares/images/sample.png)](https://particles.js.org/samples/presets/squares)

You can find the instructions [here](https://github.com/tsparticles/presets/tree/main/presets/squares#readme)

### Stars

[![jsDelivr](https://data.jsdelivr.com/v1/package/npm/@tsparticles/preset-stars/badge)](https://www.jsdelivr.com/package/npm/@tsparticles/preset-stars) [![npmjs](https://badge.fury.io/js/@tsparticles/preset-stars.svg)](https://www.npmjs.com/package/@tsparticles/preset-stars) [![npmjs](https://img.shields.io/npm/dt/@tsparticles/preset-stars)](https://www.npmjs.com/package/@tsparticles/preset-stars)

[![demo](https://github.com/tsparticles/presets/raw/main/presets/stars/images/sample.png)](https://particles.js.org/samples/presets/stars)

You can find the instructions [here](https://github.com/tsparticles/presets/tree/main/presets/stars#readme)

### Triangles

[![jsDelivr](https://data.jsdelivr.com/v1/package/npm/@tsparticles/preset-triangles/badge?style=for-the-badge)](https://www.jsdelivr.com/package/npm/@tsparticles/preset-triangles) [![npmjs](https://badge.fury.io/js/@tsparticles/preset-triangles.svg)](https://www.npmjs.com/package/@tsparticles/preset-triangles) [![npmjs](https://img.shields.io/npm/dt/@tsparticles/preset-triangles)](https://www.npmjs.com/package/@tsparticles/preset-triangles)

[![demo](https://github.com/tsparticles/presets/raw/main/presets/triangles/images/sample.png)](https://particles.js.org/samples/presets/triangles)

You can find the instructions [here](https://github.com/tsparticles/presets/tree/main/presets/triangles#readme)

---

## Templates and Resources

You can find some tsParticles related templates [here](https://github.com/tsparticles/templates). The templates are
created for *Vanilla Javascript*, *ReactJS*, *VueJS*, *Angular*, *SvelteJS*, and other frameworks.

The templates will vary, new ones can be created or older ones updated with the latest features or changed to a better
style. Check them out once in a while.

If you created some good design with *tsParticles* feel free to submit a pull request with your cool template, you'll be
credited as the template author!

[https://github.com/tsparticles/templates](https://github.com/tsparticles/templates)

---

## ***Demo / Generator***

[https://particles.js.org/samples](https://particles.js.org/samples)

[![Particles demo](https://particles.js.org/images/demo2.png?v=1.39.1)](https://particles.js.org/samples)

---

## ***Video Tutorials***

You can find all video tutorials on the website here: [https://particles.js.org/video.html](https://particles.js.org/video.html)

*More videos are coming soon! Check every day if there are some new contents.*

---

### Characters as particles

[![Particles chars demo](https://media.giphy.com/media/JsssOXz72bM6jGEZ0s/giphy.gif)](https://particles.js.org/samples/#chars)

---

### Polygon mask

[![tsParticles Polygon Mask demo](https://media.giphy.com/media/lNRfiSgaMFbL4FMhW6/giphy.gif)](https://particles.js.org/samples/#polygonMask)

---

### Animated stars

[![Particles NASA demo](https://media.giphy.com/media/cLqGsnh7FKRVMgPIWE/giphy.gif)](https://particles.js.org/samples/#nasa)

---

### Nyan cat flying on scrolling stars

[![Particles Nyan Cat demo](https://media.giphy.com/media/LpX2oNc9ZMgIhIXQL9/giphy.gif)](https://particles.js.org/samples/#nyancat2)

---

### Snow particles

[![tsParticles Snow demo](https://media.giphy.com/media/gihwUFbmiubbkdzEMX/giphy.gif)](https://particles.js.org/samples/#snow)

---

### Background Mask particles

[![tsParticles Background Mask demo](https://media.giphy.com/media/dWraWgqInWFGWiOyRu/giphy.gif)](https://particles.js.org/samples/#background)

---

**particles.json**

You can find some config samples [here](https://particles.js.org/demos/presets/) 📖

---

## ***Options***

You can find all options
available [here](https://particles.js.org/docs/interfaces/tsParticles_Engine.Options_Interfaces_IOptions.IOptions.html)
📖

If you want a practical map with examples, check these markdown docs too:

- Root options: [https://github.com/tsparticles/tsparticles/blob/main/markdown/Options.md](https://github.com/tsparticles/tsparticles/blob/main/markdown/Options.md)
- Colors: [https://github.com/tsparticles/tsparticles/blob/main/markdown/Color.md](https://github.com/tsparticles/tsparticles/blob/main/markdown/Color.md)
- Container API: [https://github.com/tsparticles/tsparticles/blob/main/markdown/Container.md](https://github.com/tsparticles/tsparticles/blob/main/markdown/Container.md)

## Want to see it in action and try it?

I've created a tsParticles collection on [CodePen](https://codepen.io/collection/DPOage) 😮 or you can check out
my [profile](https://codepen.io/matteobruni)

Otherwise, there's the demo page link below.

[![tsParticles demo](https://media.giphy.com/media/fsVN1ZHksgBIXNIbr1/giphy.gif)](https://particles.js.org/samples/)

Want to see even more demos? Clone the repository on your computer and follow these instructions

```shell
$ pnpm i
$ pnpm run build
$ cd demo/vanilla
$ pnpm start
```

**Boom! 💥** [http://localhost:3000](http://localhost:3000) and you can check out other demos.

Note: `demo/wordpress` contains documentation only. The WordPress wrapper runs as a plugin inside a WordPress installation, not as a standalone demo app.

*If you are brave enough* you can switch to the `dev` branch for trying the features under development.

---

## Migrating from Particles.js

**tsParticles** has a package that makes this library 100% compatible with the *particles.js* configuration.

[![jsDelivr](https://data.jsdelivr.com/v1/package/npm/@tsparticles/pjs/badge?style=rounded)](https://www.jsdelivr.com/package/npm/@tsparticles/pjs) [![npmjs](https://badge.fury.io/js/@tsparticles/pjs.svg)](https://www.npmjs.com/package/@tsparticles/pjs) [![npm](https://img.shields.io/npm/dm/@tsparticles/pjs)](https://www.npmjs.com/package/@tsparticles/pjs)

Seriously, you just need to change the script from particles.js to the bundled compatibility package, et-voilà, **you're
ready** 🧙!

You can read more [**here**](https://dev.to/matteobruni/migrating-from-particles-js-to-tsparticles-2a6m)

Want to know 5 reasons to do the
switch? [Read here](https://dev.to/matteobruni/5-reasons-to-use-tsparticles-and-not-particles-js-1gbe)

*Below you can find all the information you need to install tsParticles and its new syntax.*

Migration quick guide in this repository:

- [https://github.com/tsparticles/tsparticles/blob/main/markdown/pjsMigration.md](https://github.com/tsparticles/tsparticles/blob/main/markdown/pjsMigration.md)

---

## Plugins/Customizations

tsParticles now supports some customizations 🥳.

**You can create your own plugins**

*Read more *[*here*](https://particles.js.org/docs/modules/Core_Interfaces_IPlugin.html)*...*

Practical customization guide (shape + preset examples):

- [https://github.com/tsparticles/tsparticles/blob/main/markdown/Plugins.md](https://github.com/tsparticles/tsparticles/blob/main/markdown/Plugins.md)

---

## Dependency Graph

```mermaid
flowchart TD

  subgraph core [Core]
    engine[tsParticles Engine]
    perlin-noise[Perlin Noise Lib]
    simplex-noise[Simplex Noise Lib]
    configs[tsParticles Configs]
  end

  subgraph bundle-basic [tsParticles Basic]

    subgraph basic-plugins [Plugins]
      plugin-move[Move]

      subgraph basic-plugins-colors [Colors]
        plugin-hex-color[Hex Color]
        plugin-hsl-color[HSL Color]
        plugin-rgb-color[RGB Color]
      end
    end

    subgraph basic-shapes [Shapes]
      shape-circle[Circle]
    end

    subgraph basic-updates [Updaters]
      updater-fill-color[Color]
      updater-opacity[Opacity]
      updater-out-modes[Out Modes]
      updater-size[Size]
    end

  end

  engine --> bundle-basic

  subgraph bundle-confetti [tsParticles Confetti]

    subgraph confetti-plugins [Plugins]
      plugin-emitters
      plugin-motion
    end

    subgraph confetti-shapes [Shapes]
      shape-cards
      shape-emoji
      shape-heart
      shape-image
      shape-polygon
      shape-square
      shape-star
    end

    subgraph confetti-updaters [Updaters]
      updater-life
      updater-roll
      updater-rotate
      updater-tilt
      updater-wobble
    end

  end

  bundle-basic --> bundle-confetti

  subgraph bundle-slim [tsParticles Slim]

    subgraph slim-interactions [Interactions]

      subgraph slim-interactions-external [Externals]
        interaction-external-attract[Attract]
        interaction-external-bounce[Bounce]
        interaction-external-bubble[Bubble]
        interaction-external-connect[Connect]
        interaction-external-grab[Grab]
        interaction-external-parallax[Parallax]
        interaction-external-pause[Pause]
        interaction-external-push[Push]
        interaction-external-remove[Remove]
        interaction-external-repulse[Repulse]
        interaction-external-slow[Slow]
      end

      subgraph slim-interactions-particles [Particles]
        interaction-particles-attract[Attract]
        interaction-particles-collisions[Collisions]
        interaction-particles-links[Links]
      end

    end

    subgraph slim-plugins [Plugins]
      plugin-interactivity[Interactivity]

      subgraph slim-plugins-easings [Easings]
        plugin-easing-quad[Quad]
      end

    end

    subgraph slim-shapes [Shapes]
      shape-emoji[Emoji]
      shape-image[Image]
      shape-line[Line]
      shape-polygon[Polygon]
      shape-square[Square]
      shape-star[Star]
    end

    subgraph slim-updaters [Updaters]
      updater-life[Life]
      updater-rotate[Rotate]
      updater-stroke-color[Stroke Color]
    end

  end

  bundle-basic --> bundle-slim

  subgraph bundle-fireworks [tsParticles Fireworks]

    subgraph fireworks-effects [Effects]
      effect-trail
    end

    subgraph fireworks-plugins [Plugins]
      plugin-emitters

      subgraph fireworks-plugin-emitters-shapes [Emitters Shapes]
        plugin-emitters-shape-square
      end

      plugin-sounds
    end

    subgraph fireworks-updaters [Updaters]
      updater-destroy
      updater-life
      updater-rotate
    end

  end

  bundle-basic --> bundle-fireworks

  subgraph bundle-full [tsParticles]

    subgraph full-interactions [Interactions]

      subgraph full-interactions-external [Externals]
        interaction-external-trail[Trail]
      end

    end

    subgraph full-plugins [Plugins]
      plugin-absorbers[Absorbers]
      plugin-emitters[Emitters]

      subgraph full-plugin-emitters-shapes [Emitters Shapes]
        plugin-emitters-shape-circle[Circle]
        plugin-emitters-shape-square[Square]
      end

    end

    subgraph full-shapes [Shapes]
      shape-text[Text]
    end

    subgraph full-updaters [Updaters]
      updater-destroy[Destroy]
      updater-roll[Roll]
      updater-tilt[Tilt]
      updater-twinkle[Twinkle]
      updater-wobble[Wobble]
    end

  end

  bundle-slim --> bundle-full

  subgraph bundle-all [tsParticles All]

    subgraph all-effects [Effects]
      effect-bubble[Bubble]
      effect-particles[Particles]
      effect-shadow[Shadow]
      effect-trail[Trail]
    end

    subgraph all-interactions [Interactions]
      subgraph all-interactions-external [External]
        interaction-external-particle[Particle]
        interaction-external-pop[Pop]
      end

      interaction-light[Light]

      subgraph all-interactions-particles [Particles]
        interaction-particles-repulse[Repulse]
      end
    end

    subgraph all-paths [Paths]
      path-branches[Branches]
      path-brownian[Brownian]
      path-curl-noise[Curl Noise]
      path-curves[Curves]
      path-fractal-noise[Fractal Noise]
      path-grid[Grid]
      path-levy[Levy]
      path-perlin-noise[Perlin Noise]
      path-polygon[Polygon]
      path-random[Random]
      path-simplex-noise[Simplex Noise]
      path-spiral[Spiral]
      path-svg[SVG]
      path-zig-zag[Zig Zag]
    end

    subgraph all-plugins [Plugins]
      plugin-background-mask[Background Mask]
      plugin-blend[Blend]
      plugin-canvas-mask[Canvas Mask]

      subgraph all-plugins-colors [Colors]
        plugin-hsv-color[HSV Color]
        plugin-hwb-color[HWB Color]
        plugin-lab-color[Lab Color]
        plugin-lch-color[Lch Color]
        plugin-named-color[Named Color]
        plugin-oklab-color[Oklab Color]
        plugin-oklch-color[Oklch Color]
      end

      subgraph all-plugins-easings [Easings]
        plugin-easing-back[Back]
        plugin-easing-bounce[Bounce]
        plugin-easing-circ[Circ]
        plugin-easing-cubic[Cubic]
        plugin-easing-elastic[Elastic]
        plugin-easing-expo[Expo]
        plugin-easing-gaussian[Gaussian]
        plugin-easing-linear[Linear]
        plugin-easing-quart[Quart]
        plugin-easing-quint[Quint]
        plugin-easing-sigmoid[Sigmoid]
        plugin-easing-sine[Sine]
        plugin-easing-smoothstep[Smoothstep]
      end

      subgraph all-plugin-emitters-shapes [Emitters Shapes]
        plugin-emitters-shape-canvas[Canvas]
        plugin-emitters-shape-path[Path]
        plugin-emitters-shape-polygon[Polygon]
      end

      subgraph all-plugins-exports [Exports]
        plugin-export-image[Image]
        plugin-export-json[JSON]
        plugin-export-video[Video]
      end

      plugin-infection[Infection]
      plugin-manual-particles[Manual Particles]
      plugin-motion[Motion]
      plugin-poisson-disc[Poisson Disc]
      plugin-polygon-mask[Polygon Mask]
      plugin-responsive[Responsive]
      plugin-sounds[Sounds]
      plugin-themes[Themes]
      plugin-trail[Trail]
      plugin-zoom[Zoom]
    end

    subgraph all-shapes [Shapes]
      shape-arrow[Arrow]
      shape-cards[Cards]
      shape-cog[Cog]
      shape-heart[Heart]
      shape-infinity[Infinity]
      shape-matrix[Matrix]
      shape-path[Path]
      shape-rounded-polygon[Rounded Polygon]
      shape-rounded-rect[Rounded Rect]
      shape-spiral[Spiral]
      shape-squircle[Squircle]
    end

    subgraph all-updaters [Updaters]
      updater-gradient[Gradient]
      updater-orbit[Orbit]
    end

    simplex-noise --> path-curl-noise
    perlin-noise --> path-perlin-noise
    simplex-noise --> path-simplex-noise

  end

  bundle-full --> bundle-all
```
