Cloudinary Blog

Better Search Ranking Through Image Quality Improvement

Better Search Ranking Through Image Quality Improvement

Search ranking algorithms utilize various signals to determine how websites rank against each other on the internet either via desktop or mobile searches. One such signal is Site speed. In 2010, Google introduced Site speed as a signal in their search ranking algorithms. However, this only applied to web search ranking. Starting in July 2018, site speed will be a ranking factor of mobile searches. This change is another signal that developers must wake up and focus on improving the performance of their applications, since speed and load time affects a user’s experience of your page.

Webinar
How to Optimize for Page Load Speed

According to HTTPArchive, around 64 percent of a website’s average weight is images. Furthermore, surveys from akamai.com and Gomez reveal that 73 percent of mobile internet users have experienced problems with page load times on their devices. A one-second delay in page load time can decrease visitor satisfaction by 16 percent and can lead to a drop in conversion of 7 percent or more.

In this article, I’ll cover why a little discipline in image optimization can go a long way in helping your site load quickly on mobile devices and ultimately improve your mobile search ranking.

First, Identify The Problem

Before making a decision, you need to identify the problem. In this case it focuses on which images on the site needs optimization, and on what part of the site are they concentrated? It’s really not that hard.

Perform a detailed image analysis audit with the powerful Website Speed Test Image Analysis Tool. This tool provides information about the size, formats, quality and encoding of images on your site. Furthermore, it provides actionable tips on how to improve the page load speed.

Website Speed Test

Let’s analyze a mobile site. Check the snapshots of the analysis below:

Website Speed Test
Summary of Page Analysis: 43 Images, Page Image Weight: 6MB

Website Speed Test
First image is too heavy. It can be optimized to be served as JPEG (28 KB), JPEG-XR (26.2KB), and PNG (141.5KB).

Check out more details about the first image and a fix for optimizing the weight problem below:

Website Speed Test
Grade Analysis by the left. Optimization by the right. JPEG is supported in the various browsers shown just above the size. JPEG-XR is only supported in Internet Explorer and Microsoft Edge. No. 1 is a link that leads to the fix, which is the optimized image!

Eric Portis has done a great job of writing an in-depth article focusing on how the Website Speed Test image analysis tool works.

Image Optimization, Speed Matters

Let’s quickly go through a few image optimization techniques, all of which can be achieved easily with Cloudinary.

Optimize Image Quality with q_auto:

Using the q_auto parameter, the optimal quality compression level and optimal encoding settings are selected based on the specific image content, format and the viewing browser. The result is an image with good visual quality and a reduced file size. For example:

Ruby:
Copy to clipboard
cl_image_tag("woman.jpg", :quality=>"auto")
PHP v1:
Copy to clipboard
cl_image_tag("woman.jpg", array("quality"=>"auto"))
PHP v2:
Copy to clipboard
(new ImageTag('woman.jpg'))
  ->delivery(Delivery::quality(Quality::auto()));
Python:
Copy to clipboard
CloudinaryImage("woman.jpg").image(quality="auto")
Node.js:
Copy to clipboard
cloudinary.image("woman.jpg", {quality: "auto"})
Java:
Copy to clipboard
cloudinary.url().transformation(new Transformation().quality("auto")).imageTag("woman.jpg");
JS:
Copy to clipboard
cloudinary.imageTag('woman.jpg', {quality: "auto"}).toHtml();
jQuery:
Copy to clipboard
$.cloudinary.image("woman.jpg", {quality: "auto"})
React:
Copy to clipboard
<Image publicId="woman.jpg" >
  <Transformation quality="auto" />
</Image>
Vue.js:
Copy to clipboard
<cld-image publicId="woman.jpg" >
  <cld-transformation quality="auto" />
</cld-image>
Angular:
Copy to clipboard
<cl-image public-id="woman.jpg" >
  <cl-transformation quality="auto">
  </cl-transformation>
</cl-image>
.NET:
Copy to clipboard
cloudinary.Api.UrlImgUp.Transform(new Transformation().Quality("auto")).BuildImageTag("woman.jpg")
Android:
Copy to clipboard
MediaManager.get().url().transformation(new Transformation().quality("auto")).generate("woman.jpg");
iOS:
Copy to clipboard
imageView.cldSetImage(cloudinary.createUrl().setTransformation(CLDTransformation().setQuality("auto")).generate("woman.jpg")!, cloudinary: cloudinary)
Woman

Other options are q_auto:best, q_auto:low, q_auto:good or q_auto:eco to ensure higher-than-average quality.

You can manually set the quality with the q_ parameter. Check out the example below:

Ruby:
Copy to clipboard
cl_image_tag("sample.jpg", :quality=>60)
PHP v1:
Copy to clipboard
cl_image_tag("sample.jpg", array("quality"=>60))
PHP v2:
Copy to clipboard
(new ImageTag('sample.jpg'))
  ->delivery(Delivery::quality(60));
