Choose a version:
25% The original file has 565918 bytes (552.7k) and is available from the project website.
There you can find the official minified version, too, which brings down the size to 140959 bytes (137.7k, 25%).

After GZIP compression these minified files vary in size:
gzip -6 (default)
  48264 bytes (47.1k)
local copy
gzip -9
  48225 bytes (47.1k)
local copy
7zip -mx=9 -tgzip
  45971 bytes (44.9k)
local copy
libdeflate -12
  45914 bytes (44.8k)
local copy
kzip -s0 -rn -b1
  45881 bytes (44.8k)
local copy
pigz -11 -n
  45858 bytes (44.8k)
local copy
zultra
  45835 bytes (44.8k)
local copy
Zopfli
  45780 bytes (44.7k)
local copy
Zopfli (defluff)
  45778 bytes (44.7k)
local copy

perma-link to the smallest file on my server:
http://minime.stephan-brumme.com/files/dojo/dojo-1.7.9.min.js (or via HTTPS)

You will automatically get the smallest Dojo 1.7.9 file, ETag caching is available and
if your browser doesn't support GZIP decompression then the uncompressed version will be sent.

Currently best Zopfli settings

You can use my super-compressed files for whatever purpose you like as long as you respect the library's original license agreement.
There are no restrictions from my side - but please avoid hot-linking if you run a high-traffic website.

These command-line settings yielded the best compression ratio so far (Linux version of zopfli-krzymod):
zopfli --i100000 --mb8 --mls16384 --bsr10 --lazy --ohh

(found March 25, 2016)
Description Value Parameter
iterations 100000  --i100000
maximum blocks 8  --mb8
maximum length score 16384  --mls16384
block splitting recursion 10  --bsr10
lazy matching in LZ77 yes  --lazy
optimized Huffman headers yes  --ohh
initial random W for iterations 1  --rw1
initial random Z for iterations 2  --rz2

Even Smaller Files Thanks To Defluff

Zopfli's output can be further optimized by the defluff tool.
In this particular case, defluff saves 2 more bytes (45778 bytes).

Verify file integrity

After decompression, my uncompressed files are identical to the original ones:

MD5:
curl --silent --compressed https://download.dojotoolkit.org/release-1.7.9/dojo.js --location | md5sum
0ddaa460eddb578125f73560e83bf559  -
curl --silent --compressed https://minime.stephan-brumme.com/files/dojo/dojo-1.7.9.min.zopfli.js.gz | md5sum
0ddaa460eddb578125f73560e83bf559  -

SHA1:
curl --silent --compressed https://download.dojotoolkit.org/release-1.7.9/dojo.js --location | sha1sum
6eb9cd78a51e73f19b99c57a68c1e1f226284ede  -
curl --silent --compressed https://minime.stephan-brumme.com/files/dojo/dojo-1.7.9.min.zopfli.js.gz | sha1sum
6eb9cd78a51e73f19b99c57a68c1e1f226284ede  -

Other Versions

Available Dojo versions at minime.stephan-brumme.com:

1.17.3, 1.17.2, 1.17.1, 1.17.0,
1.16.5, 1.16.4, 1.16.3, 1.16.2, 1.16.1, 1.16.0,
1.15.6, 1.15.5, 1.15.4, 1.15.3, 1.15.2, 1.15.1, 1.15.0,
1.14.9, 1.14.8, 1.14.7, 1.14.6, 1.14.5, 1.14.4, 1.14.3, 1.14.2, 1.14.1, 1.14.0,
1.13.10, 1.13.9, 1.13.8, 1.13.7, 1.13.6, 1.13.5, 1.13.4, 1.13.3, 1.13.2, 1.13.1, 1.13.0,
1.12.11, 1.12.10, 1.12.9, 1.12.8, 1.12.7, 1.12.6, 1.12.5, 1.12.4, 1.12.3, 1.12.2, 1.12.1,
1.11.13, 1.11.12, 1.11.11, 1.11.10, 1.11.9, 1.11.8, 1.11.7, 1.11.6, 1.11.5, 1.11.4, 1.11.3, 1.11.2, 1.11.1, 1.11.0,
1.10.10, 1.10.9, 1.10.8, 1.10.7, 1.10.6, 1.10.5, 1.10.4, 1.10.3, 1.10.2, 1.10.1, 1.10.0,
1.9.11, 1.9.10, 1.9.9, 1.9.8, 1.9.7, 1.9.6, 1.9.5, 1.9.4, 1.9.3, 1.9.2, 1.9.1, 1.9.0,
1.8.14, 1.8.13, 1.8.12, 1.8.11, 1.8.10, 1.8.9, 1.8.8, 1.8.7, 1.8.6, 1.8.5, 1.8.4, 1.8.3, 1.8.2, 1.8.1, 1.8.0,
1.7.12, 1.7.11, 1.7.10, 1.7.9, 1.7.8, 1.7.7, 1.7.6, 1.7.5, 1.7.4, 1.7.3, 1.7.2, 1.7.1, 1.7.0,
1.6.5, 1.6.4, 1.6.3, 1.6.2, 1.6.1, 1.6.0,
1.5.6, 1.5.5, 1.5.4, 1.5.3, 1.5.2, 1.5.1, 1.5.0,
1.4.8, 1.4.7, 1.4.6, 1.4.5, 1.4.4, 1.4.3, 1.4.2, 1.4.1, 1.4.0,
1.3.3, 1.3.2, 1.3.1, 1.3.0,
1.2.3, 1.2.2

