<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/just-updated---optimize-images-v2-2-0-tvlh04r5x" -->

---
title: Just updated - Optimize Images v2.2.0 | daily.dev
description: Optimize Images 2.2.0 shrinks JPEG files further by default, adds an optional SSIM-based quality check, and now preserves embedded colour profiles like...
canonical: https://daily.dev/posts/just-updated---optimize-images-v2-2-0-tvlh04r5x
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Just updated - Optimize Images v2.2.0 | daily.dev
og:description: Optimize Images 2.2.0 shrinks JPEG files further by default, adds an optional SSIM-based quality check, and now preserves embedded colour profiles like...
og:url: https://daily.dev/posts/just-updated---optimize-images-v2-2-0-tvlh04r5x
og:image: https://api.daily.dev/og/posts/TVLh04r5X.png
og:image:alt: Just updated - Optimize Images v2.2.0
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Just updated - Optimize Images v2.2.0

**[Planet Python](https://daily.dev/sources/planetpython)** · 11 min read · 0 upvotes · 0 comments

## Summary

Optimize Images 2.2.0 shrinks JPEG files further by default, adds an optional SSIM-based quality check, and now preserves embedded colour profiles like iPhone's Display P3. The new -jt/--jpeg-tables option uses mozjpeg quantization tables, making JPEGs about 12% smaller on the project's test images at the same visual quality. A new --ssim-min option keeps the original file if the optimized version's structural similarity score drops too low, using the optional scikit-image dependency. The release requires Pillow 13.0.0, which fixes five vulnerabilities including a critical heap buffer overflow (CVE-2026-112403) reachable through optimize-images. Python 3.11 is now the minimum version, and a single image is optimized 38-47% faster on the test machine.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://no-title.victordomingos.com/articles/2026/updated_optimize-images-v2-2-0>

## Questions this post answers

### Why does optimize-images 2.2.0 require Pillow 13.0.0?

Pillow 13.0.0 fixes five security vulnerabilities, including the critical CVE-2026-112403, a heap buffer overflow reachable when a crafted lossless JPEG is downscaled using -mw/-mh or max_w/max_h in the API. Two other CVEs involving crafted TIFF files are reachable through -ca or convert_image_data(). Users who cannot upgrade optimize-images immediately can still protect themselves by upgrading Pillow alone.

_Developers patching image pipelines for Pillow CVEs can track dependency security updates like this on daily.dev._

### How much smaller are JPEG files with the new jpeg-tables option in optimize-images 2.2.0?

JPEG files become about 12% smaller on average using the new -jt/--jpeg-tables option with mozjpeg's quantization tables, at the same visual quality, measured as a median SSIMULACRA 2 loss of just 0.2 points. PNG to JPEG conversions shrink about 3%. The 'auto' mode is the new default, while 'standard' restores the previous output exactly.

_Anyone deciding whether to adopt a new JPEG encoding default can weigh real compression numbers like these on daily.dev._

### What is the minimum Python version supported by optimize-images 2.2.0?

Python 3.11 is now the minimum supported version, after Python 3.10 reached end of life. Python 3.15 is newly supported in this release. Importing the library is also reported as 2.5 to 4.5 times faster, since modules like numpy and scikit-image now load only when SSIM scoring is actually used.

_Teams planning a Python version bump can check tool compatibility changes like this on daily.dev._

## Similar posts on daily.dev

- [Just updated - both Optimize Images and Optimize Images X](https://daily.dev/posts/just-updated---both-optimize-images-and-optimize-images-x-fgocgthl4) · Planet Python · 1 upvotes · 0 comments
- [Optimize Images X adds internationalization](https://daily.dev/posts/optimize-images-x-adds-internationalization-o0gawqdrk) · Planet Python · 1 upvotes · 1 comments
- [Optimize Images X now supports WEBP and drag and drop](https://daily.dev/posts/optimize-images-x-now-supports-webp-and-drag-and-drop-eejntkrv2) · Planet Python · 2 upvotes · 0 comments
- [Is It Worth It To Optimize Images For Your Site?](https://daily.dev/posts/is-it-worth-it-to-optimize-images-for-your-site--f62efkt0e) · Lobsters · 1 upvotes · 0 comments
- [Convert & Compress – Frontend Masters Blog](https://daily.dev/posts/convert-compress-frontend-masters-blog-zgoo6fsel) · Frontend Masters · 4 upvotes · 0 comments

---

Tags: [#security](https://daily.dev/tags/security), [#python](https://daily.dev/tags/python), [#compression](https://daily.dev/tags/compression)

[View this post on daily.dev](https://daily.dev/posts/just-updated---optimize-images-v2-2-0-tvlh04r5x)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Just updated - Optimize Images v2.2.0","url":"https://daily.dev/posts/just-updated---optimize-images-v2-2-0-tvlh04r5x","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/just-updated---optimize-images-v2-2-0-tvlh04r5x"},"datePublished":"2026-10-26T01:49:17.988Z","dateModified":"2026-10-26T01:50:01.999Z","description":"Optimize Images 2.2.0 shrinks JPEG files further by default, adds an optional SSIM-based quality check, and now preserves embedded colour profiles like...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/2ecd7dc419f6d49065b7e63cab59dc83?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/2ecd7dc419f6d49065b7e63cab59dc83?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Planet Python","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Planet Python","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/eac3cc584cb043b5a242d13752bd3d0c","url":"https://daily.dev/sources/planetpython"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/just-updated---optimize-images-v2-2-0-tvlh04r5x","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"security,python,compression","timeRequired":"PT11M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Planet Python","item":"https://daily.dev/sources/planetpython"},{"@type":"ListItem","position":3,"name":"Just updated - Optimize Images v2.2.0"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/just-updated---optimize-images-v2-2-0-tvlh04r5x#faq","mainEntity":[{"@type":"Question","name":"Why does optimize-images 2.2.0 require Pillow 13.0.0?","acceptedAnswer":{"@type":"Answer","text":"Pillow 13.0.0 fixes five security vulnerabilities, including the critical CVE-2026-112403, a heap buffer overflow reachable when a crafted lossless JPEG is downscaled using -mw/-mh or max_w/max_h in the API. Two other CVEs involving crafted TIFF files are reachable through -ca or convert_image_data(). Users who cannot upgrade optimize-images immediately can still protect themselves by upgrading Pillow alone. Developers patching image pipelines for Pillow CVEs can track dependency security updates like this on daily.dev."}},{"@type":"Question","name":"How much smaller are JPEG files with the new jpeg-tables option in optimize-images 2.2.0?","acceptedAnswer":{"@type":"Answer","text":"JPEG files become about 12% smaller on average using the new -jt/--jpeg-tables option with mozjpeg's quantization tables, at the same visual quality, measured as a median SSIMULACRA 2 loss of just 0.2 points. PNG to JPEG conversions shrink about 3%. The 'auto' mode is the new default, while 'standard' restores the previous output exactly. Anyone deciding whether to adopt a new JPEG encoding default can weigh real compression numbers like these on daily.dev."}},{"@type":"Question","name":"What is the minimum Python version supported by optimize-images 2.2.0?","acceptedAnswer":{"@type":"Answer","text":"Python 3.11 is now the minimum supported version, after Python 3.10 reached end of life. Python 3.15 is newly supported in this release. Importing the library is also reported as 2.5 to 4.5 times faster, since modules like numpy and scikit-image now load only when SSIM scoring is actually used. Teams planning a Python version bump can check tool compatibility changes like this on daily.dev."}}]}
```

