[= Become the :trophy: Ultimate Sponsor of SweetAlert2 and place your banner here (100K+ unique visitors per month) =]


A beautiful, responsive, customizable, accessible (WAI-ARIA) replacement for JavaScript's popup boxes. Zero dependencies.

See SweetAlert2 in action ↗

Build Status Coverage Status Version jsdelivr Support Donate

:moneybag: Get $100 in free credits with DigitalOcean!

:point_right: Upgrading from v10.x to v11.x? Read the release notes!
If you’re upgrading from v9.x, please upgrade from v9 to v10 first!
If you’re upgrading from v8.x, please upgrade from v8 to v9 first!
If you’re upgrading from v7.x, please upgrade from v7 to v8 first!
If you’re upgrading from v6.x, please upgrade from v6 to v7 first!

:point_right: Migrating from SweetAlert? SweetAlert 1.x to SweetAlert2 migration guide


npm install --save sweetalert2

Or grab from jsdelivr CDN :

<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>


<script src="sweetalert2/dist/sweetalert2.all.min.js"></script>

You can also include the stylesheet separately if desired:

<script src="sweetalert2/dist/sweetalert2.min.js"></script>
<link rel="stylesheet" href="sweetalert2/dist/sweetalert2.min.css">


// ES6 Modules or TypeScript
import Swal from 'sweetalert2'

// CommonJS
const Swal = require('sweetalert2')

Or with JS modules:

<link rel="stylesheet" href="sweetalert2/dist/sweetalert2.css">

<script type="module">
  import Swal from 'sweetalert2/src/sweetalert2.js'

It’s possible to import JS and CSS separately, e.g. if you need to customize styles:

import Swal from 'sweetalert2/dist/sweetalert2.js'

import 'sweetalert2/src/sweetalert2.scss'

Please note that TypeScript is well-supported, so you don’t have to install a third-party declaration file.


The most basic message:

Swal.fire('Hello world!')

A message signaling an error:

Swal.fire('Oops...', 'Something went wrong!', 'error')

Handling the result of SweetAlert2 modal:

  title: 'Are you sure?',
  text: 'You will not be able to recover this imaginary file!',
  icon: 'warning',
  showCancelButton: true,
  confirmButtonText: 'Yes, delete it!',
  cancelButtonText: 'No, keep it'
}).then((result) => {
  if (result.isConfirmed) {
      'Your imaginary file has been deleted.',
  // For more information about handling dismissals please visit
  // https://sweetalert2.github.io/#handling-dismissals
  } else if (result.dismiss === Swal.DismissReason.cancel) {
      'Your imaginary file is safe :)',

Go here to see the docs and more examples ↗

Browser compatibility


If you need IE11 and legacy Edge support, please use the previous major version.

Themes (sweetalert2-themes ↗)


Maintainability semantic-release

If you would like to contribute enhancements or fixes, please do the following:

  1. Fork the sweetalert2 repository and clone it locally.

  2. Make sure you have npm or yarn installed.

  3. When in the SweetAlert2 directory, run npm install or yarn install to install dependencies.

  4. To begin active development, run npm start or yarn start. This does several things for you:
    • Builds the dist folder
    • Serves sandbox.html @ http://localhost:8080/ (browser-sync ui: http://localhost:8081/)
    • Re-builds and re-loads as necessary when files change
  5. To run tests, run npm run cypress:open or yarn cypress:open

Big Thanks


For all questions related to sponsorship please contact me via email limon.monte@protonmail.com

Become a sponsorFlowCryptlife digitalCode RubikNDCHostBitvape
Halvin LainaTiago de Oliveira StutzSebaEBC

NSFW Sponsors

Sex Toy WoWFresh MaterialsJoy Love DollsSTEDMy Sex Toy Guide
Best Blowjob MachinesSTCDoctorClimax

Support and Donations

Has SweetAlert2 helped you create an amazing application? You can show your support via GitHub Sponsors

Alternative ways for donations (PayPal, cryptocurrencies, etc.) are listed here: https://sweetalert2.github.io/#donations

Hall of Donators :trophy: