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

After GZIP compression these minified files vary in size:
gzip -6 (default)
  56064 bytes (54.8k)
local copy
gzip -9
  56003 bytes (54.7k)
local copy
libdeflate -12
  53351 bytes (52.1k)
local copy
7zip -mx=9 -tgzip
  53335 bytes (52.1k)
local copy
zultra
  53262 bytes (52.0k)
local copy
kzip -s0 -rn -b0
  53240 bytes (52.0k)
local copy
pigz -11 -n
  53236 bytes (52.0k)
local copy
Zopfli
  53161 bytes (51.9k)
local copy
Zopfli (defluff)
  53157 bytes (51.9k)
local copy

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

You will automatically get the smallest Dojo 1.13.1 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 --mls64 --bsr40 --lazy --ohh

(found August 23, 2018)
Description Value Parameter
iterations 1000000  --i1000000
maximum blocks 8  --mb8
maximum length score 64  --mls64
block splitting recursion 40  --bsr40
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 4 more bytes (53157 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.13.1/dojo.js --location | md5sum
0b3b53da60ecc2a54aaac2c0abb7e282  -
curl --silent --compressed https://minime.stephan-brumme.com/files/dojo/dojo-1.13.1.min.zopfli.js.gz | md5sum
0b3b53da60ecc2a54aaac2c0abb7e282  -

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

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
53161 bytes -1 byte zopfli --i1000000 --mls64 --bsr40 --lazy --ohh August 23, 2018 @ 18:35
53162 bytes -1 byte zopfli --i100000 --mls8 --bsr10 --lazy --ohh August 22, 2018 @ 17:53
53163 bytes -6 bytes zopfli --i100000 --mls8 --bsr14 --lazy --ohh August 22, 2018 @ 17:12
53169 bytes -3 bytes zopfli --i10000 --mls8 --bsr14 --lazy --ohh August 22, 2018 @ 15:59
53172 bytes -2 bytes zopfli --i1000 --mls8 --bsr14 --lazy --ohh August 22, 2018 @ 15:51
53174 bytes -1 byte zopfli --i1000 --mls4 --bsr14 --lazy --ohh August 22, 2018 @ 15:32
53175 bytes -1 byte zopfli --i1000 --mls64 --bsr25 --lazy --ohh August 22, 2018 @ 15:31
53176 bytes zopfli --i100 --mls64 --bsr25 --lazy --ohh August 22, 2018 @ 15:31

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

Most recent activity on March 8, 2022 @ 10:30.

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
53170 53170 53172 53173 53172 53171 53170 53171 53171 53179 53187 53174 53182 53209 53190
53213 53171 53172 53172 53179 53185 53170 53172 53180 53178 53181 53182 53185 53187 53192
53209 53172 53171 53174 53179 53182 53170 53171 53184 53175 53188 53181 53183 53180 53179
53219 53203 53212 53173 53172 53172 53168 53173 53182 53186 53178 53181 53183 53189 53189
53205 53163 53171 53171 53171 53194 53170 53171 53182 53186 53187 53173 53187 53189 53184
53171 53165 53175 53171 53177 53176 53171 53170 53182 53186 53187 53174 53182 53195 53195
53171 53175 53162 53210 53173 53171 53185 53171 53182 53183 53199 53174 53188 53191 53188
53170 53165 53171 53172 53176 53174 53168 53164 53183 53186 53187 53184 53185 53187 53181
53171 53170 53172 53173 53175 53176 53168 53174 53182 53173 53187 53186 53183 53191 53184
53207 53170 53171 53174 53174 53179 53168 53172 53182 53186 53188 53185 53189 53189 53184
53171 53171 53163 53175 53175 53175 53168 53173 53178 53173 53198 53187 53185 53180 53178
53202 53170 53178 53172 53174 53174 53168 53172 53182 53186 53199 53185 53184 53189 53188
53211 53203 53171 53170 53171 53185 53171 53171 53179 53187 53184 53186 53183 53192 53181
53206 53165 53173 53165 53172 53186 53171 53183 53182 53175 53190 53173 53181 53179 53186
53209 53170 53172 53171 53175 53173 53168 53182 53182 53183 53184 53173 53183 53191 53180
53171 53165 53173 53173 53172 53199 53168 53171 53182 53186 53187 53174 53182 53192 53186
53207 53202 53173 53173 53176 53189 53172 53182 53183 53188 53199 53183 53181 53182 53190
53207 53202 53171 53173 53172 53173 53172 53165 53182 53186 53188 53186 53183 53187 53187
53214 53165 53172 53173 53175 53171 53168 53175 53182 53188 53198 53187 53183 53174 53179
53171 53172 53163 53172 53174 53174 53170 53171 53182 53186 53189 53173 53185 53190 53174
53203 53202 53163 53172 53170 53164 53168 53175 53182 53184 53187 53173 53184 53184 53184
53205 53214 53173 53172 53172 53170 53171 53172 53182 53187 53188 53173 53183 53191 53174
53208 53170 53168 53171 53171 53161 53172 53172 53182 53183 53198 53185 53188 53180 53187

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 53176 bytes 100%
1,000 53172 bytes -4 bytes 100%
10,000 53169 bytes -3 bytes 100%
100,000 53162 bytes -7 bytes 8.41%
1,000,000 53161 bytes -1 byte 0.58%
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
53240 bytes +79 bytes (+0.15%)
53253 bytes +92 bytes (+0.17%) +13 bytes
53282 bytes +121 bytes (+0.23%) +42 bytes
53300 bytes +139 bytes (+0.26%) +60 bytes
53247 bytes +86 bytes (+0.16%) +7 bytes
53277 bytes +116 bytes (+0.22%) +37 bytes
53293 bytes +132 bytes (+0.25%) +53 bytes
53286 bytes +125 bytes (+0.24%) +46 bytes
53313 bytes +152 bytes (+0.29%) +73 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 39095 bytes -14066 bytes (-26.46%)
RAR (proprietary) RAR rar a -m5 -md64m -mc63:128t -mt1 46641 bytes -6520 bytes (-12.26%)
PPMd (Wikipedia) 7zip 7za a -mx=9 -m0=ppmd 47584 bytes -5577 bytes (-10.49%)
Brotli (Wikipedia) brotli brotli -q 11 49058 bytes -4103 bytes (-7.72%)
LZMA2 (Wikipedia) xz xz -9 50152 bytes -3009 bytes (-5.66%)
Zstandard (Wikipedia) zstd zstd -19 51594 bytes -1567 bytes (-2.95%)
Burrows-Wheeler transform (Wikipedia) bzip2 bzip2 -9 51861 bytes -1300 bytes (-2.45%)

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.