Python:
Copy to clipboard
CloudinaryImage("sample.jpg").image(quality=60)
Node.js:
Copy to clipboard
cloudinary.image("sample.jpg", {quality: 60})
Java:
Copy to clipboard
cloudinary.url().transformation(new Transformation().quality(60)).imageTag("sample.jpg");
JS:
Copy to clipboard
cloudinary.imageTag('sample.jpg', {quality: 60}).toHtml();
jQuery:
Copy to clipboard
$.cloudinary.image("sample.jpg", {quality: 60})
React:
Copy to clipboard
<Image publicId="sample.jpg" >
  <Transformation quality="60" />
</Image>
Vue.js:
Copy to clipboard
<cld-image publicId="sample.jpg" >
  <cld-transformation quality="60" />
</cld-image>
Angular:
Copy to clipboard
<cl-image public-id="sample.jpg" >
  <cl-transformation quality="60">
  </cl-transformation>
</cl-image>
.NET:
Copy to clipboard
cloudinary.Api.UrlImgUp.Transform(new Transformation().Quality(60)).BuildImageTag("sample.jpg")
Android:
Copy to clipboard
MediaManager.get().url().transformation(new Transformation().quality(60)).generate("sample.jpg");
iOS:
Copy to clipboard
imageView.cldSetImage(cloudinary.createUrl().setTransformation(CLDTransformation().setQuality(60)).generate("sample.jpg")!, cloudinary: cloudinary)
Flowers

The q_60 parameter above decreases the delivered file size from 118KB to 73KB.

Optimize Image Format with f_auto:

Choosing the right format to deliver each image can result in significant file size savings without sacrificing quality. The f_auto parameter enables Cloudinary to analyze the image content and select the best format to deliver. For example, it can automatically deliver images as WebP to Chrome browsers or JPEG-XR to Internet Explorer browsers, while using the original format for all other browsers. Using both f_auto and q_auto, Cloudinary will still generally deliver WebP and JPEG-XR to the relevant browsers, but might deliver selected images as PNG-8 or PNG-24 if the quality algorithm determines that as optimal.

Optimize Image Sizing with dpr_auto and w_auto:

If you deliver full size images and rely on browser-side resizing (using CSS or HTML width and height attributes), users are forced to unnecessarily download large images. Therefore, images should always be delivered from the server at their final size. Cloudinary performs resizing on the server, thus enabling the image to be delivered to the browser at the requested size.

You can ensure that large or high-resolution images will only be delivered to users whose device resolution or browser size requires it by using dpr_auto and w_auto. Check out this example:

Ruby:
Copy to clipboard
cl_image_tag("sample.jpg", :transformation=>[
  {:aspect_ratio=>"4:3", :crop=>"fill"},
  {:width=>"auto", :dpr=>"auto", :crop=>"scale"}
  ])
PHP v1:
Copy to clipboard
cl_image_tag("sample.jpg", array("transformation"=>array(
  array("aspect_ratio"=>"4:3", "crop"=>"fill"),
  array("width"=>"auto", "dpr"=>"auto", "crop"=>"scale")
  )))
PHP v2:
Copy to clipboard
(new ImageTag('sample.jpg'))
  ->resize(Resize::fill()->aspectRatio(AspectRatio::ar4X3()))
  ->resize(Resize::scale()->width('auto'))
  ->delivery(Delivery::dpr(Dpr::auto()));
Python:
Copy to clipboard
CloudinaryImage("sample.jpg").image(transformation=[
  {'aspect_ratio': "4:3", 'crop': "fill"},
  {'width': "auto", 'dpr': "auto", 'crop': "scale"}
  ])
Node.js:
Copy to clipboard
cloudinary.image("sample.jpg", {transformation: [
  {aspect_ratio: "4:3", crop: "fill"},
  {width: "auto", dpr: "auto", crop: "scale"}
  ]})
Java:
Copy to clipboard
cloudinary.url().transformation(new Transformation()
  .aspectRatio("4:3").crop("fill").chain()
  .width("auto").dpr("auto").crop("scale")).imageTag("sample.jpg");
JS:
Copy to clipboard
cloudinary.imageTag('sample.jpg', {transformation: [
  {aspectRatio: "4:3", crop: "fill"},
  {width: "auto", dpr: "auto", crop: "scale"}
  ]}).toHtml();
jQuery:
Copy to clipboard
$.cloudinary.image("sample.jpg", {transformation: [
  {aspect_ratio: "4:3", crop: "fill"},
  {width: "auto", dpr: "auto", crop: "scale"}
  ]})
React:
Copy to clipboard
<Image publicId="sample.jpg" >
  <Transformation aspectRatio="4:3" crop="fill" />
  <Transformation width="auto" dpr="auto" crop="scale" />
