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

After GZIP compression these minified files vary in size:
Boot
  31879 bytes (31.1k)
CDN
Baidu
  27744 bytes (27.1k)
CDN
cdnjs
  27736 bytes (27.1k)
CDN
gzip -6 (default)
  27639 bytes (27.0k)
local copy
gzip -9
  27605 bytes (27.0k)
local copy
Sina
  27596 bytes (26.9k)
CDN
7zip -mx=9 -tgzip
  26443 bytes (25.8k)
local copy
kzip -s0 -rn -b6
  26407 bytes (25.8k)
local copy
libdeflate -12
  26403 bytes (25.8k)
local copy
zultra
  26393 bytes (25.8k)
local copy
pigz -11 -n
  26373 bytes (25.8k)
local copy
Zopfli
  26276 bytes (25.7k)
local copy

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

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

Save 1320 bytes by using my Dojo 1.3.1 Zopfli version instead of the best available CDN (5.02% smaller than Sina, 26276 vs. 27596 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 --i1000000 --mb8 --mls128 --bsr12 --lazy --ohh

(found March 16, 2022)
Description Value Parameter
iterations 1000000  --i1000000
maximum blocks 8  --mb8
maximum length score 128  --mls128
block splitting recursion 12  --bsr12
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.3.1/dojo.js --location | md5sum
40494a1e88148631177ca6ef06ce4b78  -
curl --silent --compressed https://minime.stephan-brumme.com/files/dojo/dojo-1.3.1.min.zopfli.js.gz | md5sum
40494a1e88148631177ca6ef06ce4b78  -

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

These CDNs send you the original file:
CDN Size (compressed) MD5 (uncompressed) Timestamp
Boot 31879 bytes 40494a1e88148631177ca6ef06ce4b78 March 19, 2015 @ 15:30
cdnjs 27736 bytes 40494a1e88148631177ca6ef06ce4b78 February 8, 2015 @ 14:45
Sina 27596 bytes 40494a1e88148631177ca6ef06ce4b78 April 25, 2019 @ 14:07

And some CDNs send you a different file:
CDN Size (compressed) MD5 (uncompressed) Comment / Diff Timestamp
Baidu 27744 bytes eadf03b8bd776c3c3fd5062d319c1368 only whitespaces differ January 7, 2015 @ 10:16

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
26276 bytes -1 byte zopfli --i1000000 --mls128 --bsr12 --lazy --ohh March 16, 2022 @ 09:35
26277 bytes -2 bytes zopfli --i1000000 --mls32 --bsr13 --lazy --ohh March 2, 2020 @ 14:46
26279 bytes -2 bytes zopfli --i100000 --mls32 --bsr13 --lazy --ohh December 1, 2015 @ 14:23
26281 bytes -1 byte zopfli --i100000 --mls128 --bsr13 --lazy --ohh December 1, 2015 @ 13:58
26282 bytes -4 bytes zopfli --i10000 --mls128 --bsr12 --lazy --ohh November 22, 2015 @ 22:08
26286 bytes -5 bytes zopfli --i1000 --mls128 --bsr12 --lazy --ohh September 14, 2015 @ 22:14
26291 bytes -4 bytes zopfli --i1000 --mls512 --bsr13 --lazy --ohh September 11, 2015 @ 02:51
26295 bytes -2 bytes zopfli --i1000 --mls512 --bsr11 --lazy --ohh September 11, 2015 @ 02:38
26297 bytes zopfli --i100 --mls512 --bsr13 --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 March 16, 2022 @ 09:35.

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
26361 26362 26346 26366 26343 26370 26369 26366 26370 26377 26361 26363 26361 26364 26365
26328 26339 26339 26336 26338 26351 26293 26335 26299 26355 26361 26362 26366 26368 26359
26323 26345 26343 26347 26328 26361 26292 26361 26363 26365 26367 26362 26363 26359 26356
26313 26335 26350 26335 26325 26295 26365 26316 26302 26360 26357 26363 26361 26363 26356
26308 26301 26346 26315 26340 26329 26308 26294 26296 26360 26359 26363 26359 26365 26363
26311 26341 26312 26312 26285 26330 26294 26362 26295 26364 26358 26360 26363 26358 26357
26334 26349 26288 26307 26323 26285 26284 26363 26364 26357 26356 26358 26360 26363 26356
26340 26331 26361 26296 26287 26327 26287 26292 26291 26354 26355 26359 26361 26362 26357
26331 26331 26324 26316 26320 26319 26276 26362 26294 26354 26353 26357 26357 26364 26357
26336 26335 26356 26307 26277 26303 26281 26315 26286 26354 26354 26354 26361 26360 26358
26340 26335 26356 26331 26286 26317 26287 26291 26295 26358 26355 26358 26358 26360 26357
26343 26335 26307 26299 26305 26303 26353 26361 26287 26354 26355 26358 26378 26358 26356
26309 26333 26292 26336 26362 26289 26292 26296 26298 26359 26359 26359 26357 26358 26360
26336 26340 26335 26333 26342 26310 26317 26293 26291 26369 26353 26360 26307 26357 26356
26320 26346 26316 26312 26283 26319 26327 26323 26364 26358 26355 26359 26305 26363 26357
26341 26335 26327 26296 26335 26325 26286 26363 26294 26371 26360 26363 26364 26361 26360
26336 26333 26286 26309 26290 26323 26285 26282 26357 26369 26355 26362 26364 26361 26356
26315 26331 26292 26333 26332 26323 26285 26324 26365 26369 26357 26354 26372 26360 26364
26323 26347 26346 26336 26295 26322 26300 26363 26363 26364 26364 26358 26299 26355 26357
26314 26335 26291 26333 26320 26321 26283 26290 26286 26354 26355 26358 26362 26359 26358
26315 26339 26322 26312 26326 26320 26281 26360 26362 26370 26355 26360 26362 26359 26357
26333 26333 26306 26329 26336 26323 26287 26281 26377 26358 26355 26361 26364 26360 26360
26334 26339 26332 26331 26327 26318 26301 26285 26289 26354 26355 26355 26360 26364 26362

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 26293 bytes 100%
1,000 26286 bytes -7 bytes 100%
10,000 26282 bytes -4 bytes 100%
100,000 26279 bytes -3 bytes 1.74%
1,000,000 26276 bytes -3 bytes 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
26409 bytes +133 bytes (+0.51%) +2 bytes
26407 bytes +131 bytes (+0.50%)
26431 bytes +155 bytes (+0.59%) +24 bytes
26411 bytes +135 bytes (+0.51%) +4 bytes
26446 bytes +170 bytes (+0.65%) +39 bytes
26424 bytes +148 bytes (+0.56%) +17 bytes
26407 bytes +131 bytes (+0.50%)
26416 bytes +140 bytes (+0.53%) +9 bytes
26457 bytes +181 bytes (+0.69%) +50 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 21302 bytes -4974 bytes (-18.93%)
RAR (proprietary) RAR rar a -m5 -md64m -mc63:128t -mt1 23353 bytes -2923 bytes (-11.12%)
PPMd (Wikipedia) 7zip 7za a -mx=9 -m0=ppmd 24231 bytes -2045 bytes (-7.78%)
Brotli (Wikipedia) brotli brotli -q 11 24371 bytes -1905 bytes (-7.25%)
LZMA2 (Wikipedia) xz xz -9 25292 bytes -984 bytes (-3.74%)
Zstandard (Wikipedia) zstd zstd -19 25907 bytes -369 bytes (-1.40%)
Burrows-Wheeler transform (Wikipedia) bzip2 bzip2 -9 26057 bytes -219 bytes (-0.83%)

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.