GTmetrix Performance Blog

News, updates and guides on GTmetrix and general web performance

Recommendations Update

We’ve updated a few recommendations which will affect PageSpeed and YSlow scoring on GTmetrix. Read on to understand our new changes.

We get a lot of feedback on PageSpeed and YSlow’s recommendations (eg. “Specify image dimensions” and “Serve scaled images”) in regards to their relevance with newer responsive sites. We believe most of these recommendations are still valid, so we’ve been working on improving and fixing bugs with PageSpeed and YSlow’s recommendations to work better with modern websites.

GTmetrix changes

We’ve made several fixes on the backend which should result in more accurate results. A big one being that PageSpeed’s “Enable gzip compression” recommendation would trigger incorrectly if you served a WOFF font as text/plain.

PageSpeed changes

We’re a couple years late on this (we missed these updates), but we’ve upgraded to the latest PageSpeed 1.15. The main changes in this upgrade are:

  • Overall scoring algorithm has changed. It is now generated based on estimated impact of all the recommendations. You’ll likely see a drop in your PageSpeed scores that align a little better with what PageSpeed Insights gives.
  • PageSpeed dropped individual recommendation scores, but we’ve come up with a new algorithm that’s based on how the overall score is calculated.
  • The “Avoid landing page redirects” recommendation now allows a single redirect on the main page without penalty.
  • More asynchronous scripts were added to the “Prefer asynchronous resources” recommendation.

We’ve also made our own customizations and bug fixes to PageSpeed code to modernize the existing recommendations. We’ve made these publicly available on GitHub.

Here’s a summary of our recommendation changes:

  • “Enable gzip compression”: Add support for detecting brotli.
  • “Specify image dimensions”: Now also checks dimensions specified in CSS.
  • “Serve scaled images”: Allow up to 0.5x scaling with responsive pages.
  • “Enable Keep-Alive”: Don’t require for http/2 and trigger if “close” directive specified.
  • “Specify a Vary: Accept-Encoding header”: Don’t require header for SPDY.
  • “Avoid CSS @import”: Fix triggering even though page wasn’t using @import.
  • “Avoid landing page redirects”: Ignore Chrome’s HSTS internal redirect.

YSlow changes

We’ve also made some similar changes to YSlow to fix issues with some of the recommendations. Note that the removal of the 4 recommendations has made the left over recommendations have a higher impact on the YSlow score.

  • “Compress components with gzip”: Add support for detecting brotli and ignore WOFFs served as text/plain.
  • “Make JavaScript and CSS external”: Allow a single embedded stylesheet (for sites that implement critical path optimization).
  • Removed rules that weren’t working: “Avoid empty src or href”, “Put CSS at the top”, “Put JavaScript at bottom”, “Do not scale images in HTML”.