The project site contains an overview how well these versions were compressed.
Other interesting projects are AngularJS, BackboneJS, Bootstrap, D3, Ember, jQuery, Knockout, lodash, React, Socket.IO, ThreeJS, UnderscoreJS and Vue.

Changelog

Best Zopfli parameters so far:
Size Improvement Parameters Found
45780 bytes -2 bytes zopfli --i100000 --mls16384 --bsr10 --lazy --ohh March 25, 2016 @ 10:35
45782 bytes -1 byte zopfli --i100000 --mls32768 --bsr10 --lazy --ohh March 24, 2016 @ 17:09
45783 bytes -1 byte zopfli --i100000 --mls256 --bsr12 --lazy --ohh March 24, 2016 @ 15:12
45784 bytes -2 bytes zopfli --i100000 --mls4 --bsr21 --lazy --ohh March 24, 2016 @ 14:24
45786 bytes -1 byte zopfli --i10000 --mls256 --bsr12 --lazy --ohh March 24, 2016 @ 11:44
45787 bytes -4 bytes zopfli --i10000 --mls32768 --bsr23 --lazy --ohh March 24, 2016 @ 11:39
45791 bytes -1 byte zopfli --i1000 --mls256 --bsr12 --lazy --ohh March 24, 2016 @ 11:23
45792 bytes -9 bytes zopfli --i1000 --mls32 --bsr12 --lazy --ohh March 24, 2016 @ 11:19
45801 bytes zopfli --i100 --mls4 --bsr25 --lazy --ohh March 24, 2016 @ 11:05

If there are multiple parameter sets yielding the same compressed size, only the first one found is shown.

Most recent activity on July 20, 2020 @ 12:52.

Heatmaps

This Zopfli heatmap visualizes how compression changes when modifying the --bsr and --mls parameter.
Cell's contents is the best filesize achieved (in bytes, hover with mouse over cells to see number of iterations).

Good parameters are green, bad are red. The best and worst are bold as well.
The brightness of the blue background color indicates how many iterations were processed:
10,000, 100,000 or 1,000,000.
bsr \ mls
2 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384 32768
bsr \ mls
2 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384 32768
45802 45799 45800 45799 45804 45800 45798 45796 45797 45812 45793 45795 45816 45808 45813
45789 45787 45791 45792 45795 45797 45800 45797 45796 45806 45803 45801 45798 45801 45790
45808 45808 45792 45794 45795 45796 45811 45796 45796 45803 45806 45793 45809 45803 45802
45790 45790 45790 45792 45791 45810 45801 45796 45795 45801 45807 45803 45808 45807 45808
45792 45793 45792 45792 45792 45794 45798 45812 45812 45802 45811 45807 45818 45803 45802
45791 45790 45803 45804 45802 45794 45800 45794 45811 45800 45803 45807 45818 45804 45786
45792 45787 45793 45790 45794 45810 45803 45794 45812 45805 45807 45801 45818 45780 45782
45790 45794 45795 45798 45792 45792 45803 45793 45791 45805 45809 45812 45815 45787 45796
45788 45787 45792 45795 45787 45811 45801 45783 45812 45801 45809 45809 45810 45797 45786
45791 45794 45791 45794 45792 45793 45803 45791 45791 45807 45810 45807 45813 45787 45787
45790 45790 45790 45787 45792 45811 45801 45806 45796 45807 45807 45795 45811 45791 45798
45791 45792 45793 45792 45799 45794 45801 45797 45795 45800 45807 45798 45812 45786 45787
45790 45789 45790 45792 45798 45801 45801 45794 45811 45800 45804 45792 45812 45786 45800
45791 45790 45791 45791 45805 45807 45801 45796 45804 45800 45812 45795 45815 45787 45786
45792 45794 45789 45793 45792 45794 45803 45794 45810 45800 45804 45795 45810 45789 45813
45792 45792 45790 45803 45794 45810 45799 45796 45811 45801 45804 45793 45812 45792 45803
45790 45790 45790 45793 45804 45794 45801 45792 45810 45801 45804 45792 45807 45793 45795
45790 45784 45792 45812 45792 45794 45807 45792 45808 45802 45808 45811 45816 45792 45793
45792 45787 45790 45793 45794 45801 45801 45798 45801 45800 45803 45799 45813 45800 45786
45792 45790 45793 45792 45800 45803 45804 45794 45791 45804 45804 45798 45813 45791 45787
45790 45792 45793 45800 45806 45800 45799 45797 45802 45801 45810 45804 45817 45798 45794
45790 45787 45791 45805 45805 45810 45800 45795 45810 45801 45803 45792 45817 45789 45792
45791 45790 45791 45797 45793 45794 45804 45794 45814 45804 45807 45809 45814 45795 45796

