Welcome to the curated list of Web Performance Optimization resources. This repository aims to gather the best tools, articles, blogs, books, and talks related to optimizing website performance. Whether you're a developer, designer, or performance enthusiast, you'll find valuable content here to supercharge your web projects.
Awesome WPO / Articles
? Awesome WPO / Blogs
Awesome WPO / Books
Awesome WPO / Docs
? Awesome WPO / Events
? Awesome WPO / Talks
Here's a quick overview of the categories covered in this collection:
Go to ARTICLES.md.
Go to BLOGS.
Best books about WPO
Because community matters!
They are categorized into content/MEETUPS.md.
They are categorized into content/TALKS.md.
872 100? Confess) - Uses PhantomJS to headlessly analyze web pages and generate manifests. 28533 9406? Lighthouse) - Auditing and performance metrics tool for Progressive Web Applications. 2205 382? YSlow) - YSlow analyzes web pages and suggests ways to improve their performance based on a set of rules for high-performance web pages. 35 3? Grunt-WebPageTest) - Grunt plugin for continuous measurement of WebPageTest. (Demo) 91 15? Grunt-yslow) - Grunt task for testing page performance using PhantomJS, a headless WebKit browser. 856 37? Grunt-perfbudget) - A Grunt.js task for enforcing a performance budget ? more on performance budgets). 2641 200? Web Tracing Framework) - Web Tracing Framework is a set of libraries, tools, and visualizers for the tracing and investigation of complex web applications 2469 280? Yandex.Tank) - An extensible open-source load testing tool for advanced Linux users which is especially good as a part of an automated load testing suite. 1865 23? Speed Racer) - Collect performance metrics for your library/application using Chrome headless. 9 6? Node-yslowjs) - YSlow.js on Node.js is a simple Node.js wrapper for programmatically running phantomjs yslow.js. 3105 126? PSI) - PageSpeed Insights for Node.js - with reporting. 4474 180? Bundlesize) - Keep your bundle size in check. 3846 101? source-map-explorer) - Analyze and debug bundle space usage through source maps. 12605 489? Webpack bundle analyzer) - webpack plugin and CLI utility that represents bundle content as a convenient interactive zoomable treemap. 4 1? Lasso-analyzer) - analyze and Visualise project bundles created by Lasso. 1413 108? Compression webpack plugin) - Prepare compressed versions of assets to serve them with Content-Encoding. 583 20? BundleStats) - Generate bundle report(bundle size, assets, modules, packages) and compare the results between different builds 573 21? CSS-perf) - Completely unscientific way of testing CSS performance. Most of these tests will revolve around methodologies and techniques for determining effective CSS architecture. Put another way, I want to know what works best given a particular comparison of CSS strategies.A set of tools for creating test cases and comparing different implementations in JavaScript.
Temporarily out, follow this issue for updates: https://github.com/jsperf/jsperf.com/issues/537 166 15? JSlitmus) - JSLitmus is a lightweight tool for creating ad-hoc JavaScript benchmark tests. 563 37? Matcha) - Matcha allows you to design experiments that will measure the performance of your code. It is recommended that each bench focus on a specific point of impact in your application. 1496 113? Timing.js) - Timing.js is a small set of helpers for working with the Navigation Timing API to identify where your application is spending its time. Useful as a standalone script, DevTools Snippet, or bookmarklet. 8780 1201? Stats.js) - This class provides a simple info box that will help you monitor your code performance. 1 0? PerfTests) - Performance tests of JavaScript inheritance models. 2094 105? Memory-stats.js) - minimal monitor for JS Heap Size via performance memory. 53 4? PHPench) - PHPench creates a graphical output for a PHP benchmark. Plot the runtime of any function in realtime with GnuPlot and create an image out of the result. 13 1? php-bench) - Benchmark and profile PHP code blocks whilst measuring the performance footprint. 3790 126? PerfMap) - A bookmarklet to create a frontend performance heatmap of resources loaded in the browser using the Resource Timing API. 559 52? DOM Monster) - A cross-platform, cross-browser bookmarklet that will analyze the DOM & other features of the page you're on, and give you its bill of health. 1143 86? Performance-Bookmarklet) - Analyze the current page through the Resource Timing API, Navigation Timing API and User-Timing - Sort of a light live WebPageTest. As ? Chrome Extension and ? Firefox Add-on under the name Performance-Analyser.A content delivery network or content distribution network (CDN) is a large distributed system of servers deployed in multiple data centers across the Internet. The goal of a CDN is to serve content to end-users with high availability and high performance. See a large list of CDN in Wikipedia.
5705 2060? jsDelivr) - Similar to Google Hosted Libraries, jsDelivr is an open-source CDN that allows developers to host their own projects and anyone to link to our hosted files on their sites.To find useful more information for you to make the right choice between paid CDNs, please visit CDNPlanet.
82 6? Gulp-google-cdn) - Replaces script references with Google CDN ones. 131 7? Browser Calories) - The easiest way to measure your performance budget. 35 2? AtBuild) - JavaScript code generation tool that lets you write JavaScript that outputs JavaScript. Good for unrolling loops and writing libraries that compile away the runtime 2550 169? Glue) - Glue is a simple command-line tool to generate sprites: 19 3? Pitomba-spriter) - Spriter is a simple and flexible dynamic sprite generator for CSS, using Python. It can process CSS both synchronous and asynchronous as it provides classes to be used in your Python code and also a watcher that listens to your filesystem and changes CSS and sprite as soon as a static is changed. 1133 92? Grunt-spritesmith) - Grunt task for converting a set of images into a sprite sheet and corresponding CSS variables. 15 1? Gulp-sprite) - gulp task for creating an image sprite and the corresponding style sheets for Gulp. 334 45? Gulp-svg-sprites) - gulp task for creating SVG sprites. 2 1? SvgToCSS) - Optimizes and renders SVG files in CSS / Sass sprites. 36 6? Assetgraph-sprite) - Assetgraph transform for auto-generating sprites based on the CSS dependency graph. 481 72? Sprity) - A modular image sprite generator with a lot of features: supports retina sprites, supports different output formats, generates sprites and proper style files out of a directory of images, etc... 621 76? Sprite Factory) - The sprite factory is a ruby library that can be used to generate CSS sprites. It combines individual image files from a directory into a single unified sprite image and creates an appropriate CSS style sheet for use in your web application.How to remove all this unnecessary data and give you a file without degrading quality.
83 18? Grunt-smushit) - Grunt plugin to remove unnecessary bytes of PNG and JPG using Yahoo Smushit. 33 2? Gulp-smushit) - Gulp plugin to optimize PNG and JPG using Yahoo Smushit. Made on top of smosh. 5594 257? Imagemin) - Minify images seamlessly with Node.js. 29505 1302? Sharp) - The typical use case for this high-speed Node.js module is to convert large images of many formats to smaller, web-friendly JPEG, PNG, and WebP images of varying dimensions. 6966 616? Gm) - GraphicsMagick and ImageMagick for Node.js. 12734 1178? Exexif) - Pure elixir library to extract tiff and exif metadata from JPEG files. 1215 175? Grunt-contrib-imagemin) - Minify PNG and JPEG images for Grunt. 1905 156? Gulp-imagemin) - Minify PNG, JPEG, GIF and SVG images with imagemin for Gulp. 118 16? Grunt-WebP) - Convert your images to WebP format. 220 18? Gulp-WebP) - Convert images to WebP for Gulp. 479 18? Grunt-imageoptim) - Make ImageOptim, ImageAlpha, and JPEGmini part of your automated build process. 3461 127? ImageOptim-CLI) - Automates ImageOptim, ImageAlpha, and JPEGmini for Mac to make batch optimization of images part of your automated build process. 21 3? Tapnesh-CLI) - Tapnesh is a CLI tool that will optimize all your images in parallel easily and efficiently! 5495 417? mozjpeg) - Improved JPEG encoder. 1608 120? Jpegoptim) - Utility to optimize/compress JPEG files. 3447 329? ZopfliPNG) - A command-line program to optimize PNG images. 835 75? Leanify) - Lightweight lossless file minifier/optimizer. 944 24? Optimizt) - CLI image optimization tool. It can compress PNG, JPEG, GIF and SVG lossy and lossless and create WebP versions for raster images. 938 158? lazyload) - Lazyload images, iframes, widgets with a standalone JavaScript lazyloader ~1kb 7466 448? lozad.js) - Highly performant, light ~0.9kb, and configurable lazy loader in pure JS with no dependencies for responsive images, iframes, and more 4156 348? HeadJS)- The only script in your HEAD. for Responsive Design, Feature Detections, and Resource Loading. 69 9? Defer.js) - Async Everything: Make the meat of your pages load faster with this JS morsel. 5512 246? InstantClick) - InstantClick makes the following links in your site instant. 509 32? JIT) - A JIT (Just In Time) plugin loader for Grunt. The load time of Grunt does not slow down even if there are many plugins. 2257 142? Phantomas) - PhantomJS-based web performance metrics collector and monitoring tool. 25 4? Bench) - Using Phantomas (a PhantomJS-backed client performance metrics scrapper). Benchmark a page, store results in MongoDB, and display results via the built-in server. 104 15? Keepfast) - Tool to monitor indicators related to the performance of a web page. 284 25? Grunt-phantomas) - Grunt plugin wrapping phantomas to measure frontend performance. 0 0? Demo)). 1641 173? WebPageTest API Wrapper for Node.js) - WebPageTest API Wrapper is an npm package that wraps WebPageTest API for Node.js as a module and a command-line tool. 542 73? Django-htmlmin) - django-html in an HTML minifier for Python with full support for HTML 5. It supports Django, Flask and any other Python web framework. It also provides a command-line tool that can be used for static sites or deployment scripts. 4962 576? HTMLMinifier) - HTMLMinifier is a highly configurable, well-tested, Javascript-based HTML minifier, with lint-like capabilities. 424 68? Grunt-contrib-htmlmin) - A grunt plugin to minify HTML that uses HTMLMinifier. 726 57? Gulp-htmlmin) - A gulp plugin to minify HTML that uses HTMLMinifier. 35 6? Grunt-htmlcompressor) - Grunt plugin for HTML compression, using htmlcompressor. 12 7? HTML_minifier) - Ruby wrapper for kangax html-minifier. 35 7? HTML_press) - Ruby gem for compressing html, that removes all whitespace junk, and leaves only HTML. 31 6? Koa HTML Minifier) - Middleware that minifies your HTML responses using html-minifier. It uses html-minifier's default options which are all turned off by default, so you have to set the options otherwise it's not going to do anything. 162 18? Minimize) - Minimize is an HTML minifier based on the node-htmlparser,currently, HTML minifier is only usable server-side. Client-side minification will be added in a future release. 133 86? Html-minifier) - A simple Windows command-line tool to minify your HTML, Razor views & Web Forms views 3016 665? YUI Compressor) - JavaScript compressor which, in addition to removing comments and white-spaces, obfuscates local variables using the smallest possible variable name. This obfuscation is safe, even when using constructs such as 'eval' or 'with' (although the compression is not optimal is those cases) Compared to jsmin, the average savings is around 20%. 13204 1246? UglifyJS2) - UglifyJS is a JavaScript parser, minifier, compressor or beautifier toolkit, written in JavaScript. 3768 186? CSSO) - CSS minimizer unlike others. In addition to usual minification techniques, it can perform structural optimization of CSS files, resulting in smaller file size compared to other minifiers. 76 36? CSSmin.js) - cssmin.js is a JavaScript port of YUICompressor's CSS minifier. 812 170? Grunt-contrib-concat) - A Grunt plugin to concatenate files. 1481 348? Grunt-contrib-uglify) - A Grunt plugin to concatenate and minify JavaScript files. 4178 323? Clean-css) - A fast, efficient, and well-tested CSS minifier for node.js. 2811 601? Django-compressor) - Compresses linked and inline JavaScript or CSS into a single cached file. 1520 371? Django-pipeline) - Pipeline is an asset packaging library for Django, providing both CSS and JavaScript concatenation and compression, built-in JavaScript template support, and optional data-URI image and font embedding. 750 150? JShrink) - JShrink is a PHP class that minifies JavaScript so that it can be delivered to the client quicker. 1052 81? CSSshrink) - Because CSS is ospon the critical path to rendering pages. It must be small! Or else! 28 4? Grunt-cssshrink) - This is just a grunt wrapper for CSS Shrink. 22 0? Gulp-cssshrink) - Shrinks CSS files using cssshrink for Gulp. 6 1? Prettyugly) - Uglify (strip spaces) or prettify (add consistent spaces) CSS code. 795 138? Grunt-contrib-cssmin) - CSS Minifier for Grunt. 3825 174? Grunt-uncss) - A grunt task for removing unused CSS from your projects. 938 40? Gulp-uncss) - A gulp task for removing unused CSS from your projects. 1620 64? uCSS) - uCSS is made for crawling (large) sites to find unused CSS selectors, but not remove unused CSS. 343 21? HTTPinvoke)- A no-dependencies HTTP client library for browsers and Node.js with a promise-based or Node.js-style callback-based API to progress events, text, and binary file upload and download, partial response body, request and response headers, status code. 10052 372? Critical) - Extract & Inline Critical-path CSS in HTML pages (alpha). 12 1? Csscolormin) - Utility that minifies CSS colors, example: min("white"); // minifies to "#fff". 17585 1731? Lazysizes) - High-performance lazy loader for images (responsive and normal), iframes, and scripts, that detects any visibility changes triggered through user interaction, CSS or JavaScript without configuration. 1631 45? TMI) - TMI (Too Many Images) - discover your image weight on the web. 21150 1390? SVGO) - SVGO is a Nodejs-based tool for optimizing SVG vector graphics files. 433 40? Grunt-svgmin) - Minify SVG using SVGO for Grunt. 1634 93? SVG Cleaner) - SVG Cleaner could help you to clean up your SVG files from unnecessary data. It has a lot of options for cleanup and optimization, works in batch mode, and provides threaded processing on multicore processors. 431 201? Polymer Bundler) - Polymer-bundler is a library for packaging project assets for production to minimize network round-trips. 100 25? Gulp-vulcanize) - Concatenate a set of Web Components into one file that use Vulcanize. 992 156? HTTPerf) - httperf is a tool for measuring web server performance. It provides a flexible facility for generating various HTTP workloads and for measuring server performance. 179 23? Autoperf) - Autoperf is a ruby driver for httperf, designed to help you automate load and performance testing of any web application - for a single endpoint, or through log replay. 13 4? HTTPerf.rb) - Simple Ruby interface for httperf, written in Ruby. 5 0? PHP-httperf) - PHP Port of HTTPerf.rb. 25 2? HTTPerf.js) - JS Port of HTTPerf.rb. 11 8? HTTPerf.py) - Python Port of HTTPerf.rb. 4 0? Gohttperf) - Go Port of HTTPerf.rb. 38207 2955? wrk) - A HTTP benchmarking tool (with optional Lua scripting for request generation, response
processing, and custom reporting) 6455 631? beeswithmachineguns) - A utility for arming (creating) many bees (micro EC2 instances) to attack (load test) targets (web applications). 244 22? WebP-detect) - WebP with Accept negotiation.will-change CSS property which allows an author to declare ahead-of-time what properties are likely to change in the future, so the UA can set up the appropriate optimizations some time before they’re needed. This way, when the actual change happens, the page updates in a snappy manner. 958 25? iamakulov/awesome-webpack-perf) - A curated list of webpack tools for web performance 32197 3561? bayandin/awesome-awesomeness).338979 28117? sindresorhus/awesome). 823 61? imteekay/web-performance-research) - Research in Web PerformanceFor contributing, open an issue and/or a pull request.
8403 563? davidsonfellipe/awesome-wpo)