Web Performance Optimization
Contents
Analyzers
Uses PhantomJS to headlessly analyze web pages and generate manifests.
YSlow analyzes web pages and suggests ways to improve their performance based on a set of rules for high-performance web pages.
Grunt plugin for continuous measurement of WebPageTest. (Demo)
Grunt task for testing page performance using PhantomJS, a headless WebKit browser.
A Grunt.js task for enforcing a performance budget (more on performance budgets).
Web Tracing Framework is a set of libraries, tools, and visualizers for the tracing and investigation of complex web applications
An extensible open-source load testing tool for advanced Linux users which is especially good as a part of an automated load testing suite.
Collect performance metrics for your library/application using Chrome headless.
Core Web Vitals
Audits Core Web Vitals in lab conditions (see Analyzers).
Small library to accurately measure Core Web Vitals (LCP, FID, CLS, INP, TTFB) in the browser.
Run Lighthouse in CI to enforce Core Web Vitals budgets on every commit.
Analyzers - API
Bundle Analyzer
Keep your bundle size in check.
Analyze and debug bundle space usage through source maps.
webpack plugin and CLI utility that represents bundle content as a convenient interactive zoomable treemap.
analyze and Visualise project bundles created by Lasso.
Prepare compressed versions of assets to serve them with Content-Encoding.
Generate bundle report(bundle size, assets, modules, packages) and compare the results between different builds
Benchmark - JavaScript
JSLitmus is a lightweight tool for creating ad-hoc JavaScript benchmark tests.
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.
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.
This class provides a simple info box that will help you monitor your code performance.
Performance tests of JavaScript inheritance models.
minimal monitor for JS Heap Size via performance memory.
Benchmark - PHP
Bookmarklets
A bookmarklet to create a frontend performance heatmap of resources loaded in the browser using the Resource Timing API.
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.
Analyze the current page through the Resource Timing API, Navigation Timing API and User-Timing - Sort of a light live WebPageTest. As Firefox Add-on under the name Performance-Analyser.
Generators
JavaScript code generation tool that lets you write JavaScript that outputs JavaScript. Good for unrolling loops and writing libraries that compile away the runtime
Glue is a simple command-line tool to generate sprites:
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.
Grunt task for converting a set of images into a sprite sheet and corresponding CSS variables.
gulp task for creating an image sprite and the corresponding style sheets for Gulp.
gulp task for creating SVG sprites.
Optimizes and renders SVG files in CSS / Sass sprites.
Assetgraph transform for auto-generating sprites based on the CSS dependency graph.
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...
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.
Image Optimizers
Grunt plugin to remove unnecessary bytes of PNG and JPG using Yahoo Smushit.
Gulp plugin to optimize PNG and JPG using Yahoo Smushit. Made on top of smosh.
Minify images seamlessly with Node.js.
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.
GraphicsMagick and ImageMagick for Node.js.
Pure elixir library to extract tiff and exif metadata from JPEG files.
Minify PNG and JPEG images for Grunt.
Minify PNG, JPEG, GIF and SVG images with imagemin for Gulp.
Convert your images to WebP format.
Convert images to WebP for Gulp.
Make ImageOptim, ImageAlpha, and JPEGmini part of your automated build process.
Automates ImageOptim, ImageAlpha, and JPEGmini for Mac to make batch optimization of images part of your automated build process.
Tapnesh is a CLI tool that will optimize all your images in parallel easily and efficiently!
Improved JPEG encoder.
Utility to optimize/compress JPEG files.
A command-line program to optimize PNG images.
Lightweight lossless file minifier/optimizer.
CLI image optimization tool. It can compress PNG, JPEG, GIF and SVG lossy and lossless, and also create AVIF and WebP versions for raster images.
Lazyloaders
Loaders
The only script in your HEAD. for Responsive Design, Feature Detections, and Resource Loading.
Async Everything: Make the meat of your pages load faster with this JS morsel.
InstantClick makes the following links in your site instant.
A JIT (Just In Time) plugin loader for Grunt. The load time of Grunt does not slow down even if there are many plugins.
Metrics Monitor
PhantomJS-based web performance metrics collector and monitoring tool.
Using Phantomas (a PhantomJS-backed client performance metrics scrapper). Benchmark a page, store results in MongoDB, and display results via the built-in server.
Tool to monitor indicators related to the performance of a web page.
Grunt plugin wrapping phantomas to measure frontend performance.
Runtime Browser Performance regression suite (Demo).
Metrics Monitor - API
Minifiers - HTML
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.
HTMLMinifier is a highly configurable, well-tested, Javascript-based HTML minifier, with lint-like capabilities.
A grunt plugin to minify HTML that uses HTMLMinifier.
A gulp plugin to minify HTML that uses HTMLMinifier.
Grunt plugin for HTML compression, using htmlcompressor.
Ruby wrapper for kangax html-minifier.
Ruby gem for compressing html, that removes all whitespace junk, and leaves only HTML.
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.
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.
A simple Windows command-line tool to minify your HTML, Razor views & Web Forms views
Minifiers - JS & CSS
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%.
UglifyJS is a JavaScript parser, minifier, compressor or beautifier toolkit, written in JavaScript.
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.
A Grunt plugin to concatenate files.
A Grunt plugin to concatenate and minify JavaScript files.
A fast, efficient, and well-tested CSS minifier for node.js.
Compresses linked and inline JavaScript or CSS into a single cached file.
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.
JShrink is a PHP class that minifies JavaScript so that it can be delivered to the client quicker.
Because CSS is ospon the critical path to rendering pages. It must be small! Or else!
This is just a grunt wrapper for CSS Shrink.
Shrinks CSS files using cssshrink for Gulp.
Uglify (strip spaces) or prettify (add consistent spaces) CSS code.
CSS Minifier for Grunt.
A grunt task for removing unused CSS from your projects.
A gulp task for removing unused CSS from your projects.
cssmin.js is a JavaScript port of YUICompressor's CSS minifier.
Miscellaneous
uCSS is made for crawling (large) sites to find unused CSS selectors, but not remove unused CSS.
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.
Extract & Inline Critical-path CSS in HTML pages (alpha).
Utility that minifies CSS colors, example: min("white"); // minifies to "#fff".
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.
TMI (Too Many Images) - discover your image weight on the web.
SVG
SVGO is a Nodejs-based tool for optimizing SVG vector graphics files.
Minify SVG using SVGO for Grunt.
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.
Web Components
Polymer Bundler
Web server Benchmarks
httperf is a tool for measuring web server performance. It provides a flexible facility for generating various HTTP workloads and for measuring server performance.
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.
Simple Ruby interface for httperf, written in Ruby.
PHP Port of HTTPerf.rb.
JS Port of HTTPerf.rb.
Python Port of HTTPerf.rb.
Go Port of HTTPerf.rb.
A HTTP benchmarking tool (with optional Lua scripting for request generation, response processing, and custom reporting)
A utility for arming (creating) many bees (micro EC2 instances) to attack (load test) targets (web applications).