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

After GZIP compression these minified files vary in size:
gzip -6 (default)
  48295 bytes (47.2k)
local copy
gzip -9
  48258 bytes (47.1k)
local copy
7zip -mx=9 -tgzip
  46004 bytes (44.9k)
local copy
libdeflate -12
  45944 bytes (44.9k)
local copy
kzip -s0 -rn -b1
  45911 bytes (44.8k)
local copy
pigz -11 -n
  45898 bytes (44.8k)
local copy
zultra
  45866 bytes (44.8k)
local copy
Zopfli
  45811 bytes (44.7k)
local copy
Zopfli (defluff)
  45808 bytes (44.7k)
local copy

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

You will automatically get the smallest Dojo 1.7.10 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 --i1000000 --mb8 --mls16384 --bsr10 --lazy --ohh

(found June 13, 2016)
Description Value Parameter
iterations 1000000  --i1000000
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 3 more bytes (45808 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.10/dojo.js --location | md5sum
467598c9ea1d5514283a9151ee2ed7f0  -
curl --silent --compressed https://minime.stephan-brumme.com/files/dojo/dojo-1.7.10.min.zopfli.js.gz | md5sum
467598c9ea1d5514283a9151ee2ed7f0  -

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

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
45811 bytes -1 byte zopfli --i1000000 --mls16384 --bsr10 --lazy --ohh June 13, 2016 @ 16:16
45812 bytes -1 byte zopfli --i100000 --mls16384 --bsr10 --lazy --ohh June 10, 2016 @ 14:22
45813 bytes -4 bytes zopfli --i100000 --mls4 --bsr21 --lazy --ohh June 10, 2016 @ 12:46
45817 bytes -4 bytes zopfli --i100000 --mls2 --bsr21 --lazy --ohh June 10, 2016 @ 09:43
45821 bytes -4 bytes zopfli --i10000 --mls2 --bsr21 --lazy --ohh June 10, 2016 @ 08:47
45825 bytes -2 bytes zopfli --i1000 --mls2 --bsr21 --lazy --ohh June 10, 2016 @ 08:41
45827 bytes -1 byte zopfli --i1000 --mls16 --bsr7 --lazy --ohh June 10, 2016 @ 08:40
45828 bytes -2 bytes zopfli --i1000 --mls4096 --bsr40 --lazy --ohh June 10, 2016 @ 08:40
45830 bytes zopfli --i100 --mls2 --bsr22 --lazy --ohh June 9, 2016 @ 18:01

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:54.

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
45832 45827 45829 45828 45831 45828 45829 45835 45824 45843 45824 45825 45846 45839 45837
45820 45823 45819 45823 45823 45825 45831 45825 45827 45837 45830 45830 45830 45823 45825
45839 45839 45823 45823 45824 45825 45839 45827 45825 45834 45834 45822 45840 45831 45834
45818 45819 45821 45823 45819 45826 45831 45825 45841 45831 45831 45833 45844 45840 45839
45822 45824 45824 45821 45820 45841 45830 45825 45842 45833 45840 45836 45846 45834 45830
45822 45821 45833 45835 45833 45842 45831 45829 45841 45831 45845 45838 45840 45827 45811
45824 45813 45821 45817 45824 45845 45834 45824 45843 45835 45838 45832 45845 45811 45811
45821 45823 45822 45824 45821 45824 45829 45823 45822 45832 45836 45842 45845 45817 45827
45823 45821 45820 45824 45813 45838 45831 45819 45840 45831 45838 45842 45841 45818 45818
45822 45825 45823 45835 45828 45824 45834 45822 45822 45837 45845 45843 45840 45817 45817
45820 45819 45821 45819 45829 45841 45832 45832 45824 45839 45835 45827 45841 45822 45830
45821 45823 45821 45823 45835 45824 45832 45823 45824 45831 45834 45822 45838 45817 45817
45819 45820 45821 45824 45830 45831 45831 45825 45843 45831 45831 45838 45842 45817 45837
45818 45821 45820 45821 45829 45833 45831 45825 45826 45830 45843 45838 45846 45819 45817
45820 45824 45818 45817 45821 45825 45834 45825 45839 45831 45831 45824 45844 45833 45838
45821 45823 45821 45823 45833 45841 45829 45825 45839 45831 45831 45820 45846 45823 45823
45822 45821 45821 45818 45832 45825 45831 45823 45841 45831 45841 45822 45844 45824 45823
45817 45813 45821 45843 45821 45825 45838 45822 45822 45832 45834 45845 45841 45823 45822
45820 45818 45824 45824 45830 45832 45831 45823 45832 45831 45831 45829 45843 45836 45817
45820 45819 45823 45823 45830 45845 45834 45825 45822 45833 45831 45829 45847 45817 45817
45818 45822 45821 45831 45830 45831 45830 45825 45832 45831 45843 45831 45844 45824 45823
45821 45813 45822 45835 45832 45840 45831 45824 45841 45831 45831 45820 45842 45817 45823
45819 45820 45822 45821 45833 45825 45835 45825 45844 45834 45834 45820 45842 45817 45817

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 45830 bytes 100%
1,000 45821 bytes -9 bytes 100%
10,000 45814 bytes -7 bytes 100%
100,000 45812 bytes -2 bytes 2.32%
1,000,000 45811 bytes -1 byte 0.87%
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
45948 bytes +137 bytes (+0.30%) +37 bytes
45911 bytes +100 bytes (+0.22%)
45939 bytes +128 bytes (+0.28%) +28 bytes
45953 bytes +142 bytes (+0.31%) +42 bytes
45988 bytes +177 bytes (+0.39%) +77 bytes
45987 bytes +176 bytes (+0.38%) +76 bytes
45989 bytes +178 bytes (+0.39%) +78 bytes
46030 bytes +219 bytes (+0.48%) +119 bytes
46046 bytes +235 bytes (+0.51%) +135 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 34374 bytes -11437 bytes (-24.97%)
RAR (proprietary) RAR rar a -m5 -md64m -mc63:128t -mt1 40540 bytes -5271 bytes (-11.51%)
PPMd (Wikipedia) 7zip 7za a -mx=9 -m0=ppmd 41365 bytes -4446 bytes (-9.71%)
Brotli (Wikipedia) brotli brotli -q 11 42403 bytes -3408 bytes (-7.44%)
LZMA2 (Wikipedia) xz xz -9 43460 bytes -2351 bytes (-5.13%)
Zstandard (Wikipedia) zstd zstd -19 44735 bytes -1076 bytes (-2.35%)
Burrows-Wheeler transform (Wikipedia) bzip2 bzip2 -9 44903 bytes -908 bytes (-1.98%)

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.