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

After GZIP compression these minified files vary in size:
gzip -6 (default)
  54072 bytes (52.8k)
local copy
gzip -9
  54024 bytes (52.8k)
local copy
7zip -mx=9 -tgzip
  51433 bytes (50.2k)
local copy
libdeflate -12
  51382 bytes (50.2k)
local copy
zultra
  51346 bytes (50.1k)
local copy
kzip -s0 -rn -b1
  51345 bytes (50.1k)
local copy
pigz -11 -n
  51345 bytes (50.1k)
local copy
Zopfli
  51252 bytes (50.1k)
local copy
Zopfli (defluff)
  51249 bytes (50.0k)
local copy

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

You will automatically get the smallest Dojo 1.8.13 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 --mls2 --bsr25 --lazy --ohh

(found July 6, 2018)
Description Value Parameter
iterations 100000  --i100000
maximum blocks 8  --mb8
maximum length score 2  --mls2
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

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 (51249 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.8.13/dojo.js --location | md5sum
99bab78e72e0d6e73ea8566314c79567  -
curl --silent --compressed https://minime.stephan-brumme.com/files/dojo/dojo-1.8.13.min.zopfli.js.gz | md5sum
99bab78e72e0d6e73ea8566314c79567  -

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

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
51252 bytes -1 byte zopfli --i100000 --mls2 --bsr25 --lazy --ohh July 6, 2018 @ 09:47
51253 bytes -5 bytes zopfli --i100000 --mls2 --bsr11 --lazy --ohh July 6, 2018 @ 08:58
51258 bytes -1 byte zopfli --i10000 --mls2 --bsr11 --lazy --ohh July 5, 2018 @ 19:44
51259 bytes -6 bytes zopfli --i10000 --mls2 --bsr25 --lazy --ohh July 5, 2018 @ 19:34
51265 bytes -3 bytes zopfli --i1000 --mls2 --bsr20 --lazy --ohh July 5, 2018 @ 16:26
51268 bytes -2 bytes zopfli --i1000 --mls4 --bsr8 --lazy --ohh July 5, 2018 @ 16:24
51270 bytes zopfli --i100 --mls2 --bsr12 --lazy --ohh July 5, 2018 @ 16:15

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

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
51264 51267 51266 51269 51264 51272 51267 51269 51276 51283 51286 51282 51285 51291 51296
51268 51262 51277 51316 51279 51267 51265 51267 51265 51270 51273 51275 51274 51276 51269
51300 51285 51269 51267 51268 51264 51263 51267 51266 51275 51267 51275 51273 51268 51272
51264 51300 51278 51278 51265 51268 51266 51265 51266 51278 51272 51275 51280 51267 51266
51295 51261 51277 51271 51270 51264 51264 51266 51270 51270 51269 51270 51269 51273 51278
51260 51276 51314 51284 51262 51265 51264 51264 51266 51277 51283 51283 51272 51271 51268
51268 51264 51297 51289 51276 51268 51264 51268 51269 51268 51269 51275 51272 51268 51283
51253 51274 51280 51281 51268 51263 51267 51265 51274 51278 51270 51274 51272 51272 51279
51254 51265 51298 51286 51267 51265 51266 51266 51266 51278 51270 51274 51272 51279 51283
51299 51283 51300 51278 51266 51268 51264 51265 51274 51273 51275 51275 51271 51274 51287
51298 51279 51305 51280 51266 51268 51265 51271 51266 51278 51268 51274 51273 51266 51267
51260 51303 51276 51279 51262 51267 51266 51271 51266 51277 51268 51275 51272 51272 51267
51267 51276 51277 51283 51268 51267 51264 51269 51266 51278 51267 51275 51268 51267 51269
51267 51301 51302 51301 51267 51269 51263 51266 51266 51275 51272 51275 51269 51264 51265
51262 51300 51303 51280 51278 51265 51264 51266 51266 51277 51269 51274 51272 51279 51264
51261 51302 51278 51278 51282 51268 51264 51266 51270 51273 51270 51277 51274 51264 51275
51260 51282 51279 51285 51270 51268 51264 51262 51270 51273 51276 51274 51268 51279 51268
51262 51294 51278 51278 51262 51263 51264 51269 51268 51273 51269 51274 51272 51279 51273
51263 51300 51302 51281 51264 51264 51269 51266 51266 51276 51270 51277 51273 51269 51280
51254 51291 51302 51274 51264 51268 51266 51266 51272 51278 51273 51274 51273 51280 51272
51252 51299 51275 51308 51265 51268 51263 51265 51268 51277 51275 51278 51279 51280 51276
51260 51300 51302 51279 51269 51264 51266 51268 51266 51280 51271 51274 51271 51271 51267
51261 51297 51281 51283 51267 51269 51265 51268 51266 51273 51273 51274 51271 51279 51276

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 51270 bytes 100%
1,000 51265 bytes -5 bytes 100%
10,000 51258 bytes -7 bytes 100%
100,000 51252 bytes -6 bytes 1.16%
1,000,000 51252 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
51409 bytes +157 bytes (+0.31%) +64 bytes
51345 bytes +93 bytes (+0.18%)
51374 bytes +122 bytes (+0.24%) +29 bytes
51416 bytes +164 bytes (+0.32%) +71 bytes
51405 bytes +153 bytes (+0.30%) +60 bytes
51460 bytes +208 bytes (+0.41%) +115 bytes
51476 bytes +224 bytes (+0.44%) +131 bytes
51473 bytes +221 bytes (+0.43%) +128 bytes
51497 bytes +245 bytes (+0.48%) +152 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 37752 bytes -13500 bytes (-26.34%)
RAR (proprietary) RAR rar a -m5 -md64m -mc63:128t -mt1 45010 bytes -6242 bytes (-12.18%)
PPMd (Wikipedia) 7zip 7za a -mx=9 -m0=ppmd 45899 bytes -5353 bytes (-10.44%)
Brotli (Wikipedia) brotli brotli -q 11 47257 bytes -3995 bytes (-7.79%)
LZMA2 (Wikipedia) xz xz -9 48284 bytes -2968 bytes (-5.79%)
Zstandard (Wikipedia) zstd zstd -19 49700 bytes -1552 bytes (-3.03%)
Burrows-Wheeler transform (Wikipedia) bzip2 bzip2 -9 49903 bytes -1349 bytes (-2.63%)

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.