Awesome JavaScript
A collection of awesome browser-side JavaScript libraries, resources and shiny things.
- Awesome JavaScript
- Other Awesome Lists
- Contributing
Package Managers
Host the javascript libraries and provide tools for fetching and packaging them.
- Bower - A package manager for the web.
- component - Client package management for building better web applications.
- spm - Brand new static package manager.
- browserify - Browser-side require() the node.js way.
- jam - A package manager using a browser-focused and RequireJS compatible repository.
- jspm - Frictionless browser package management.
- Ender - The no-library library.
- volo - Create front end projects from templates, add dependencies, and automate the resulting projects.
- Duo - Next-generation package manager that blends the best ideas from Component, Browserify and Go to make organizing and writing front-end code quick and painless.
Loaders
Module or loading system for JavaScript.
- RequireJS - A file and module loader for JavaScript.
- SeaJS - A Module Loader for the Web.
- HeadJS - The only script in your HEAD.
- curl - A small, fast, extensible module loader that handles AMD, CommonJS Modules/1.1, CSS, HTML/text, and legacy scripts.
- lazyload - Tiny, dependency-free async JavaScript and CSS loader.
- script.js - Asyncronous JavaScript loader and dependency manager.
- systemjs - AMD, CJS & ES6 spec-compliant module loader.
- webpack - Module loader made for big projects. Supports AMD, CommonJS, and more.
Testing Frameworks
Frameworks
- mocha - Simple, flexible, fun javascript test framework for node.js & the browser.
- jasmine - DOM-less simple JavaScript testing framework.
- qunit - An easy-to-use JavaScript Unit Testing framework.
- jest - Painless Javascript Unit Testing.
- prova - Node & Browser test runner based on Tape and Browserify
Assertion
- chai - BDD / TDD assertion framework for node.js and the browser that can be paired with any testing framework.
- Sinon.JS - Test spies, stubs and mocks for JavaScript.
- expect.js - Minimalistic BDD-style assertions for Node.JS and the browser.
Coverage
- istanbul - Yet another JS code coverage tool.
- blanket - A simple code coverage library for javascript. Designed to be easy to install and use, for both browser and nodejs.
- JSCover - JSCover is a tool that measures code coverage for JavaScript programs.
Runner
- phantomjs - Scriptable Headless WebKit.
- slimerjs - A PhantomJS-like tool running Gecko.
- casperjs - Navigation scripting & testing utility for PhantomJS and SlimerJS.
- zombie - Insanely fast, full-stack, headless browser testing using node.js.
- totoro - A simple and stable cross-browser testing tool.
- karma - Spectacular Test Runner for JavaScript.
- nightwatch - UI automated testing framework based on node.js and selenium webdriver.
- intern - A next-generation code testing stack for JavaScript.
QA Tools
- JSHint - JSHint is a tool that helps to detect errors and potential problems in your JavaScript code.
- jscs - JavaScript Code Style checker.
- jsfmt - For formatting, searching, and rewriting JavaScript.
- jsinspect - Detect copy-pasted and structurally similar code.
- buddy.js - Magic number detection for JavaScript.
- ESLint - A fully pluggable tool for identifying and reporting on patterns in JavaScript.
MVC Frameworks and Libraries
- angular.js - HTML enhanced for web apps.
- backbone - Give your JS App some Backbone with Models, Views, Collections, and Events.
- batman.js - The best JavaScript framework for Rails developers.
- ember.js - A JavaScript framework for creating ambitious web applications.
- meteor - An ultra-simple, database-everywhere, data-on-the-wire, pure-Javascript web framework.
- ractive - Next-generation DOM manipulation.
- vue - Intuitive, fast & composable MVVM for building interactive interfaces.
- knockout - Knockout makes it easier to create rich, responsive UIs with JavaScript.
- spine - Lightweight MVC library for building JavaScript applications.
- espresso.js - A minimal javascript library for crafting user interfaces.
- canjs - Can do JS, better, faster, easier.
- react - A library for building user interfaces. It's declarative, efficient, and extremely flexible. Works with a Virtual DOM.
- thorax - Strengthening your Backbone.
- chaplin - An architecture for JavaScript applications using the Backbone.js library.
- marionette - A composite application library for Backbone.js that aims to simplify the construction of large scale JavaScript applications.
- ripple - A tiny foundation for building reactive views.
- rivets - Lightweight and powerful data binding + templating solution.
- derby - MVC framework making it easy to write realtime, collaborative applications that run in both Node.js and browsers.
- derby-awesome - A collection of awesome derby components
- way.js - Simple, lightweight, persistent two-way databinding.
- mithril.js - Mithril is a client-side MVC framework (Light-weight, Robust, Fast).
Non-MVC Frameworks
- famous - A JavaScript framework for everyone who wants to build beautiful experiences on any device.
Templating Engines
Templating engines allow you to perform string interpolation.
- mustache.js - Minimal templating with {{mustaches}} in JavaScript.
- handlebars.js - An extension to the Mustache templating language.
- hogan.js - A compiler for the Mustache templating language.
- doT - The fastest + concise javascript template engine for nodejs and browsers.
- dustjs - Asynchronous templates for the browser and node.js.
- eco - Embedded CoffeeScript templates.
- JavaScript-Templates - < 1KB lightweight, fast & powerful JavaScript templating engine with zero dependencies.
- t.js - A tiny javascript templating framework in ~400 bytes gzipped.
Data Visualization
Data visualization tools for the web.
- d3 - A JavaScript visualization library for HTML and SVG.
- metrics-graphics - A library optimized for concise, principled data graphics and layouts.
- three.js - JavaScript 3D library.
- Chart.js - Simple HTML5 Charts using the tag.
- paper.js - The Swiss Army Knife of Vector Graphics Scripting – Scriptographer ported to JavaScript and the browser, using HTML5 Canvas.
- fabric.js - Javascript Canvas Library, SVG-to-Canvas (& canvas-to-SVG) Parser.
- peity - Progressive bar, line and pie charts.
- raphael - JavaScript Vector Library.
- echarts - Enterprise Charts.
- vis - Dynamic, browser-based visualization library.
- two.js - A renderer agnostic two-dimensional drawing api for the web.
- g.raphael - Charts for Raphaël.
- sigma.js - A JavaScript library dedicated to graph drawing.
- arbor - A graph visualization library using web workers and jQuery.
- cubism - A D3 plugin for visualizing time series.
- dc.js - Multi-Dimensional charting built to work natively with crossfilter rendered with d3.js
- vega - A visualization grammar.
- envisionjs - Dynamic HTML5 visualization.
- rickshaw - JavaScript toolkit for creating interactive real-time graphs.
- flot - Attractive JavaScript charts for jQuery.
- morris.js - Pretty time-series line graphs.
- nvd3 - Build re-usable charts and chart components for d3.js
- svg.js - A lightweight library for manipulating and animating SVG.
- heatmap.js - JavaScript Library for HTML5 canvas based heatmaps.
- jquery.sparkline - A plugin for the jQuery javascript library to generate small sparkline charts directly in the browser.
- xCharts - A D3-based library for building custom charts and graphs.
- trianglify - Low poly style background generator with d3.js
- d3-cloud - Create word clouds in JavaScript.
- d4 - A friendly reusable charts DSL for D3.
- dimple.js - Easy charts for business analytics powered by d3
- chartist-js - Simple responsive charts.
- epoch - A general purpose real-time charting library.
- c3 - D3-based reusable chart library.
- BabylonJS - A framework for building 3D games with HTML 5 and WebGL.
There're also some great commercial libraries, like amchart and highchart.
Timeline
- TimelineJS - A Storytelling Timeline built in JavaScript.
- timesheet.js - JavaScript library for simple HTML5 & CSS3 time sheets.
Editors
- ace - Ace (Ajax.org Cloud9 Editor).
- CodeMirror - In-browser code editor.
- esprima - ECMAScript parsing infrastructure for multipurpose analysis.
- quill - A cross browser rich text editor with an API.
- medium-editor - Medium.com WYSIWYG editor clone.
- pen - enjoy live editing (+markdown).
- jquery-notebook - A simple, clean and elegant text editor. Inspired by the awesomeness of Medium.
- bootstrap-wysiwyg - Tiny bootstrap-compatible WYSIWYG rich text editor.
- ckeditor-releases - The best web text editor for everyone.
- editor - A markdown editor. still on development.
- EpicEditor - An embeddable JavaScript Markdown editor with split fullscreen editing, live previewing, automatic draft saving, offline support, and more.
- jsoneditor - A web-based tool to view, edit and format JSON.
- vim.js - JavaScript port of Vim with a persistent ~/.vimrc
- Squire - HTML5 rich text editor.
- TinyMCE - The JavaScript Rich Text editor.
Files
Libraries for working with files.
- Papa Parse - A powerful CSV library that supports parsing CSV files/strings and also exporting to CSV.
- jBinary - High-level I/O (loading, parsing, manipulating, serializing, saving) for binary files with declarative syntax for describing file types and data structures.
Functional Programming
Functional programming libraries to extend JavaScript’s capabilities.
- underscore - JavaScript's utility _ belt.
- lodash - A utility library delivering consistency, customization, performance, & extras.
- Sugar - A Javascript library for working with native objects.
- lazy.js - Like Underscore, but lazier.
- ramda - A practical functional library for Javascript programmers.
- mout - Modular JavaScript Utilities.
Reactive Programming
Reactive programming libraries to extend JavaScript’s capabilities.
- RxJs - The Reactive Extensions for JavaScript.
- Bacon - FRP (functional reactive programming) library for Javascript.
- Kefir - FRP library for JavaScript inspired by Bacon.js and RxJS with focus on high performance and low memory consumption.
Data Structure
Data structure libraries to build a more sophisticated application.
- immutable-js - Immutable Data Collections including Sequence, Range, Repeat, Map, OrderedMap, Set and a sparse Vector.
- mori - A library for using ClojureScript's persistent data structures and supporting API from the comfort of vanilla JavaScript.
- buckets - A complete, fully tested and documented data structure library written in JavaScript.
- hashmap - Simple hashmap implementation that supports any kind of keys.
Date
Date Libraries.
- moment - Parse, validate, manipulate, and display dates in javascript.
- moment-timezone - Timezone support for moment.js.
- jquery-timeago - A jQuery plugin that makes it easy to support automatically updating fuzzy timestamps (e.g. "4 minutes ago").
- timezone-js - Timezone-enabled JavaScript Date object. Uses Olson zoneinfo files for timezone data.
- date - Date() for humans.
- ms.js - Tiny milisecond conversion utility.
String
String Libraries.
- underscore.string - String manipulation extensions for Underscore.js javascript library.
- string.js - Extra JavaScript string methods.
- he - A robust HTML entity encoder/decoder written in JavaScript.
- multiline - Multiline strings in JavaScript.
- query-string - Parse and stringify URL query strings.
- URI.js - Javascript URL mutation library.
- jsurl - Lightweight URL manipulation with JavaScript.
- sprintf.js - A sprintf implementation.
Number
- Numeral-js - A javascript library for formatting and manipulating numbers.
- odometer - Smoothly transitions numbers with ease.
- accounting.js - A lightweight JavaScript library for number, money and currency formatting - fully localisable, zero dependencies.
- money.js - A tiny (1kb) javascript currency conversion library, for web & nodeJS.
Storage
- store.js - LocalStorage wrapper for all browsers without using cookies or flash. Uses localStorage, globalStorage, and userData behavior under the hood.
- localForage - Offline storage, improved. Wraps IndexedDB, WebSQL, or localStorage using a simple but powerful API.
- jStorage - jStorage is a simple key/value database to store data on browser side.
- cross-storage - Cross domain local storage, with permissions.
- basket.js - A script and resource loader for caching & loading scripts with localStorage.
- basil.js - The missing Javascript smart persistent layer.
- jquery-cookie - A simple, lightweight jQuery plugin for reading, writing and deleting cookies.
- Cookies - JavaScript Client-Side Cookie Manipulation Library.
Color
- randomColor - A color generator for JavaScript.
- chroma.js - JavaScript library for all kinds of color manipulations.
- color - JavaScript color conversion and manipulation library.
- colors - Smarter defaults for colors on the web.
- PleaseJS - JavaScript Library for creating random pleasing colors and color schemes.
- TinyColor - Fast, small color manipulation and conversion for JavaScript.
I18n And L10n
Localization (l10n) and internationalization (i18n) JavaScript libraries.
- i18next - internationalisation (i18n) with javascript the easy way.
- polyglot - tiny i18n helper library.
Class
- klass - A utility for creating expressive classes in JavaScript.
- augment - The world's smallest and fastest classical JavaScript inheritance pattern.
Control Flow
- async - Async utilities for node and the browser.
- q - A tool for making and composing asynchronous promises in JavaScript.
- step - An async control-flow library that makes stepping through logic easy.
- contra - Asynchronous flow control with a functional taste to it.
- Bluebird - fully featured promise library with focus on innovative features and performance.
- when - A solid, fast Promises/A+ and when() implementation, plus other async goodies.
Routing
- director - A tiny and isomorphic URL router for JavaScript.
- page.js - Micro client-side router inspired by the Express router (~1200 bytes).
- pathjs - Simple, lightweight routing for web browsers.
- crossroads - JavaScript Routes.
- davis.js - RESTful degradable JavaScript routing using pushState.
Security
- DOMPurify - A DOM-only, super-fast, uber-tolerant XSS sanitizer for HTML, MathML and SVG.
- js-xss - Sanitize untrusted HTML (to prevent XSS) with a configuration specified by a Whitelist.
Log
- log - Console.log with style.
- Conzole - A debug panel built in javascript that wraps javascript native console object methods and functionality in a panel displayed inside the page.
- console.log-wrapper - Log to the console in any browser with clarity.
- loglevel - Minimal lightweight logging for JavaScript, adding reliable log level methods to wrap any available console.log methods.
RegExp
Media
- Ion.Sound - Simple sounds on any web page
Voice Command
- annyang - A JavaScript library for adding voice commands to your site, using speech recognition.
- voix.js - A JavaScript library to add voice commands to your sites, apps or games.
API
- bottleneck - A powerful rate limiter that makes throttling easy.
- oauth-signature-js - JavaScript OAuth 1.0a signature generator for node and the browser.
Vision Detection
- tracking.js - A modern approach for Computer Vision on the web.
- ocrad.js - OCR in Javascript via Emscripten.
Code highlighting
- Highlight.js - Javascript syntax highlighter.
- PrismJS - Lightweight, robust, elegant syntax highlighting.
Loading Status
Libraries for indicate load status.
- NProgress - Slim progress bars for Ajax'y applications.
- Spin.js - A spinning activity indicator.
- progress.js - Create and manage progress bar for every objects on the page.
- pace - Automatically add a progress bar to your site.
- topbar - Tiny & beautiful site-wide progress indicator.
- nanobar - Very lighweight progress bars. No jQuery.
- PageLoadingEffects - Modern ways of revealing new content using SVG animations.
- SpinKit - A collection of loading indicators animated with CSS.
- Ladda - Buttons with built-in loading indicators.
- css-loaders - A collection of loading spinners animated with CSS.
Besides libraries, there're Collection on Codepen, and generators like Ajaxload, Preloaders and CSSLoad.
Validation
- Parsley.js - Validate your forms, frontend, without writing a single line of javascript.
- jquery-validation - jQuery Validation Plugin.
- validator.js - String validation and sanitization.
- validate.js - Lightweight JavaScript form validation library inspired by CodeIgniter.
- validatr - Cross Browser HTML5 Form Validation.
- BootstrapValidator - The best jQuery plugin to validate form fields. Designed to use with Bootstrap 3.
Keyboard Wrappers
- mousetrap - Simple library for handling keyboard shortcuts in Javascript.
- keymaster - A simple micro-library for defining and dispatching keyboard shortcuts.
- Keypress - A keyboard input capturing utility in which any key can be a modifier key.
- KeyboardJS - A JavaScript library for binding keyboard combos without the pain of key codes and key combo conflicts.
- jquery.hotkeys - jQuery Hotkeys lets you watch for keyboard events anywhere in your code supporting almost any key combination.
- jwerty - Awesome handling of keyboard events.
Tours And Guides
- intro.js - A better way for new feature introduction and step-by-step users guide for your website and project.
- shepherd - Guide your users through a tour of your app.
- bootstrap-tour - Quick and easy product tours with Twitter Bootstrap Popovers.
- tourist - Simple, flexible tours for your app.
- chardin.js - Simple overlay instructions for your apps.
- pageguide - An interactive guide for web page elements using jQuery and CSS3.
- hopscotch - A framework to make it easy for developers to add product tours to their pages.
- joyride - jQuery feature tour plugin.
Notifications
- messenger - Growl-style alerts and messages for your app.
- noty - jQuery notification plugin.
- pnotify - JavaScript notifications for Bootstrap, jQuery UI, and the Web Notifications Draft.
- toastr - Simple javascript toast notifications.
- humane-js - A simple, modern, browser notification system.
- smoke.js - Framework-agnostic styled alert system for javascript.
Sliders
- Swiper - Mobile touch slider and framework with hardware accelerated transitions.
- slick - The last carousel you'll ever need.
- FlexSlider - An awesome, fully responsive jQuery slider plugin.
- unslider - The simplest jQuery slider there is.
- colorbox - A light-weight, customizable lightbox plugin for jQuery.
- fancyBox - A tool that offers a nice and elegant way to add zooming functionality for images, html content and multi-media on your webpages.
- sly - JavaScript library for one-directional scrolling with item based navigation support.
- vegas - A jQuery plugin to add beautiful fullscreen backgrounds to your webpages. It even allows Slideshows.
- Sequence - CSS animation framework for creating responsive sliders, presentations, banners, and other step-based applications.
- baguetteBox.js - Simple and easy to use lightbox script written in pure JavaScript.
- reveal.js - A framework for easily creating beautiful presentations using HTML.
- PhotoSwipe - JavaScript image gallery for mobile and desktop, modular, framework independent.
Range Sliders
- Ion.RangeSlider - Powerful and easily customizable range slider with many options and skin support.
- jQRangeSlider - A javascript slider selector that supports dates.
- noUiSlider - A lightweight, highly customizable range slider without bloat.
- rangeslider.js - HTML5 input range slider element polyfill.
Form Widgets
Input
- typeahead.js - A fast and fully-featured autocomplete library.
- tag-it - A jQuery UI plugin to handle multi-tag fields as well as tag suggestions/autocomplete.
- At.js - Add Github like mentions autocomplete to your application.
- Placeholders.js - A JavaScript polyfill for the HTML5 placeholder attribute.
- fancyInput - Makes typing in input fields fun with CSS3 effects.
- jQuery-Tags-Input - Magically convert a simple text input into a cool tag list with this jQuery plugin.
- vanilla-masker - A pure javascript mask input.
Calendar
- pickadate.js - The mobile-friendly, responsive, and lightweight jQuery date & time input picker.
- bootstrap-datepicker - A datepicker for @twitter bootstrap forked from Stefan Petre's (of eyecon.ro), improvements by @eternicode.
- Pikaday - A refreshing JavaScript Datepicker — lightweight, no dependencies, modular CSS.
- fullcalendar - Full-sized drag & drop event calendar (jQuery plugin).
- rome - A customizable date (and time) picker. Dependency free, opt-in UI.
Select
- selectize.js - Selectize is the hybrid of a textbox and select box. It's jQuery based and it has autocomplete and native-feeling keyboard navigation; useful for tagging, contact lists, etc.
- select2 - a jQuery based replacement for select boxes. It supports searching, remote data sets, and infinite scrolling of results.
- chosen - A library for making long, unwieldy select boxes more friendly.
File Uploader
- jQuery-File-Upload - File Upload widget with multiple file selection, drag&drop support, progress bar, validation and preview images, audio and video for jQuery.
- dropzone - Dropzone is an easy to use drag'n'drop library. It supports image previews and shows nice progress bars.
- flow.js - A JavaScript library providing multiple simultaneous, stable, fault-tolerant and resumable/restartable file uploads via the HTML5 File API.
- fine-uploader - Multiple file upload plugin with progress-bar, drag-and-drop, direct-to-S3 uploading.
- FileAPI - A set of javascript tools for working with files. Multiupload, drag'n'drop and chunked file upload. Images: crop, resize and auto orientation by EXIF.
- plupload - A JavaScript API for dealing with file uploads it supports features like multiple file selection, file type filtering, request chunking, client side image scaling and it uses different runtimes to achieve this such as HTML 5, Silverlight and Flash.
Other
- form - jQuery Form Plugin.
- Garlic.js - Automatically persist your forms' text and select field values locally, until the form is submitted.
- Countable - A JavaScript function to add live paragraph-, word- and character-counting to an HTML element.
- card - Make your credit card form better in one line of code.
Tips
- tipsy - Facebook-style tooltips plugin for jQuery.
- opentip - An open source javascript tooltip based on the prototype framework.
- qTip2 - Pretty powerful tooltips.
- tooltipster - A jQuery tooltip plugin.
- simptip - A simple CSS tooltip made with Sass.
Modals and Popups
- Magnific-Popup - Light and responsive lightbox script with focus on performance.
- jquery-popbox - jQuery PopBox UI Element.
- jquery.avgrund.js - A jQuery plugin with new modal concept for popups.
- vex - A modern dialog library which is highly configurable and easy to style.
- bootstrap-modal - Extends the default Bootstrap Modal class. Responsive, stackable, ajax and more.
- css-modal - A modal built out of pure CSS.
Scroll
- scrollMonitor - A simple and fast API to monitor elements as you scroll.
- headroom - Give your pages some headroom. Hide your header until you need it.
- onepage-scroll - Create an Apple-like one page scroller website (iPhone 5S website) with One Page Scroll plugin.
- iscroll - iScroll is a high performance, small footprint, dependency free, multi-platform javascript scroller.
- skrollr - Stand-alone parallax scrolling library for mobile (Android + iOS) and desktop. No jQuery.
- parallax - Parallax Engine that reacts to the orientation of a smart device.
- stellar.js - Parallax scrolling made easy.
- plax - jQuery powered parallaxing.
- jparallax - jQuery plugin for creating interactive parallax effect.
- fullPage - A simple and easy to use plugin to create fullscreen scrolling websites (also known as single page websites).
Menu
- jQuery-menu-aim - jQuery plugin to fire events when user's cursor aims at particular dropdown menu items. For making responsive mega dropdowns like Amazon's.
Table/Grid
- jTable - A JQuery plugin to create AJAX based CRUD tables.
Gesture
- hammer.js - A javascript library for multi-touch gestures.
- touchemulator - Emulate touch input on your desktop.
Maps
- Leaflet - JavaScript library for mobile-friendly interactive maps.
- Cesium - Open Source WebGL virtual globe and map engine.
- gmaps - The easiest way to use Google Maps.
- polymaps - A free JavaScript library for making dynamic, interactive maps in modern web browsers.
- kartograph.js - Open source JavaScript renderer for Kartograph SVG maps.
- mapbox.js - Mapbox JavaScript API, a Leaflet Plugin.
- jqvmap - jQuery Vector Map Library.
Animations
- velocity - Accelerated JavaScript animation.
- jquery.transit - Super-smooth CSS3 transformations and transitions for jQuery.
- bounce.js - Create tasty CSS3 powered animations in no time.
- GreenSock-JS - High-performance HTML5 animations that work in all major browsers.
Image Processing
- lena.js - A Library for image processing with filters and util functions.
ES6
- es6features - Overview of ECMAScript 6 features.
- ECMAScript 6 compatibility table - Compatibility tables for all ECMAScript 6 features on a variety of environments.
- 6to5 - Turn ES6+ code into vanilla ES5 with no runtime.
- Traceur compiler - ES6 features > ES5. Includes classes, generators, promises, destructuring patterns, default parameters & more.
Misc
- echo - Lazy-loading images with data-* attributes.
- platform.js - A platform detection library that works on nearly all JavaScript platforms.
- json3 - A modern JSON implementation compatible with nearly all JavaScript platforms.
Other Awesome Lists
- emijrp/awesome-awesome
- bayandin/awesome-awesomeness
- sindresorhus/awesome
- jnv/list
- gianarb/angularjs
- peterkokot/awesome-dojo
- addyosmani/es6-tools
- ericdouglas/ES6-Learning
Contributing
Contributions welcome! Read the contribution guidelines first.