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.

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.

Micro-Libraries

  • (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

Hate the complexity of modern front‑end web development? I send out a short email each weekday on how to build a simpler, more resilient web. Join 12,800+ others.