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

After GZIP compression these minified files vary in size:
Boot
  47178 bytes (46.1k)
CDN
Yandex
  45164 bytes (44.1k)
CDN
Baidu
  40986 bytes (40.0k)
CDN
cdnjs
  40979 bytes (40.0k)
CDN
gzip -6 (default)
  40838 bytes (39.9k)
local copy
gzip -9
  40818 bytes (39.9k)
local copy
7zip -mx=9 -tgzip
  38948 bytes (38.0k)
local copy
libdeflate -12
  38915 bytes (38.0k)
local copy
kzip -s0 -rn -b1
  38913 bytes (38.0k)
local copy
zultra
  38879 bytes (38.0k)
local copy
pigz -11 -n
  38856 bytes (37.9k)
local copy
Zopfli
  38806 bytes (37.9k)
local copy

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

You will automatically get the smallest Dojo 1.7.0 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

Save 2173 bytes by using my Dojo 1.7.0 Zopfli version instead of the best available CDN (5.60% smaller than cdnjs, 38806 vs. 40979 bytes):
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 --bsr25 --lazy --ohh

(found February 26, 2020)
Description Value Parameter
iterations 1000000  --i1000000
maximum blocks 8  --mb8
maximum length score 16384  --mls16384
block splitting recursion 25  --bsr25
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

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.0/dojo.js --location | md5sum
9c61a9c6197d50003424553add886f70  -
curl --silent --compressed https://minime.stephan-brumme.com/files/dojo/dojo-1.7.0.min.zopfli.js.gz | md5sum
9c61a9c6197d50003424553add886f70  -

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

These CDNs send you the original file:
CDN Size (compressed) MD5 (uncompressed) Timestamp
Boot 47178 bytes 9c61a9c6197d50003424553add886f70 March 19, 2015 @ 15:33
cdnjs 40979 bytes 9c61a9c6197d50003424553add886f70 February 8, 2015 @ 14:45

