Web Performance Optimization
Contents
Analyzers
Analyzes web pages and suggests ways to improve their performance based on a set of rules for high-performance web pages.
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).
Libraries, tools, and visualizers for tracing and investigating 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.
Collect performance metrics for your library/application using Chrome headless.
Core Web Vitals
Analyzers - API
Bundle Analyzer
webpack plugin and CLI utility that represents bundle content as a convenient interactive zoomable treemap.
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 - CSS
Benchmark - JavaScript
Lets you design experiments that measure the performance of your code. Each bench should focus on a specific point of impact in your application.
Small 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.
Benchmark - PHP
Bookmarklets
A bookmarklet to create a frontend performance heatmap of resources loaded in the browser using the Resource Timing API.
CDN
Extensions
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.
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.
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...
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.
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.
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.
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.
A JIT (Just In Time) plugin loader for Grunt. The load time of Grunt does not slow down even if there are many plugins.
An open-source (MIT license) project supported by Getify Solutions. The core purpose of LABjs is to be an all-purpose, on-demand JavaScript loader, capable of loading any JavaScript resource, from any location, into any page, at any time.
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.
Metrics Monitor - API
Minifiers
HTML minifier for Python with full support for HTML 5. Supports Django, Flask, and any other Python web framework, plus a command-line tool for static sites or deployment scripts.
Highly configurable, well-tested, JavaScript-based HTML minifier with lint-like capabilities.
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.
HTML minifier based on node-htmlparser; currently server-side only. Client-side minification is planned.
A simple Windows command-line tool to minify your HTML, Razor views & Web Forms views.
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 and minify JavaScript files.
Compresses linked and inline JavaScript or CSS into a single cached file.
Because CSS is ospon the critical path to rendering pages. It must be small! Or else!
UglifyJS is a JavaScript parser, minifier, compressor or beautifier toolkit, written in JavaScript.
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.
Miscellaneous
Crawls large sites to find unused CSS selectors (does 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.
Utility that minifies CSS colors, example: min("white"); // minifies to "#fff".
SVG
Web Components
Polymer
Web server Benchmarks
Measures web server performance with flexible generation of HTTP workloads and server metrics.
Ruby driver for httperf to automate load and performance testing for a single endpoint or via log replay.