A beautiful, responsive, highly customizable and accessible (WAI-ARIA) replacement for JavaScript's popup boxes. Zero dependencies.
JavaScript CSS HTML
Latest commit 1768c35 Feb 21, 2018



Build Status Version jsdelivr gzip size Average time to resolve an issue Gitter Support me on Patreon PayPal Donate Backers on Open Collective Sponsors on Open Collective

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

See SweetAlert2 in action β†—

πŸ‘‰ Upgrading from v6.x to v7.x? Read the release notes!

πŸ‘‰ Migrating from SweetAlert? SweetAlert 1.x to SweetAlert2 migration guide


npm install --save sweetalert2


bower install --save sweetalert2

Or download from CDN: unpkg.com/sweetalert2 | jsdelivr.net/npm/sweetalert2


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

<!-- Include a polyfill for ES6 Promises (optional) for IE11, UC Browser and Android browser support -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/core-js/2.4.1/core.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')

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


The most basic message:

swal('Hello world!')

A message signaling an error:

swal('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!',
  type: 'warning',
  showCancelButton: true,
  confirmButtonText: 'Yes, delete it!',
  cancelButtonText: 'No, keep it'
}).then((result) => {
  if (result.value) {
      '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

IE11* Edge Chrome Firefox Safari Opera Android Browser* UC Browser*
βœ… βœ… βœ… βœ… βœ… βœ… βœ… βœ…

* ES6 Promise polyfill should be included, see usage example.

Note that SweetAlert2 does not and will not provide support or functionality of any kind on IE10 and lower.

Related projects

Related community projects


@toverux @birjolaxew @samturrell @acupajoe @zenflow @patrickhlauke


This project exists thanks to all the people who contribute.


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. Start gulp watcher gulp watch to automatically serve, build, and minify the SCSS and JS-files.

  5. Ensure that you didn't break any of tests:


Has SweetAlert2 helped you create an amazing application? You can show your support by making a donation in one of several ways:

Hall of Donators πŸ†


Thank you to all our backers! πŸ™


If you support this project by becoming a sponsor, your logo will show up here with a link to your website.