Due to the Monte Carlo design of my search algorithm, not all parameters have reached the same number of iterations yet:
Iterations Min. Bytes Reduction Coverage
100 45801 bytes 100%
1,000 45791 bytes -10 bytes 100%
10,000 45785 bytes -6 bytes 100%
100,000 45780 bytes -5 bytes 1.16%
1,000,000 45780 bytes 0.29%
10,000,000

KZIP has far less options available for tuning/optimization. I only played around with the number of blocks (parameter -n):
Blocks Min. Bytes Compared To Best Zopfli Compared To Best KZIP
45922 bytes +142 bytes (+0.31%) +41 bytes
45881 bytes +101 bytes (+0.22%)
45922 bytes +142 bytes (+0.31%) +41 bytes
45930 bytes +150 bytes (+0.33%) +49 bytes
45956 bytes +176 bytes (+0.38%) +75 bytes
45967 bytes +187 bytes (+0.41%) +86 bytes
45971 bytes +191 bytes (+0.42%) +90 bytes
46008 bytes +228 bytes (+0.50%) +127 bytes
46026 bytes +246 bytes (+0.54%) +145 bytes

Non-DEFLATE Algorithms

Archivers based on completely different compression algorithms often produce superior results.
Unfortunately, browsers only support gzip compression at the moment.
However, support for Brotli is constantly growing - but your browser doesn't support it.
Algorithm Program Parameters Size Compared To Best Zopfli
ZPAQ (Wikipedia) zpaq zpaq -method 69 34361 bytes -11419 bytes (-24.94%)
RAR (proprietary) RAR rar a -m5 -md64m -mc63:128t -mt1 40522 bytes -5258 bytes (-11.49%)
PPMd (Wikipedia) 7zip 7za a -mx=9 -m0=ppmd 41344 bytes -4436 bytes (-9.69%)
Brotli (Wikipedia) brotli brotli -q 11 42367 bytes -3413 bytes (-7.46%)
LZMA2 (Wikipedia) xz xz -9 43432 bytes -2348 bytes (-5.13%)
Zstandard (Wikipedia) zstd zstd -19 44704 bytes -1076 bytes (-2.35%)
Burrows-Wheeler transform (Wikipedia) bzip2 bzip2 -9 44878 bytes -902 bytes (-1.97%)

Detailled Analysis

I wrote a DEFLATE decoder in Javascript. Click the button below to start a client-side analysis of the smallest gzipped files (may take a second):


Notes: pigz is a fast open source multi-threaded implementation of gzip written by one of the original authors of gzip.
However, when using compression level 11, pigz actually switches to the slower Zopfli algorithm and isn't multi-threaded anymore.
KrzyMOD's extensions to Zopfli offer the highest level of configuration and is therefore used for my brute-force search.
Ken Silverman wrote the closed-source KZIP compression program and Jonathon Fowler ported it to Linux.
Defluff was created by Joachim Henke; DeflOpt is a tool by Ben Jos Walbeehm.

website made by Stephan Brumme in 2015 and still improving in 2024.
all timestamps are displayed in central european time. see my changelog.
no flash, not even images or external css files - and everything squeezed into a single html file.
which was handsomely compressed before releasing it into the wild internet - obviously.

please visit my homepage and my blog, too.
email: minime (at) stephan-brumme.com

All trademarks are property of their respective owners. You know, the boring legal stuff.