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

After GZIP compression these minified files vary in size:
gzip -6 (default)
  56217 bytes (54.9k)
local copy
gzip -9
  56148 bytes (54.8k)
local copy
libdeflate -12
  53495 bytes (52.2k)
local copy
7zip -mx=9 -tgzip
  53462 bytes (52.2k)
local copy
zultra
  53387 bytes (52.1k)
local copy
kzip -s0 -rn -b1
  53378 bytes (52.1k)
local copy
pigz -11 -n
  53363 bytes (52.1k)
local copy
Zopfli
  53283 bytes (52.0k)
local copy
Zopfli (defluff)
  53280 bytes (52.0k)
local copy

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

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

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 --mls128 --bsr25 --lazy --ohh

(found August 13, 2018)
Description Value Parameter
iterations 1000000  --i1000000
maximum blocks 8  --mb8
maximum length score 128  --mls128
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 (53280 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.14.0/dojo.js --location | md5sum
47ad49c27d961596ed66b50a7372238e  -
curl --silent --compressed https://minime.stephan-brumme.com/files/dojo/dojo-1.14.0.min.zopfli.js.gz | md5sum
47ad49c27d961596ed66b50a7372238e  -

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

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
53283 bytes -1 byte zopfli --i1000000 --mls128 --bsr25 --lazy --ohh August 13, 2018 @ 22:50
53284 bytes -7 bytes zopfli --i100000 --mls128 --bsr25 --lazy --ohh August 13, 2018 @ 12:44
53291 bytes -1 byte zopfli --i10000 --mls128 --bsr15 --lazy --ohh August 13, 2018 @ 11:45
53292 bytes -2 bytes zopfli --i10000 --mls16 --bsr10 --lazy --ohh August 13, 2018 @ 11:26
53294 bytes -3 bytes zopfli --i10000 --mls256 --bsr6 --lazy --ohh August 13, 2018 @ 11:20
53297 bytes -2 bytes zopfli --i1000 --mls256 --bsr6 --lazy --ohh August 13, 2018 @ 11:12
53299 bytes -1 byte zopfli --i1000 --mls256 --bsr17 --lazy --ohh August 13, 2018 @ 11:11
53300 bytes zopfli --i100 --mls256 --bsr6 --lazy --ohh August 13, 2018 @ 11:08

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

Most recent activity on March 6, 2022 @ 22:27.

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
53294 53294 53295 53298 53297 53295 53299 53294 53314 53297 53297 53297 53308 53324 53321
53329 53305 53297 53297 53297 53307 53295 53293 53304 53297 53316 53299 53307 53315 53303
53333 53338 53292 53295 53294 53308 53308 53294 53303 53302 53309 53313 53307 53309 53308
53336 53334 53298 53334 53308 53305 53300 53295 53297 53302 53310 53294 53299 53313 53306
53328 53325 53292 53333 53295 53307 53283 53294 53302 53301 53313 53301 53307 53313 53311
53326 53333 53296 53293 53293 53305 53294 53296 53304 53301 53315 53305 53307 53317 53311
53324 53304 53296 53292 53307 53307 53295 53293 53301 53304 53307 53294 53295 53314 53317
53330 53336 53330 53294 53295 53308 53294 53295 53295 53301 53304 53294 53308 53314 53302
53329 53338 53297 53334 53294 53311 53283 53294 53304 53301 53308 53306 53307 53306 53307
53324 53336 53292 53295 53297 53308 53283 53294 53304 53301 53309 53293 53294 53317 53310
53294 53295 53340 53294 53296 53307 53287 53294 53302 53302 53304 53299 53308 53319 53301
53328 53331 53294 53295 53310 53306 53283 53294 53302 53302 53308 53294 53293 53307 53316
53330 53326 53285 53333 53296 53293 53283 53292 53302 53313 53306 53297 53308 53306 53313
53335 53326 53296 53331 53297 53294 53292 53293 53305 53301 53307 53298 53308 53307 53313
53338 53334 53293 53294 53294 53292 53283 53302 53302 53301 53307 53294 53308 53315 53313
53293 53325 53296 53329 53297 53307 53283 53292 53302 53302 53307 53311 53308 53313 53316
53327 53335 53296 53293 53295 53306 53283 53302 53304 53302 53304 53297 53309 53315 53319
53328 53328 53293 53294 53292 53305 53283 53292 53304 53302 53307 53294 53308 53306 53315
53325 53334 53296 53294 53295 53311 53283 53294 53304 53301 53304 53306 53308 53307 53301
53294 53294 53334 53293 53294 53307 53283 53293 53302 53301 53306 53294 53309 53308 53312
53327 53331 53294 53334 53294 53306 53283 53302 53305 53302 53308 53294 53309 53314 53312
53326 53333 53293 53329 53297 53292 53292 53295 53302 53301 53307 53301 53307 53316 53311
53328 53329 53297 53328 53296 53308 53283 53287 53304 53301 53303 53299 53307 53307 53312

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 53300 bytes 100%
1,000 53297 bytes -3 bytes 100%
10,000 53291 bytes -6 bytes 100%
100,000 53284 bytes -7 bytes 4.64%
1,000,000 53283 bytes -1 byte 3.77%
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
53459 bytes +176 bytes (+0.33%) +81 bytes
53378 bytes +95 bytes (+0.18%)
53411 bytes +128 bytes (+0.24%) +33 bytes
53427 bytes +144 bytes (+0.27%) +49 bytes
53459 bytes +176 bytes (+0.33%) +81 bytes
53462 bytes +179 bytes (+0.34%) +84 bytes
53468 bytes +185 bytes (+0.35%) +90 bytes
53504 bytes +221 bytes (+0.41%) +126 bytes
53539 bytes +256 bytes (+0.48%) +161 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 39116 bytes -14167 bytes (-26.59%)
RAR (proprietary) RAR rar a -m5 -md64m -mc63:128t -mt1 46758 bytes -6525 bytes (-12.25%)
PPMd (Wikipedia) 7zip 7za a -mx=9 -m0=ppmd 47712 bytes -5571 bytes (-10.46%)
Brotli (Wikipedia) brotli brotli -q 11 49271 bytes -4012 bytes (-7.53%)
LZMA2 (Wikipedia) xz xz -9 50260 bytes -3023 bytes (-5.67%)
Zstandard (Wikipedia) zstd zstd -19 51716 bytes -1567 bytes (-2.94%)
Burrows-Wheeler transform (Wikipedia) bzip2 bzip2 -9 51923 bytes -1360 bytes (-2.55%)

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.