diff --git a/Tests/test_file_jpeg.py b/Tests/test_file_jpeg.py
index bf0dec4b80e..d4c0636c668 100644
--- a/Tests/test_file_jpeg.py
+++ b/Tests/test_file_jpeg.py
@@ -281,7 +281,10 @@ def test_progressive(self) -> None:
         assert not im2.info.get("progressive")
         assert im3.info.get("progressive")
 
-        assert_image_equal(im1, im3)
+        if features.check_feature("mozjpeg"):
+            assert_image_similar(im1, im3, 9.39)
+        else:
+            assert_image_equal(im1, im3)
         assert im1_bytes >= im3_bytes
 
     def test_progressive_large_buffer(self, tmp_path: Path) -> None:
@@ -424,8 +427,12 @@ def test_progressive_compat(self) -> None:
 
         im2 = self.roundtrip(hopper(), progressive=1)
         im3 = self.roundtrip(hopper(), progression=1)  # compatibility
-        assert_image_equal(im1, im2)
-        assert_image_equal(im1, im3)
+        if features.check_feature("mozjpeg"):
+            assert_image_similar(im1, im2, 9.39)
+            assert_image_similar(im1, im3, 9.39)
+        else:
+            assert_image_equal(im1, im2)
+            assert_image_equal(im1, im3)
         assert im2.info.get("progressive")
         assert im2.info.get("progression")
         assert im3.info.get("progressive")
diff --git a/src/PIL/features.py b/src/PIL/features.py
index 3645e3defc4..ae7ea4255ef 100644
--- a/src/PIL/features.py
+++ b/src/PIL/features.py
@@ -127,6 +127,7 @@ def get_supported_codecs() -> list[str]:
     "fribidi": ("PIL._imagingft", "HAVE_FRIBIDI", "fribidi_version"),
     "harfbuzz": ("PIL._imagingft", "HAVE_HARFBUZZ", "harfbuzz_version"),
     "libjpeg_turbo": ("PIL._imaging", "HAVE_LIBJPEGTURBO", "libjpeg_turbo_version"),
+    "mozjpeg": ("PIL._imaging", "HAVE_MOZJPEG", "libjpeg_turbo_version"),
     "zlib_ng": ("PIL._imaging", "HAVE_ZLIBNG", "zlib_ng_version"),
     "libimagequant": ("PIL._imaging", "HAVE_LIBIMAGEQUANT", "imagequant_version"),
     "xcb": ("PIL._imaging", "HAVE_XCB", None),
@@ -300,7 +301,8 @@ def pilinfo(out: IO[str] | None = None, supported_formats: bool = True) -> None:
             if name == "jpg":
                 libjpeg_turbo_version = version_feature("libjpeg_turbo")
                 if libjpeg_turbo_version is not None:
-                    v = "libjpeg-turbo " + libjpeg_turbo_version
+                    v = "mozjpeg" if check_feature("mozjpeg") else "libjpeg-turbo"
+                    v += " " + libjpeg_turbo_version
             if v is None:
                 v = version(name)
             if v is not None:
diff --git a/src/_imaging.c b/src/_imaging.c
index 5d6d97bedab..00772d01275 100644
--- a/src/_imaging.c
+++ b/src/_imaging.c
@@ -76,6 +76,13 @@
 
 #ifdef HAVE_LIBJPEG
 #include "jconfig.h"
+#ifdef LIBJPEG_TURBO_VERSION
+#define JCONFIG_INCLUDED
+#ifdef __CYGWIN__
+#define _BASETSD_H
+#endif
+#include "jpeglib.h"
+#endif
 #endif
 
 #ifdef HAVE_LIBZ
@@ -4367,6 +4374,15 @@ setup_module(PyObject *m) {
     Py_INCREF(have_libjpegturbo);
     PyModule_AddObject(m, "HAVE_LIBJPEGTURBO", have_libjpegturbo);
 
+    PyObject *have_mozjpeg;
+#ifdef JPEG_C_PARAM_SUPPORTED
+    have_mozjpeg = Py_True;
+#else
+    have_mozjpeg = Py_False;
+#endif
+    Py_INCREF(have_mozjpeg);
+    PyModule_AddObject(m, "HAVE_MOZJPEG", have_mozjpeg);
+
     PyObject *have_libimagequant;
 #ifdef HAVE_LIBIMAGEQUANT
     have_libimagequant = Py_True;
diff --git a/src/libImaging/JpegEncode.c b/src/libImaging/JpegEncode.c
index 4372d51d5c3..3c11eac2206 100644
--- a/src/libImaging/JpegEncode.c
+++ b/src/libImaging/JpegEncode.c
@@ -134,7 +134,16 @@ ImagingJpegEncode(Imaging im, ImagingCodecState state, UINT8 *buf, int bytes) {
                     return -1;
             }
 
-            /* Compressor configuration */
+                /* Compressor configuration */
+#ifdef JPEG_C_PARAM_SUPPORTED
+            /* MozJPEG */
+            if (!context->progressive) {
+                /* Do not use MozJPEG progressive default */
+                jpeg_c_set_int_param(
+                    &context->cinfo, JINT_COMPRESS_PROFILE, JCP_FASTEST
+                );
+            }
+#endif
             jpeg_set_defaults(&context->cinfo);
 
             /* Prevent RGB -> YCbCr conversion */
