Choose a version:
26% The original file has 634407 bytes (619.5k) and is available from the project website.
There you can find the official minified version, too, which brings down the size to 165452 bytes (161.6k, 26%).

After GZIP compression these minified files vary in size:
gzip -6 (default)
  55696 bytes (54.4k)
local copy
gzip -9
  55631 bytes (54.3k)
local copy
libdeflate -12
  53043 bytes (51.8k)
local copy
7zip -mx=9 -tgzip
  52947 bytes (51.7k)
local copy
zultra
  52924 bytes (51.7k)
local copy
pigz -11 -n
  52904 bytes (51.7k)
local copy
kzip -s0 -rn -b1
  52893 bytes (51.7k)
local copy
Zopfli
  52806 bytes (51.6k)
local copy
Zopfli (defluff)
  52801 bytes (51.6k)
local copy

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

You will automatically get the smallest Dojo 1.10.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 --i100000 --mb8 --mls512 --bsr16 --lazy --ohh

(found October 4, 2018)
Description Value Parameter
iterations 100000  --i100000
maximum blocks 8  --mb8
maximum length score 512  --mls512
block splitting recursion 16  --bsr16
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 5 more bytes (52801 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.10.10/dojo.js --location | md5sum
615dd2c9a7a52048fe2255a7576f8699  -
curl --silent --compressed https://minime.stephan-brumme.com/files/dojo/dojo-1.10.10.min.zopfli.js.gz | md5sum
615dd2c9a7a52048fe2255a7576f8699  -

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

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
52806 bytes -5 bytes zopfli --i100000 --mls512 --bsr16 --lazy --ohh October 4, 2018 @ 12:11
52811 bytes -1 byte zopfli --i10000 --mls512 --bsr16 --lazy --ohh October 3, 2018 @ 15:22
52812 bytes -1 byte zopfli --i10000 --mls32 --bsr4 --lazy --ohh October 3, 2018 @ 13:16
52813 bytes -2 bytes zopfli --i10000 --mls4 --bsr16 --lazy --ohh October 3, 2018 @ 12:59
52815 bytes -1 byte zopfli --i1000 --mls2 --bsr19 --lazy --ohh October 3, 2018 @ 09:46
52816 bytes -2 bytes zopfli --i1000 --mls128 --bsr12 --lazy --ohh October 3, 2018 @ 09:44
52818 bytes -2 bytes zopfli --i1000 --mls16 --bsr7 --lazy --ohh October 3, 2018 @ 09:44
52820 bytes zopfli --i100 --mls2 --bsr22 --lazy --ohh October 2, 2018 @ 10:40

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

Most recent activity on February 24, 2022 @ 15:19.

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
52815 52816 52816 52819 52823 52818 52816 52819 52820 52823 52827 52819 52826 52842 52822
52815 52815 52820 52832 52807 52823 52824 52815 52820 52821 52821 52824 52819 52820 52820
52814 52817 52820 52864 52819 52819 52818 52825 52821 52822 52823 52822 52823 52824 52818
52850 52816 52851 52816 52814 52817 52817 52819 52820 52816 52820 52824 52824 52826 52826
52808 52817 52854 52860 52816 52819 52826 52813 52820 52823 52824 52825 52825 52824 52822
52827 52814 52829 52820 52824 52819 52826 52816 52822 52820 52821 52828 52822 52828 52819
52808 52816 52815 52840 52816 52815 52812 52816 52822 52819 52820 52826 52820 52823 52821
52815 52814 52807 52818 52816 52829 52812 52815 52825 52821 52821 52821 52821 52826 52826
52815 52817 52817 52824 52824 52817 52813 52815 52830 52819 52822 52826 52821 52826 52819
52814 52816 52815 52824 52815 52817 52814 52815 52820 52820 52820 52823 52818 52824 52830
52814 52807 52818 52849 52848 52815 52815 52814 52824 52819 52821 52826 52822 52825 52825
52814 52817 52815 52814 52816 52818 52820 52822 52816 52819 52821 52826 52821 52820 52827
52815 52813 52815 52854 52815 52830 52825 52820 52806 52822 52820 52825 52822 52830 52831
52816 52817 52818 52853 52818 52819 52836 52819 52823 52819 52821 52823 52823 52823 52821
52814 52817 52816 52818 52819 52818 52834 52815 52825 52819 52822 52826 52821 52825 52821
52813 52817 52863 52860 52825 52815 52814 52816 52815 52819 52821 52828 52822 52826 52829
52814 52814 52816 52818 52849 52815 52831 52817 52824 52820 52821 52817 52826 52824 52819
52816 52816 52815 52814 52848 52817 52824 52815 52822 52822 52822 52825 52822 52824 52818
52814 52814 52872 52853 52820 52819 52824 52823 52822 52820 52822 52823 52825 52824 52825
52815 52815 52816 52850 52817 52818 52824 52815 52822 52820 52821 52823 52827 52823 52821
52815 52807 52815 52850 52817 52816 52823 52815 52824 52821 52821 52824 52823 52825 52824
52814 52817 52815 52818 52819 52815 52823 52815 52823 52821 52822 52827 52824 52825 52818
52814 52817 52815 52850 52815 52818 52812 52818 52823 52823 52822 52824 52821 52824 52824

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 52820 bytes 100%
1,000 52815 bytes -5 bytes 100%
10,000 52811 bytes -4 bytes 100%
100,000 52806 bytes -5 bytes 2.90%
1,000,000 52806 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
52957 bytes +151 bytes (+0.29%) +64 bytes
52893 bytes +87 bytes (+0.16%)
52924 bytes +118 bytes (+0.22%) +31 bytes
52943 bytes +137 bytes (+0.26%) +50 bytes
52959 bytes +153 bytes (+0.29%) +66 bytes
52974 bytes +168 bytes (+0.32%) +81 bytes
53025 bytes +219 bytes (+0.41%) +132 bytes
53060 bytes +254 bytes (+0.48%) +167 bytes
53071 bytes +265 bytes (+0.50%) +178 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 38883 bytes -13923 bytes (-26.37%)
RAR (proprietary) RAR rar a -m5 -md64m -mc63:128t -mt1 46378 bytes -6428 bytes (-12.17%)
PPMd (Wikipedia) 7zip 7za a -mx=9 -m0=ppmd 47347 bytes -5459 bytes (-10.34%)
Brotli (Wikipedia) brotli brotli -q 11 48762 bytes -4044 bytes (-7.66%)
LZMA2 (Wikipedia) xz xz -9 49848 bytes -2958 bytes (-5.60%)
Zstandard (Wikipedia) zstd zstd -19 51282 bytes -1524 bytes (-2.89%)
Burrows-Wheeler transform (Wikipedia) bzip2 bzip2 -9 51579 bytes -1227 bytes (-2.32%)

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.