Choose a version:
25% The original file has 565450 bytes (552.2k) and is available from the project website.
There you can find the official minified version, too, which brings down the size to 140742 bytes (137.4k, 25%).

After GZIP compression these minified files vary in size:
Boot
  56188 bytes (54.9k)
CDN
cdnjs
  48829 bytes (47.7k)
CDN
gzip -6 (default)
  48653 bytes (47.5k)
local copy
gzip -9
  48608 bytes (47.5k)
local copy
7zip -mx=9 -tgzip
  46404 bytes (45.3k)
local copy
libdeflate -12
  46349 bytes (45.3k)
local copy
zultra
  46325 bytes (45.2k)
local copy
kzip -s0 -rn -b1
  46324 bytes (45.2k)
local copy
pigz -11 -n
  46315 bytes (45.2k)
local copy
Zopfli
  46229 bytes (45.1k)
local copy
Zopfli (defluff)
  46228 bytes (45.1k)
local copy

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

You will automatically get the smallest Dojo 1.7.8 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 2600 bytes by using my Dojo 1.7.8 Zopfli version instead of the best available CDN (5.62% smaller than cdnjs, 46229 vs. 48829 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 --mls4 --bsr21 --lazy --ohh

(found February 25, 2020)
Description Value Parameter
iterations 1000000  --i1000000
maximum blocks 8  --mb8
maximum length score 4  --mls4
block splitting recursion 21  --bsr21
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 1 more byte (46228 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.7.8/dojo.js --location | md5sum
5365fd0872640122c9e7de72b7ace695  -
curl --silent --compressed https://minime.stephan-brumme.com/files/dojo/dojo-1.7.8.min.zopfli.js.gz | md5sum
5365fd0872640122c9e7de72b7ace695  -

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

All listed CDNs deliver identical contents:
CDN Size (compressed) MD5 (uncompressed) Timestamp
Boot 56188 bytes 5365fd0872640122c9e7de72b7ace695 March 19, 2015 @ 15:36
cdnjs 48829 bytes 5365fd0872640122c9e7de72b7ace695 February 8, 2015 @ 14:45

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
46229 bytes -1 byte zopfli --i1000000 --mls4 --bsr21 --lazy --ohh February 25, 2020 @ 23:08
46230 bytes -1 byte zopfli --i100000 --mls4 --bsr21 --lazy --ohh December 2, 2015 @ 22:56
46231 bytes -2 bytes zopfli --i100000 --mls16384 --bsr40 --lazy --ohh December 2, 2015 @ 18:13
46233 bytes -1 byte zopfli --i10000 --mls16384 --bsr13 --lazy --ohh December 2, 2015 @ 17:11
46234 bytes -3 bytes zopfli --i10000 --mls16384 --bsr16 --lazy --ohh October 14, 2015 @ 00:07
46237 bytes -1 byte zopfli --i1000 --mls16384 --bsr16 --lazy --ohh September 12, 2015 @ 19:20
46238 bytes -1 byte zopfli --i1000 --mls16384 --bsr12 --lazy --ohh September 12, 2015 @ 19:11
46239 bytes -1 byte zopfli --i1000 --mls256 --bsr10 --lazy --ohh September 12, 2015 @ 19:01
46240 bytes -2 bytes zopfli --i1000 --mls512 --bsr16 --lazy --ohh September 10, 2015 @ 21:25
46242 bytes -4 bytes zopfli --i1000 --mls512 --bsr11 --lazy --ohh September 10, 2015 @ 21:16
46246 bytes -1 byte zopfli --i1000 --mls512 --bsr2 --lazy --ohh September 10, 2015 @ 21:15
46247 bytes zopfli --i100 --mls512 --bsr11 --lazy --ohh September 10, 2015 @ 14:55

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 @ 12:58.

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
46251 46253 46254 46249 46247 46247 46246 46246 46241 46276 46242 46265 46265 46275 46248
46242 46238 46243 46238 46243 46246 46249 46243 46244 46272 46262 46253 46253 46260 46243
46244 46236 46245 46242 46243 46246 46257 46247 46247 46253 46251 46253 46250 46251 46231
46241 46239 46241 46242 46237 46249 46251 46237 46246 46252 46259 46253 46264 46252 46246
46242 46240 46243 46242 46244 46247 46251 46242 46242 46262 46260 46261 46265 46240 46243
46242 46240 46237 46237 46237 46251 46249 46242 46246 46246 46250 46256 46259 46251 46241
46241 46238 46242 46238 46237 46251 46250 46237 46242 46251 46258 46253 46267 46236 46242
46240 46243 46245 46242 46242 46253 46241 46242 46241 46250 46250 46253 46253 46235 46248
46243 46238 46239 46242 46239 46246 46250 46238 46251 46248 46253 46260 46254 46235 46231
46241 46244 46242 46237 46236 46248 46240 46242 46252 46253 46253 46250 46266 46230 46248
46240 46240 46240 46244 46237 46252 46246 46251 46251 46249 46254 46252 46256 46243 46243
46242 46242 46238 46242 46243 46251 46250 46245 46245 46254 46253 46259 46252 46252 46248
46242 46240 46240 46242 46237 46251 46254 46242 46239 46250 46250 46249 46268 46231 46246
46240 46240 46241 46242 46240 46251 46250 46242 46247 46248 46255 46262 46252 46231 46243
46241 46245 46238 46242 46237 46249 46257 46239 46244 46250 46250 46250 46256 46250 46246
46243 46238 46241 46238 46231 46248 46242 46237 46246 46248 46254 46250 46256 46252 46243
46240 46239 46241 46241 46240 46251 46254 46242 46247 46250 46247 46251 46258 46242 46240
46241 46229 46243 46242 46237 46258 46253 46237 46247 46248 46247 46249 46257 46243 46244
46241 46234 46242 46242 46238 46249 46251 46243 46246 46248 46257 46249 46246 46235 46251
46241 46240 46242 46242 46245 46257 46255 46242 46241 46247 46255 46253 46267 46253 46240
46240 46241 46242 46239 46237 46248 46254 46240 46244 46247 46258 46257 46252 46258 46236
46240 46242 46240 46242 46239 46247 46246 46242 46242 46249 46253 46257 46263 46234 46239
46240 46240 46240 46239 46231 46254 46258 46242 46253 46255 46254 46259 46267 46231 46244

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 46242 bytes 100%
1,000 46237 bytes -5 bytes 100%
10,000 46233 bytes -4 bytes 100%
100,000 46230 bytes -3 bytes 2.61%
1,000,000 46229 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
46353 bytes +124 bytes (+0.27%) +29 bytes
46324 bytes +95 bytes (+0.21%)
46349 bytes +120 bytes (+0.26%) +25 bytes
46389 bytes +160 bytes (+0.35%) +65 bytes
46413 bytes +184 bytes (+0.40%) +89 bytes
46400 bytes +171 bytes (+0.37%) +76 bytes
46424 bytes +195 bytes (+0.42%) +100 bytes
46469 bytes +240 bytes (+0.52%) +145 bytes
46484 bytes +255 bytes (+0.55%) +160 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 34494 bytes -11735 bytes (-25.38%)
RAR (proprietary) RAR rar a -m5 -md64m -mc63:128t -mt1 40479 bytes -5750 bytes (-12.44%)
PPMd (Wikipedia) 7zip 7za a -mx=9 -m0=ppmd 41372 bytes -4857 bytes (-10.51%)
Brotli (Wikipedia) brotli brotli -q 11 42498 bytes -3731 bytes (-8.07%)
LZMA2 (Wikipedia) xz xz -9 43552 bytes -2677 bytes (-5.79%)
Zstandard (Wikipedia) zstd zstd -19 44859 bytes -1370 bytes (-2.96%)
Burrows-Wheeler transform (Wikipedia) bzip2 bzip2 -9 44876 bytes -1353 bytes (-2.93%)

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.