DZone
Performance Zone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Over 2 million developers have joined DZone.
Log In / Join
  • Refcardz
  • Trend Reports
  • Webinars
  • Zones
  • |
    • Agile
    • AI
    • Big Data
    • Cloud
    • Database
    • DevOps
    • Integration
    • IoT
    • Java
    • Microservices
    • Open Source
    • Performance
    • Security
    • Web Dev
DZone > Performance Zone > What’s the Best Way To Optimize Images for the Web?

What’s the Best Way To Optimize Images for the Web?

You probably aren't optimizing your images enough. In this article, learn how to optimize images for fast loading time, and which techniques work the best.

Jeremy Morgan user avatar by
Jeremy Morgan
CORE ·
Dec. 08, 21 · Performance Zone · Analysis
Like (2)
Save
Tweet
5.03K Views

Join the DZone community and get the full member experience.

Join For Free

Want fast loading web pages?

You probably aren’t optimizing your images enough. Image optimization is frequently overlooked because it’s only a small difference and takes some time to do, but a series of small changes will lead to a screaming fast website. It’s worth it. Your pages will load faster.

Why Does This Matter?

  • It’s better for your user.
  • It makes your page more accessible in low bandwidth situations.
  • It’s better for SEO.

All this in exchange for a few minutes of your time. Do you need any more reasons to optimize your images?

What We’ll Do

In this article, I will show you four ways to optimize your images and the results from each of them. I’ll explain how I tested them and show you the results.

You can download the files and perform your own tests by downloading this repo. Feel free to play around with it.

For testing, I decided to grab random images from Unsplash. I randomized the width and height to get various dimensions you might see on the web.

I used this script to pull down 32 images and put them into a folder.

We’re going to look at:

  • The raw files (with nothing done to them)
  • Photoshop optimizing
  • RIOT optimizing
  • XNConvert JPEG optimizing
  • XNConvert to Webp optimizing

We’ll also see how these methods stack up. We will examine file size and page load time. As a note, I do not change the resolution or color depth of these images, so they are all the same except for the optimizations.

How I’m Testing Load Time

I’m testing load time by creating a simple index.html file in each folder that loads up a table of the images. I am serving it up with the NPM serve package because it’s a simple HTML server that runs locally. I don’t want network latency to affect the results.

Then I use CURL to grab the load time:

curl -s -o /dev/null -w "%{time_total}\n" -H "Pragma: no-cache" https://localhost:3000

Let’s optimize some images and see the results.

Raw Images

This is a test with the images straight from Unsplash. It is our baseline measurement.

Here is the total file size for all images:

Total File Size 3.1M

So we’re starting with 3.1MB of images. Not too shabby, but not small either.

Here is the page load time:

Load Time Test 1

I ran the test ten times and got an average load time of 0.0013495 seconds. It seems fast, but we can improve on it.

Optimized With Photoshop

For the next set of images, I optimized these with Photoshop. I used the following settings:

Photoshop Screenshot

I set a quality of 60 and set it to progressive with no metadata. I got some interesting results.

Here is the total file size for all images:

Total File Size 3.3M

It’s 3.3MB, which is more than we started with. I have no idea why this is and will investigate and update later. But most of the time, this creates smaller images.

Here is the page load time:

Load Time Test 2

Our average load time is 0.001213 seconds, which is a little above the raw files. Not much of a surprise with this file size.

Optimized With RIOT

Next, I optimized the images with the Radical Image Optimization Tool (RIOT). This is only available in Windows, but it’s an excellent tool I’ve been using for years.

I used the following settings:

RIOT Screenshot

And even though I left the quality pretty high at 82%, it shrunk the files down considerably:

File Decrease Size

Here is the total file size for all images:

Total File Size 2.3M

At 2.3MB, that’s quite a bit of savings. This reduces your website’s footprint without sacrificing quality.

Here is the page load time:

Load Time Test 3

Our average load time is 0.0010877 seconds, which is our fastest yet.

Optimized With XNConvert (JPG)

For this test, I optimized the images with XNConvert and used it to optimize the JPEGs. This is the tool I use the most because it runs in Windows, Mac, or Linux and does batch processing quickly.

XNConvert Screenshot

I removed the metadata:

Removed Metadata - ScreenshotThen saved them with the following settings:

Write Settings

Here is the total file size for all images:

Total File Size 2.2M

At 2.2MB, this is the smallest we’ve seen yet. However, I don’t expect it will significantly improve load time over the previous 2.3MB of images.

Here is the page load time:

Load Time Test 4

The average is 0.001085 seconds, which is a little faster than RIOT. Great!

I highly recommend XNConvert for image optimization. But, we can take this even a step further and convert everything to Webp images. These will be significantly smaller and hopefully faster.

Optimized With XNConvert (WebP)

So I took the same set of raw images and converted them to .webp images. This is Google’s recommended image format these days, and it’s easy to see why.

Here are the settings I used:

Optimized With XNConvert (WebP)

Here is the total file size for all images:

Total File Size 1.5M

Wow! We went from 3.1MB of images to 1.5MB. That’s significant. Let’s see what it does to load time.

Load Time Test 5

The average is 0.0010326 seconds, which is a new record. Great!

This is something you should consider when doing image optimization on your site. WebP images are the way forward.

Let’s Look at the Results!

This is the total file size for all images:

Comparison of Total File Size on Disk

Method
File Size
Raw images
3.1MB
Photoshop
3.3MB
RIOT
2.3MB
XNConvert (JPG)
2.2MB
XNConvert (Webp)
1.5MB

Comparison of Page Load Time

Method
Load Time
Raw images
0.0013495
Photoshop
0.001213
RIOT
0.0010877
XNConvert (JPG)
0.001085
XNConvert (Webp)
0.0010326

Conclusion

Optimize your images! As you can see, it makes a difference, even with this small page with 32 images on it. I will do this experiment again with a larger image set to see how the changes scale.

Overall it’s pretty clear that .webp images are smaller and more efficient.

It’s definitely worth the few minutes of extra time.

Questions? Comments? Yell at me on Twitter! 

– Jeremy

optimization IT

Published at DZone with permission of Jeremy Morgan, DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

Popular on DZone

  • 11 Reasons To Use Selenium for Automation Testing
  • After COVID, Developers Really Are the New Kingmakers
  • OpenTelemetry in Action: Identifying Database Dependencies
  • Why Great Money Doesn’t Retain Great Devs w/ Stack Overflow, DataStax & Reprise

Comments

Performance Partner Resources

X

ABOUT US

  • About DZone
  • Send feedback
  • Careers
  • Sitemap

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • MVB Program
  • Become a Contributor
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 600 Park Offices Drive
  • Suite 300
  • Durham, NC 27709
  • support@dzone.com
  • +1 (919) 678-0300

Let's be friends:

DZone.com is powered by 

AnswerHub logo