And some CDNs send you a different file:
CDN Size (compressed) MD5 (uncompressed) Comment / Diff Timestamp
Yandex 45164 bytes 49fb00782551c5b6dcac070ce016c862 < (function(_1,_2){var _3=function(){},_4=function(it){for(v [...]
> (function(_1,_2){var _3=function(){},_4=function(it){for(v [...]
June 20, 2013 @ 11:59
Baidu 40986 bytes 4d3f67aadbfb615cedb955d43c7d9c0b only whitespaces differ January 7, 2015 @ 10:16

Note: only the MD5 hashes are shown to keep things simple.

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
38806 bytes -1 byte zopfli --i1000000 --mls16384 --bsr25 --lazy --ohh February 26, 2020 @ 23:47
38807 bytes -2 bytes zopfli --i100000 --mls16384 --bsr25 --lazy --ohh December 2, 2015 @ 14:56
38809 bytes -2 bytes zopfli --i100000 --mls16384 --bsr18 --lazy --ohh December 2, 2015 @ 12:20
38811 bytes -6 bytes zopfli --i10000 --mls16384 --bsr18 --lazy --ohh November 22, 2015 @ 22:21
38817 bytes -1 byte zopfli --i1000 --mls16384 --bsr18 --lazy --ohh September 20, 2015 @ 03:39
38818 bytes -2 bytes zopfli --i1000 --mls16384 --bsr7 --lazy --ohh September 14, 2015 @ 15:58
38820 bytes -1 byte zopfli --i1000 --mls128 --bsr13 --lazy --ohh September 14, 2015 @ 15:52
38821 bytes zopfli --i100 --mls16384 --bsr7 --lazy --ohh September 11, 2015 @ 15:06

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

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
38834 38833 38832 38826 38825 38833 38830 38830 38831 38833 38830 38832 38829 38828 38828
38824 38817 38820 38809 38816 38825 38833 38824 38836 38822 38824 38827 38851 38828 38818
38820 38820 38835 38838 38834 38835 38831 38830 38833 38823 38822 38827 38843 38818 38832
38816 38815 38831 38832 38832 38833 38815 38815 38824 38827 38827 38835 38843 38809 38820
38813 38814 38817 38814 38815 38834 38831 38815 38833 38823 38825 38828 38833 38841 38816
38811 38817 38809 38812 38815 38834 38832 38820 38826 38825 38825 38838 38847 38848 38822
38820 38823 38809 38834 38818 38815 38816 38816 38836 38822 38826 38837 38843 38820 38818
38817 38814 38832 38832 38835 38834 38832 38823 38826 38823 38824 38837 38844 38819 38817
38841 38834 38832 38832 38831 38834 38832 38819 38823 38823 38830 38838 38848 38818 38818
38815 38814 38836 38832 38832 38815 38811 38816 38825 38823 38823 38836 38846 38810 38817
38839 38831 38834 38833 38835 38834 38832 38816 38827 38824 38826 38839 38845 38817 38816
38819 38814 38834 38832 38831 38831 38832 38812 38816 38822 38822 38836 38844 38819 38818
38819 38815 38815 38821 38816 38833 38835 38821 38828 38823 38823 38836 38847 38818 38816
38815 38815 38832 38832 38831 38835 38835 38817 38824 38823 38824 38837 38844 38821 38817
38814 38814 38832 38832 38814 38832 38831 38819 38830 38823 38824 38839 38840 38809 38816
38814 38816 38832 38815 38823 38835 38830 38832 38823 38823 38824 38839 38838 38818 38817
38814 38832 38833 38835 38814 38833 38832 38817 38824 38823 38824 38827 38844 38827 38817
38818 38816 38833 38832 38834 38833 38816 38831 38833 38823 38826 38828 38851 38818 38817
38815 38815 38834 38832 38816 38832 38830 38819 38824 38822 38825 38837 38843 38820 38819
38815 38814 38816 38832 38814 38833 38831 38815 38825 38822 38825 38834 38844 38816 38816
38815 38814 38814 38835 38831 38833 38818 38832 38823 38822 38826 38837 38844 38806 38817
38814 38814 38834 38834 38815 38835 38831 38815 38824 38823 38826 38835 38844 38819 38818
38818 38832 38831 38832 38835 38835 38833 38816 38824 38833 38824 38827 38841 38810 38817

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 38821 bytes 100%
1,000 38817 bytes -4 bytes 100%
10,000 38811 bytes -6 bytes 100%
100,000 38807 bytes -4 bytes 3.48%
1,000,000 38806 bytes -1 byte 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
38917 bytes +111 bytes (+0.29%) +4 bytes
38913 bytes +107 bytes (+0.28%)
38913 bytes +107 bytes (+0.28%)
38955 bytes +149 bytes (+0.38%) +42 bytes
38924 bytes +118 bytes (+0.30%) +11 bytes
38963 bytes +157 bytes (+0.40%) +50 bytes
38989 bytes +183 bytes (+0.47%) +76 bytes
38974 bytes +168 bytes (+0.43%) +61 bytes
38938 bytes +132 bytes (+0.34%) +25 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 29403 bytes -9403 bytes (-24.23%)
RAR (proprietary) RAR rar a -m5 -md64m -mc63:128t -mt1 34060 bytes -4746 bytes (-12.23%)
PPMd (Wikipedia) 7zip 7za a -mx=9 -m0=ppmd 35660 bytes -3146 bytes (-8.11%)
Brotli (Wikipedia) brotli brotli -q 11 35772 bytes -3034 bytes (-7.82%)
LZMA2 (Wikipedia) xz xz -9 36768 bytes -2038 bytes (-5.25%)
Burrows-Wheeler transform (Wikipedia) bzip2 bzip2 -9 37704 bytes -1102 bytes (-2.84%)
Zstandard (Wikipedia) zstd zstd -19 37853 bytes -953 bytes (-2.46%)

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.