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

After GZIP compression these minified files vary in size:
Boot
  55421 bytes (54.1k)
CDN
Baidu
  48232 bytes (47.1k)
CDN
cdnjs
  48225 bytes (47.1k)
CDN
gzip -6 (default)
  48049 bytes (46.9k)
local copy
gzip -9
  48023 bytes (46.9k)
local copy
Yandex
  48016 bytes (46.9k)
CDN
7zip -mx=9 -tgzip
  45814 bytes (44.7k)
local copy
libdeflate -12
  45782 bytes (44.7k)
local copy
kzip -s0 -rn -b1
  45736 bytes (44.7k)
local copy
pigz -11 -n
  45728 bytes (44.7k)
local copy
zultra
  45728 bytes (44.7k)
local copy
Zopfli
  45638 bytes (44.6k)
local copy

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

You will automatically get the smallest Dojo 1.7.4 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 2378 bytes by using my Dojo 1.7.4 Zopfli version instead of the best available CDN (5.21% smaller than Yandex, 45638 vs. 48016 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 --mls8 --bsr4 --lazy --ohh

(found December 3, 2015)
Description Value Parameter
iterations 100000  --i100000
maximum blocks 8  --mb8
maximum length score 8  --mls8
block splitting recursion 4  --bsr4
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.4/dojo.js --location | md5sum
0ca8ee9015c99b45b4c29f5b0f7d9094  -
curl --silent --compressed https://minime.stephan-brumme.com/files/dojo/dojo-1.7.4.min.zopfli.js.gz | md5sum
0ca8ee9015c99b45b4c29f5b0f7d9094  -

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

These CDNs send you the original file:
CDN Size (compressed) MD5 (uncompressed) Timestamp
Boot 55421 bytes 0ca8ee9015c99b45b4c29f5b0f7d9094 March 19, 2015 @ 15:34
cdnjs 48225 bytes 0ca8ee9015c99b45b4c29f5b0f7d9094 February 8, 2015 @ 14:45

And some CDNs send you a different file:
CDN Size (compressed) MD5 (uncompressed) Comment / Diff Timestamp
Baidu 48232 bytes db6c9279f08d27cac762dce7aaf887fc only whitespaces differ January 7, 2015 @ 10:16
Yandex 48016 bytes 7a690fa62dc35fd3e9dbd4070e1b6ce5 < (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

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
45638 bytes -3 bytes zopfli --i100000 --mls8 --bsr4 --lazy --ohh December 3, 2015 @ 09:19
45641 bytes -5 bytes zopfli --i10000 --mls16384 --bsr9 --lazy --ohh October 14, 2015 @ 05:34
45646 bytes -1 byte zopfli --i1000 --mls16384 --bsr9 --lazy --ohh September 14, 2015 @ 13:28
45647 bytes -3 bytes zopfli --i1000 --mls64 --bsr8 --lazy --ohh September 12, 2015 @ 21:01
45650 bytes -5 bytes zopfli --i1000 --mls512 --bsr9 --lazy --ohh September 10, 2015 @ 21:55
45655 bytes zopfli --i100 --mls512 --bsr10 --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 July 20, 2020 @ 12:47.

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
45658 45659 45662 45657 45663 45658 45659 45654 45651 45652 45650 45650 45679 45688 45673
45653 45651 45638 45645 45649 45652 45654 45649 45653 45664 45659 45675 45680 45660 45675
45660 45660 45652 45648 45658 45653 45656 45651 45653 45663 45662 45664 45649 45658 45653
45657 45653 45647 45649 45646 45658 45657 45645 45649 45665 45653 45664 45680 45654 45667
45649 45650 45647 45653 45650 45645 45659 45649 45649 45657 45663 45678 45682 45656 45673
45653 45652 45649 45652 45651 45650 45658 45647 45649 45667 45663 45663 45677 45640 45656
45645 45650 45649 45642 45651 45652 45659 45646 45647 45670 45659 45658 45677 45647 45655
45651 45650 45649 45653 45651 45652 45667 45649 45646 45663 45655 45666 45684 45648 45662
45651 45650 45647 45649 45647 45647 45649 45649 45650 45658 45663 45662 45668 45647 45645
45657 45650 45652 45651 45651 45654 45660 45649 45648 45655 45669 45657 45678 45661 45657
45649 45649 45649 45649 45652 45648 45659 45649 45661 45663 45658 45662 45674 45646 45653
45655 45648 45648 45651 45649 45652 45661 45649 45650 45665 45663 45669 45680 45654 45666
45650 45648 45647 45650 45648 45647 45670 45652 45665 45664 45663 45662 45656 45653 45663
45645 45655 45649 45652 45650 45649 45663 45649 45655 45658 45663 45662 45680 45644 45673
45649 45652 45648 45649 45648 45649 45659 45649 45649 45656 45663 45655 45667 45642 45666
45652 45652 45652 45652 45654 45646 45659 45649 45656 45664 45663 45669 45683 45654 45662
45651 45652 45646 45653 45648 45653 45663 45649 45655 45664 45664 45657 45680 45655 45679
45645 45650 45649 45650 45651 45652 45662 45649 45649 45663 45663 45662 45674 45646 45654
45649 45652 45650 45650 45656 45658 45665 45652 45662 45665 45663 45665 45674 45658 45665
45648 45650 45649 45650 45651 45646 45659 45646 45650 45657 45653 45653 45680 45655 45662
45646 45651 45650 45649 45651 45647 45664 45653 45655 45671 45661 45668 45678 45652 45653
45651 45649 45646 45653 45649 45645 45659 45649 45649 45664 45663 45657 45680 45645 45664
45652 45650 45655 45650 45646 45646 45663 45650 45649 45660 45663 45654 45663 45650 45647

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 45652 bytes 100%
1,000 45646 bytes -6 bytes 100%
10,000 45641 bytes -5 bytes 100%
100,000 45638 bytes -3 bytes 1.16%
1,000,000 45638 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
45766 bytes +128 bytes (+0.28%) +30 bytes
45736 bytes +98 bytes (+0.21%)
45757 bytes +119 bytes (+0.26%) +21 bytes
45775 bytes +137 bytes (+0.30%) +39 bytes
45814 bytes +176 bytes (+0.39%) +78 bytes
45801 bytes +163 bytes (+0.36%) +65 bytes
45828 bytes +190 bytes (+0.42%) +92 bytes
45877 bytes +239 bytes (+0.52%) +141 bytes
45913 bytes +275 bytes (+0.60%) +177 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 34117 bytes -11521 bytes (-25.24%)
RAR (proprietary) RAR rar a -m5 -md64m -mc63:128t -mt1 40015 bytes -5623 bytes (-12.32%)
PPMd (Wikipedia) 7zip 7za a -mx=9 -m0=ppmd 40728 bytes -4910 bytes (-10.76%)
Brotli (Wikipedia) brotli brotli -q 11 41938 bytes -3700 bytes (-8.11%)
LZMA2 (Wikipedia) xz xz -9 43004 bytes -2634 bytes (-5.77%)
Burrows-Wheeler transform (Wikipedia) bzip2 bzip2 -9 44299 bytes -1339 bytes (-2.93%)
Zstandard (Wikipedia) zstd zstd -19 44317 bytes -1321 bytes (-2.89%)

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.