Choose a version:
24% The original file has 379946 bytes (371.0k) and is available from the project website.
There you can find the official minified version, too, which brings down the size to 91638 bytes (89.5k, 24%).

After GZIP compression these minified files vary in size:
Boot
  35929 bytes (35.1k)
CDN
cdnhttps
  31466 bytes (30.7k)
CDN
Baidu
  31407 bytes (30.7k)
CDN
cdnjs
  31399 bytes (30.7k)
CDN
gzip -6 (default)
  31319 bytes (30.6k)
local copy
gzip -9
  31275 bytes (30.5k)
local copy
Yandex
  31260 bytes (30.5k)
CDN
7zip -mx=9 -tgzip
  29869 bytes (29.2k)
local copy
libdeflate -12
  29852 bytes (29.2k)
local copy
kzip -s0 -rn -b3
  29841 bytes (29.1k)
local copy
pigz -11 -n
  29794 bytes (29.1k)
local copy
Zopfli
  29731 bytes (29.0k)
local copy
Zopfli (defluff)
  29730 bytes (29.0k)
local copy

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

You will automatically get the smallest Dojo 1.6.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 1529 bytes by using my Dojo 1.6.0 Zopfli version instead of the best available CDN (5.14% smaller than Yandex, 29731 vs. 31260 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 --i100000 --mb8 --mls512 --bsr13 --lazy --ohh

(found December 2, 2015)
Description Value Parameter
iterations 100000  --i100000
maximum blocks 8  --mb8
maximum length score 512  --mls512
block splitting recursion 13  --bsr13
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 1 more byte (29730 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.6.0/dojo.js --location | md5sum
c943690aa400111757738cb1c91fdfc2  -
curl --silent --compressed https://minime.stephan-brumme.com/files/dojo/dojo-1.6.0.min.zopfli.js.gz | md5sum
c943690aa400111757738cb1c91fdfc2  -

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

These CDNs send you the original file:
CDN Size (compressed) MD5 (uncompressed) Timestamp
Boot 35929 bytes c943690aa400111757738cb1c91fdfc2 March 19, 2015 @ 15:32
cdnjs 31399 bytes c943690aa400111757738cb1c91fdfc2 February 8, 2015 @ 14:45
Yandex 31260 bytes c943690aa400111757738cb1c91fdfc2 June 20, 2013 @ 11:59

And some CDNs send you a different file:
CDN Size (compressed) MD5 (uncompressed) Comment / Diff Timestamp
cdnhttps 31466 bytes 3f4e8f8b963b887d38bd476cda0f9c0b < /*
< Copyright (c) 2004-2011, The Dojo Foundation All Rights R [...]
< Available via Academic Free License >= 2.1 OR the modifie [...]
< see: http://dojotoolkit.org/license for details
< */
<
< /*
< This is an optimized version of Dojo, built for deploymen [...]
< development. To get sources and documentation, please vis [...]
<
[...]
December 24, 2015 @ 07:33
Baidu 31407 bytes 795619dfe318401eb6ed6e9a4f25053a 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.14.2, 1.14.1, 1.14.0,
1.13.3, 1.13.2, 1.13.1, 1.13.0,
1.12.4, 1.12.3, 1.12.2, 1.12.1,
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.3, 1.6.2, 1.6.1, 1.6.0,
1.5.4, 1.5.3, 1.5.2, 1.5.1, 1.5.0,
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

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
29731 bytes -4 bytes zopfli --i100000 --mls512 --bsr13 --lazy --ohh December 2, 2015 @ 11:23
29735 bytes -2 bytes zopfli --i10000 --mls512 --bsr13 --lazy --ohh October 21, 2015 @ 13:36
29737 bytes -10 bytes zopfli --i1000 --mls512 --bsr13 --lazy --ohh September 10, 2015 @ 23:08
29747 bytes zopfli --i100 --mls512 --bsr13 --lazy --ohh September 10, 2015 @ 15:08

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

Most recent activity on June 16, 2016 @ 14:40.

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 or 100,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
29772 29796 29792 29788 29784 29796 29803 29806 29808 29801 29808 29804 29803 29809 29803
29775 29782 29780 29774 29783 29793 29756 29801 29801 29799 29793 29798 29804 29794 29806
29774 29762 29755 29796 29768 29763 29742 29754 29762 29799 29811 29803 29745 29802 29801
29758 29774 29767 29772 29763 29772 29754 29752 29757 29796 29791 29797 29759 29800 29802
29775 29776 29777 29774 29770 29772 29803 29759 29758 29788 29802 29800 29802 29797 29801
29763 29773 29773 29772 29774 29776 29797 29798 29779 29787 29794 29801 29791 29802 29802
29753 29752 29752 29774 29764 29775 29797 29748 29780 29785 29784 29791 29791 29794 29791
29751 29763 29760 29778 29750 29767 29747 29746 29753 29789 29796 29799 29803 29802 29795
29776 29769 29747 29764 29774 29765 29798 29796 29741 29785 29785 29789 29793 29807 29790
29749 29759 29763 29771 29768 29734 29791 29750 29731 29783 29786 29800 29746 29802 29803
29742 29741 29740 29752 29737 29749 29736 29748 29760 29783 29785 29799 29789 29803 29804
29765 29756 29769 29764 29762 29761 29737 29783 29734 29788 29785 29796 29791 29802 29801
29748 29755 29758 29743 29774 29762 29786 29753 29759 29798 29784 29797 29802 29803 29802
29760 29754 29766 29781 29772 29748 29803 29750 29753 29797 29792 29799 29796 29801 29801
29743 29759 29774 29743 29748 29753 29796 29752 29765 29796 29792 29801 29807 29801 29801
29755 29777 29761 29749 29770 29743 29798 29752 29757 29795 29794 29797 29791 29802 29802
29773 29771 29757 29773 29771 29771 29804 29755 29757 29810 29747 29788 29791 29791 29802
29750 29768 29777 29770 29776 29747 29797 29752 29763 29784 29736 29798 29794 29797 29792
29763 29754 29785 29773 29767 29769 29797 29752 29764 29782 29790 29800 29793 29793 29802
29774 29770 29750 29751 29772 29770 29771 29750 29760 29788 29785 29801 29793 29802 29792
29734 29767 29755 29768 29768 29744 29784 29754 29742 29782 29792 29791 29745 29801 29802
29735 29759 29776 29764 29768 29760 29791 29745 29741 29788 29784 29799 29743 29801 29801
29763 29770 29781 29785 29763 29760 29753 29753 29742 29783 29782 29788 29805 29794 29802

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 29747 bytes 100%
1,000 29737 bytes -10 bytes 100%
10,000 29735 bytes -2 bytes 100%
100,000 29731 bytes -4 bytes 2.61%
1,000,000
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
29844 bytes +113 bytes (+0.38%) +3 bytes
29850 bytes +119 bytes (+0.40%) +9 bytes
29884 bytes +153 bytes (+0.51%) +43 bytes
29841 bytes +110 bytes (+0.37%)
29880 bytes +149 bytes (+0.50%) +39 bytes
29872 bytes +141 bytes (+0.47%) +31 bytes
29881 bytes +150 bytes (+0.50%) +40 bytes
29867 bytes +136 bytes (+0.46%) +26 bytes
29903 bytes +172 bytes (+0.58%) +62 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 23452 bytes -6279 bytes (-21.12%)
RAR (proprietary) RAR rar a -m5 -md64m -mc63:128t -mt1 26381 bytes -3350 bytes (-11.27%)
PPMd (Wikipedia) 7zip 7za a -mx=9 -m0=ppmd 27386 bytes -2345 bytes (-7.89%)
Brotli (Wikipedia) brotli brotli -q 11 27459 bytes -2272 bytes (-7.64%)
LZMA2 (Wikipedia) xz xz -9 28404 bytes -1327 bytes (-4.46%)
Zstandard (Wikipedia) zstd zstd -19 29190 bytes -541 bytes (-1.82%)
Burrows-Wheeler transform (Wikipedia) bzip2 bzip2 -9 29256 bytes -475 bytes (-1.60%)

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 2018.
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