</Image>
Vue.js:
Copy to clipboard
<cld-image publicId="sample.jpg" >
  <cld-transformation aspectRatio="4:3" crop="fill" />
  <cld-transformation width="auto" dpr="auto" crop="scale" />
</cld-image>
Angular:
Copy to clipboard
<cl-image public-id="sample.jpg" >
  <cl-transformation aspect-ratio="4:3" crop="fill">
  </cl-transformation>
  <cl-transformation width="auto" dpr="auto" crop="scale">
  </cl-transformation>
</cl-image>
.NET:
Copy to clipboard
cloudinary.Api.UrlImgUp.Transform(new Transformation()
  .AspectRatio("4:3").Crop("fill").Chain()
  .Width("auto").Dpr("auto").Crop("scale")).BuildImageTag("sample.jpg")
Android:
Copy to clipboard
MediaManager.get().url().transformation(new Transformation()
  .aspectRatio("4:3").crop("fill").chain()
  .width("auto").dpr("auto").crop("scale")).generate("sample.jpg");
iOS:
Copy to clipboard
imageView.cldSetImage(cloudinary.createUrl().setTransformation(CLDTransformation()
  .setAspectRatio("4:3").setCrop("fill").chain()
  .setWidth("auto").setDpr("auto").setCrop("scale")).generate("sample.jpg")!, cloudinary: cloudinary)
Flowers

The above example will yield a 318KB file on a DPR 2.0 device and 115KB on a DPR 1.0 device. It will be automatically scaled to the width available for the image in the responsive layout, and with a DPR value suitable for the user's device.

Web developers build their sites using a variety of programming languages. I recommend checking out the following resources on image optimization in these languages and also in WordPress:

  1. Image Optimization in PHP.
  2. Image Optimization in Ruby.
  3. Image Optimization in Python.
  4. Image Optimization in WordPress.

Learn More

For additional reading on image optimization, you can review these articles:

Conclusion

One of the best ways to increase page performance is via image optimization. The faster your page loads, the higher the chances of achieving a better mobile search ranking. Don’t leave performance and mobile search ranking gains on the table, optimize your images today with Cloudinary!

About Cloudinary

Cloudinary provides easy-to-use, cloud-based media management solutions for the world’s top brands. With offices in the US, UK and Israel, Cloudinary has quickly become the de facto solution used by developers and marketers at major companies around the world to streamline rich media management and deliver optimal end-user experiences.

For more information, visit www.cloudinary.com or follow us on Twitter.


Further Reading on Image Optimization

Recent Blog Posts

Create Lightweight Sites With Low-Code and No-Code Technology

Consumers expect modern websites to be mainly visual. But, the more compelling and complex the related media is, the more data is involved, compounding the site’s weight. In today’s content-craving world, delivering unoptimized media can cost you because it leads to sluggish page loads, resulting in visitors abandoning your site in search of a faster alternative. In fact, a page load that takes more than three seconds can cause as many as 40% of your visitors to bounce. Given this competitive, digital-first environment, you can’t afford to lose page views, for time is of the essence.

Read more
A Blueprint for AWS-Secured Webhook Listeners for Cloudinary

tl;dr: An AWS-secured and optimized Cloudinary webhook listener for extending the Cloudinary service

Code: Github

A webhook is a communication medium for sending notifications from one platform to another about events that occurred. In place are user-defined HTTP callbacks that are triggered by specific events. When a triggered event takes place on the source site, the webhook listens to the event, collects the data, and sends it to the URL you specified in the form of an HTTP request.

Read more
New Accessibility Features for Cloudinary’s Product Gallery Widget

Cloudinary’s Product Gallery widget, which launched in 2019, has enabled many brands to effectively and efficiently showcase their products in a sleek and captivating manner, saving countless hours of development time and accelerating release cycles. By adding Cloudinary’s Product Gallery widget with its customizable UI to their product page, retailers reap numerous benefits, often turning visitors into customers in short order.

Read more
Why Successful Businesses Engage With and Convert Audiences With Visual Media

Most business buyers prefer to research purchase options online, as do many shoppers. No wonder online retail sales in the U.S. rose by 32.4% in 2020—an impressive gain of $105 billion.

For B2B and B2C businesses, text-heavy websites are no longer adequate in attracting shoppers. Instead, engaging visual media—spin images, videos, 3D models, augmented reality—are becoming a must for conveying eye-catching details and differentiators about products or services.

Read more
Making User-Generated Content (UGC) Shoppable With Cloudinary

User-generated content (UGC) is a powerful marketing tool. Not only does video complement marketing efforts for e-commerce by enabling customers to explore products in greater detail, but UGC also adds an element of trust. As a bonus, user-generated video is an exceptional opportunity for e-businesses to attract website traffic without their marketing team having to create promotional videos from scratch. User-generated content drives conversions and brand loyalty as a direct result of authentic interaction.

Read more