Skip to main content Accessibility Feedback

Vanilla JS Libraries

These are hand-selected libraries that I would actually use or have used on a project.

As a result, the list is a lot shorter than some of the bigger “library repositories” you’ll find on the web. Ideally, the quality is better.

Note: Libraries with a (By Chris) next to them are ones that I wrote or manage.

🔥 Black Friday Sale! Today through Monday, save 50% on every pocket guide, video course, and enrollment in the Vanilla JS Academy. If you buy a pocket guide bundle or join Academy, you'll also get $436 in free bonus gifts. This sale ends Monday, so don't wait!

Build Tools

Hide & Show Content

  • (By Chris) Houdini. A progressively enhanced expand-and-collapse and accordion widget.
  • (By Chris) Tabby. Lightweight toggle tabs.
  • A11Y Modal Dialog. An accessible modal dialogue script.
  • ScrollReveal. Easy scroll animations.
  • (By Chris) Gumshoe. A framework agnostic scrollspy script.
  • (By Chris) Astro. A responsive, mobile-first navigation menu.
  • (By Chris) Drop. Mobile-friendly dropdown menus.
  • Offside.js. Simple off-canvas navigation menus.

Design & Layout

  • (By Chris) Reef. A simple, lightweight alternative to React, Vue, and other bloated frameworks.
  • (By Chris) Sticky Footer. Dynamic, responsive sticky footers.
  • Vanilla FitText.js. Create scalable headlines that fill the width of a parent element.
  • Rellax. A lightweight parallax library.
  • DOMPurify. An HTML cross-site scripting sanitizer.

User Experience

  • (By Chris) Form Saver. Let users save, reuse, and delete form data.
  • (By Chris) X-Ray. Let users toggle password visibility.

Photos & Video

  • PhotoSwipe. An amazing photo gallery plugin.
  • Swiper. Rich touch-supported sliders.
  • FluidVids. Add true responsive support to your video embeds.
  • Media Player. A tiny, totally cross browser, accessible, fully customizable media player.

Touch, Gesture, and Keyboard Support

  • Hammer. A complex touch gesture support library.
  • Sortable. Create sortable, interactive lists.
  • Egg.js. Add hidden easter eggs to your site with keystroke combinations.

Feature Detection & Progressive Enhancement

  • features.js. A lightweight feature detection library.
  • loadJS. Asynchronously load JavaScript files.
  • loadCSS. Asynchronously load CSS files.


  • (By Chris) bin. A tiny localStorage and sessionStorage library.
  • (By Chris) jar. A tiny helper library that makes working with cookies easier.
  • (By Chris) atomic. Easily make Ajax/HTTP requests.
  • (By Chris) events. A tiny event delegation library.
  • (By Chris) bouncer. A lightweight form validation script that augments native HTML5 form validation elements and attributes.
  • Dinero.js. A library for working with monetary values in JavaScript.
  • Day.js. A 2kB alternative to Moment.js with the same modern API. Parse, validate, manipulate, and display dates and times in JavaScript.

Get Daily Developer Tips

I send out a short email each weekday with code snippets, tools, techniques, and interesting stuff from around the web. Join 12,600+ daily subscribers.