Choose a version:
24% The original file has 375162 bytes (366.4k) and is available from the project website.
There you can find the official minified version, too, which brings down the size to 89537 bytes (87.4k, 24%).

After GZIP compression these minified files vary in size:
gzip -6 (default)
  30487 bytes (29.8k)
local copy
gzip -9
  30448 bytes (29.7k)
local copy
libdeflate -12
  29118 bytes (28.4k)
local copy
7zip -mx=9 -tgzip
  29077 bytes (28.4k)
local copy
kzip -s0 -rn -b0
  29075 bytes (28.4k)
local copy
zultra
  29027 bytes (28.3k)
local copy
pigz -11 -n
  29002 bytes (28.3k)
local copy
Zopfli
  28924 bytes (28.2k)
local copy

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

You will automatically get the smallest Dojo 1.4.7 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 --bsr21 --lazy --ohh

(found February 28, 2020)
Description Value Parameter
iterations 1000000  --i1000000
maximum blocks 8  --mb8
maximum length score 64  --mls64
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

Verify file integrity

After decompression, my uncompressed files are identical to the original ones:

MD5:
curl --silent --compressed https://download.dojotoolkit.org/release-1.4.7/dojo.js --location | md5sum
702985224777a140bf111479484a1632  -
curl --silent --compressed https://minime.stephan-brumme.com/files/dojo/dojo-1.4.7.min.zopfli.js.gz | md5sum
702985224777a140bf111479484a1632  -

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

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
28924 bytes -1 byte zopfli --i1000000 --mls64 --bsr21 --lazy --ohh February 28, 2020 @ 19:31
28925 bytes -4 bytes zopfli --i100000 --mls64 --bsr21 --lazy --ohh February 28, 2020 @ 12:55
28929 bytes -7 bytes zopfli --i10000 --mls64 --bsr21 --lazy --ohh January 28, 2020 @ 20:09
28936 bytes -2 bytes zopfli --i1000 --mls64 --bsr21 --lazy --ohh January 28, 2020 @ 16:23
28938 bytes zopfli --i100 --mls64 --bsr21 --lazy --ohh January 28, 2020 @ 13:13

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

Most recent activity on July 20, 2020 @ 12:54.

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
28994 29007 29005 29000 28998 29005 29006 29005 29010 29019 29008 29011 29023 29014 29013
28978 29004 29005 28982 28983 28978 28968 28988 28998 28996 28965 29012 29011 29019 29021
28986 28987 28981 28976 28972 29000 28977 28973 28986 28997 28989 29013 28985 29014 29012
28975 28980 28976 28995 28979 28985 28973 28972 28990 28990 28983 29019 28975 29015 29015
28977 28981 28982 28974 28977 28977 28973 29011 28972 28976 28977 29005 29011 29013 29007
29002 28972 28987 28978 28973 28994 28972 28969 29005 28983 28977 29008 28968 29005 29006
28988 28976 28957 28983 28971 28985 28972 28972 28989 28988 28979 29010 28987 29018 29012
28976 28971 28973 28971 28976 28970 28973 28971 28974 28991 29007 29011 28991 29010 29010
28981 28990 28969 28974 28977 28953 28972 28979 28977 28994 28983 29008 29018 29014 29014
28974 28970 28978 28973 28980 28975 28970 28979 28977 28974 28991 29009 29020 29012 29006
28976 28979 28972 28964 28973 28964 28970 28991 28982 29011 28985 29004 29002 29014 29014
28972 28965 28969 28972 28974 28964 28975 28974 28977 28945 28981 29010 29018 29013 29014
28978 28971 28949 28985 28988 28969 28973 28972 28977 28982 28982 29008 28974 29014 29013
28972 28976 28985 28980 28992 28971 28972 28978 28977 28990 28988 29006 29010 29013 29015
28981 28977 28954 28984 28970 28978 28972 28976 28977 28989 28987 29011 29017 29018 29013
28987 28981 28978 28983 28976 28972 29009 28970 28982 29006 28993 29008 28991 29015 29006
28955 28952 28961 28955 28956 28969 28977 28975 28973 29005 28987 29005 29008 29016 29005
28969 28984 28976 28990 28965 28924 28971 28974 28981 28981 28979 29009 28984 29007 29013
28954 28961 28980 28978 28973 28968 28978 28979 28983 28990 28988 29007 28984 29014 29014
28983 28968 28974 28973 28971 28974 28967 28965 28973 28981 28988 29019 29009 29016 29013
28972 28970 28967 28975 28974 28967 28972 28972 28984 28987 28967 29009 29018 29016 29013
28968 28975 28978 28970 28972 28944 28973 28976 28976 28981 28973 29017 29008 29020 29013
28973 28978 28979 28972 28973 28966 28973 28964 28984 28977 28980 29009 29011 29015 29015

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 28938 bytes 100%
1,000 28936 bytes -2 bytes 100%
10,000 28929 bytes -7 bytes 100%
100,000 28925 bytes -4 bytes 0.87%
1,000,000 28924 bytes -1 byte 0.29%
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
29075 bytes +151 bytes (+0.52%)
29077 bytes +153 bytes (+0.53%) +2 bytes
29106 bytes +182 bytes (+0.63%) +31 bytes
29077 bytes +153 bytes (+0.53%) +2 bytes
29099 bytes +175 bytes (+0.61%) +24 bytes
29091 bytes +167 bytes (+0.58%) +16 bytes
29081 bytes +157 bytes (+0.54%) +6 bytes
29092 bytes +168 bytes (+0.58%) +17 bytes
29134 bytes +210 bytes (+0.73%) +59 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 23026 bytes -5898 bytes (-20.39%)
RAR (proprietary) RAR rar a -m5 -md64m -mc63:128t -mt1 25803 bytes -3121 bytes (-10.79%)
PPMd (Wikipedia) 7zip 7za a -mx=9 -m0=ppmd 26701 bytes -2223 bytes (-7.69%)
Brotli (Wikipedia) brotli brotli -q 11 26874 bytes -2050 bytes (-7.09%)
LZMA2 (Wikipedia) xz xz -9 27752 bytes -1172 bytes (-4.05%)
Zstandard (Wikipedia) zstd zstd -19 28383 bytes -541 bytes (-1.87%)
Burrows-Wheeler transform (Wikipedia) bzip2 bzip2 -9 28629 bytes -295 bytes (-1.02%)

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.