Optimize images
User guide
- Getting Started
Api
Concepts
Configurations
Configuring webhint
Connectors
Development flow integration
Extensions
Formatters
Hints
- Avoid CSS limits
- Avoid HTTP redirects
- axe accessibility check
- Babel configuration hint set
- Compatibility of CSS, HTML and JavaScript features
- Correct `Content-Type` header
- Correct manifest extension
- Correct viewport
- Detect CSS Reflows
- Disallowed HTTP headers
- External links disown opener
- Has web app manifest
- Highest document mode
- HTTP cache
- Leading '.' in `classList.add` or `classList.remove`
- Manifest has name
- Minify JavaScript
- Modern DOCTYPE
- No `createElement` with SVG
- No `P3P` headers
- No broken links
- No byte-order mark
- No Inline CSS Styles
- No protocol-relative URLs
- No small error pages
- No vulnerable libraries
- Nu HTML test
- Optimal compression
- Optimize images
- Performance budget
- Prefixed CSS first
- scoped-svg-styles
- Specify button type
- SSL server test
- TypeScript configuration hints set
- Unneeded HTTP headers
- Use `Strict-Transport-Security` header
- Use `X-Content-Type-Options` header
- Use Apple touch icon
- Use charset `utf-8`
- Use HTTPS
- Use subresource integrity
- Valid `Set-Cookie` header
- Valid `theme-color`
- Valid manifest
- webpack configuration hints set
Parsers
Server configurations
Troubleshoot
- Api
- Concepts
- Configurations
- Configuring webhint
- Connectors
- Development flow integration
- Extensions
- Formatters
- Hints
- Parsers
- Server configurations
- Troubleshoot
Optimize images (image-optimization-cloudinary
)
image-optimization-cloudinary
uses the Cloudinary
service to analyze your images and see if there could be size savings
on them.
Note: To use this hint you will need to have an account in this
service and configure it to use those credentials via the
CLOUDINARY_URL
environment variable or in
the hint’s configuration. You can create a free account here.
Why is this important?
As of June 1st, 2019, and based on HTTP Archive, images account for a bit over 47% of the size of a website in average.
By having your images optimized, you will help your users have a better and faster experience when navigating in your website.
What does the hint check?
This hint will use Cloudinary’s infrastructure to upload any images found and check if they can be optimized maintaining the same resolution and format.
Can the hint be configured?
Yes, if you don’t want to use the CLOUDINARY_URL
environment variable
to set up your credentials, you can pass them to the hint via the hint
configuration from the .hintrc
file:
{
"connector": {...},
"formatters": [...],
"hints": {
"image-optimization-cloudinary": ["error", {
"apiKey": "your api key",
"apiSecret": "your api secret",
"cloudName": "your cloud name"
}],
...
},
...
} |
By default, this hint will notify you even if there is a 1kB savings.
If you want to change the threshold
you can do it by having something
as the following in the .hintrc
file:
{
"connector": {...},
"formatters": [...],
"hints": {
"image-optimization-cloudinary": ["error", {
"threshold": 10
}],
...
},
...
} |
The threshold
value will be used for the savings per image, and the
total possible savings.
Examples that trigger the hint
- Having an image that Cloudinary can optimize further.
- Having a
threshold
configured and an image whose savings is equal or greater than the configured value. - Having a
threshold
configured and several images whose individual savings is less thanthreshold
but when combined it’s greater. For example, if you configure athreshold
of 10, and you have one image that could be 6kB smaller, and another one that could be 5kB smaller, this hint will report an issue because the combined savings is greater than 10.
Examples that pass the hint
- Having all your images optimized.
- Having a
threshold
configured and the combined savings of all images smaller to that value.
How to use this hint?
This package is installed automatically by webhint:
npm install hint --save-dev |
To use it, activate it via the .hintrc
configuration file:
{
"connector": {...},
"formatters": [...],
"hints": {
"image-optimization-cloudinary": "error",
...
},
"parsers": [...],
...
} |
Note: The recommended way of running webhint is as a devDependency
of
your project.