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

After GZIP compression these minified files vary in size:
gzip -6 (default)
  54007 bytes (52.7k)
local copy
gzip -9
  53959 bytes (52.7k)
local copy
7zip -mx=9 -tgzip
  51334 bytes (50.1k)
local copy
libdeflate -12
  51325 bytes (50.1k)
local copy
pigz -11 -n
  51292 bytes (50.1k)
local copy
zultra
  51290 bytes (50.1k)
local copy
kzip -s0 -rn -b1
  51288 bytes (50.1k)
local copy
Zopfli
  51193 bytes (50.0k)
local copy
Zopfli (defluff)
  51190 bytes (50.0k)
local copy

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

You will automatically get the smallest Dojo 1.8.11 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 --mls8 --bsr16 --lazy --ohh

(found March 16, 2022)
Description Value Parameter
iterations 1000000  --i1000000
maximum blocks 8  --mb8
maximum length score 8  --mls8
block splitting recursion 16  --bsr16
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 (51190 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.11/dojo.js --location | md5sum
b3f91a306662d7424103d1822d23b5dc  -
curl --silent --compressed https://minime.stephan-brumme.com/files/dojo/dojo-1.8.11.min.zopfli.js.gz | md5sum
b3f91a306662d7424103d1822d23b5dc  -

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

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
51193 bytes -1 byte zopfli --i1000000 --mls8 --bsr16 --lazy --ohh March 16, 2022 @ 22:19
51194 bytes -1 byte zopfli --i1000000 --mls8 --bsr17 --lazy --ohh March 16, 2022 @ 14:07
51195 bytes -7 bytes zopfli --i100000 --mls2 --bsr11 --lazy --ohh March 24, 2016 @ 13:42
51202 bytes -6 bytes zopfli --i10000 --mls2 --bsr9 --lazy --ohh March 24, 2016 @ 11:39
51208 bytes -1 byte zopfli --i1000 --mls2 --bsr9 --lazy --ohh March 24, 2016 @ 11:22
51209 bytes -4 bytes zopfli --i1000 --mls8 --bsr16 --lazy --ohh March 24, 2016 @ 11:19
51213 bytes -1 byte zopfli --i1000 --mls128 --bsr6 --lazy --ohh March 24, 2016 @ 11:18
51214 bytes zopfli --i100 --mls8 --bsr6 --lazy --ohh March 24, 2016 @ 11:05

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

Most recent activity on March 17, 2022 @ 08:48.

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
51208 51207 51208 51210 51205 51213 51208 51212 51221 51226 51230 51228 51228 51235 51239
51212 51205 51220 51219 51205 51208 51207 51209 51209 51211 51210 51218 51216 51214 51213
51209 51228 51203 51250 51209 51205 51205 51211 51209 51218 51210 51217 51218 51209 51214
51206 51203 51254 51219 51228 51209 51206 51220 51208 51206 51209 51219 51215 51215 51213
51248 51249 51219 51221 51210 51206 51206 51209 51210 51212 51210 51214 51213 51216 51222
51202 51211 51258 51216 51208 51210 51207 51206 51208 51221 51218 51221 51218 51213 51224
51211 51207 51241 51250 51208 51210 51206 51208 51210 51211 51210 51220 51215 51206 51226
51195 51220 51220 51219 51207 51203 51209 51208 51216 51221 51211 51215 51215 51214 51222
51203 51243 51245 51227 51207 51210 51208 51209 51208 51221 51211 51218 51214 51223 51230
51246 51232 51242 51218 51208 51210 51205 51208 51216 51218 51210 51216 51214 51216 51228
51241 51216 51245 51242 51212 51210 51208 51213 51209 51223 51212 51224 51215 51222 51208
51203 51205 51250 51223 51224 51210 51208 51214 51208 51221 51217 51217 51214 51207 51210
51211 51215 51193 51220 51209 51207 51206 51211 51208 51221 51210 51217 51222 51214 51210
51206 51242 51194 51244 51208 51210 51206 51210 51208 51224 51211 51209 51215 51206 51207
51205 51244 51209 51225 51214 51210 51205 51215 51208 51221 51210 51215 51217 51206 51207
51203 51249 51219 51220 51210 51212 51206 51209 51212 51221 51216 51215 51217 51207 51217
51204 51242 51203 51225 51208 51210 51206 51212 51212 51221 51217 51215 51214 51220 51210
51203 51240 51244 51220 51206 51210 51206 51211 51216 51221 51209 51218 51213 51214 51217
51209 51203 51245 51241 51210 51206 51210 51208 51209 51220 51217 51218 51214 51208 51223
51202 51204 51209 51222 51207 51210 51206 51211 51216 51221 51218 51215 51215 51216 51216
51197 51243 51204 51219 51216 51210 51207 51208 51215 51221 51211 51219 51217 51221 51210
51198 51206 51202 51221 51208 51211 51208 51209 51210 51218 51211 51215 51215 51210 51213
51204 51241 51207 51223 51208 51210 51209 51211 51210 51221 51212 51218 51214 51221 51217

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 51214 bytes 100%
1,000 51208 bytes -6 bytes 100%
10,000 51201 bytes -7 bytes 100%
100,000 51195 bytes -6 bytes 1.74%
1,000,000 51193 bytes -2 bytes 0.87%
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
51367 bytes +174 bytes (+0.34%) +79 bytes
51288 bytes +95 bytes (+0.19%)
51324 bytes +131 bytes (+0.26%) +36 bytes
51355 bytes +162 bytes (+0.32%) +67 bytes
51367 bytes +174 bytes (+0.34%) +79 bytes
51410 bytes +217 bytes (+0.42%) +122 bytes
51414 bytes +221 bytes (+0.43%) +126 bytes
51423 bytes +230 bytes (+0.45%) +135 bytes
51439 bytes +246 bytes (+0.48%) +151 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 37711 bytes -13482 bytes (-26.34%)
RAR (proprietary) RAR rar a -m5 -md64m -mc63:128t -mt1 44956 bytes -6237 bytes (-12.18%)
PPMd (Wikipedia) 7zip 7za a -mx=9 -m0=ppmd 45811 bytes -5382 bytes (-10.51%)
Brotli (Wikipedia) brotli brotli -q 11 47194 bytes -3999 bytes (-7.81%)
LZMA2 (Wikipedia) xz xz -9 48220 bytes -2973 bytes (-5.81%)
Zstandard (Wikipedia) zstd zstd -19 49754 bytes -1439 bytes (-2.81%)
Burrows-Wheeler transform (Wikipedia) bzip2 bzip2 -9 49818 bytes -1375 bytes (-2.69%)

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.