Choose a version:
13% The original file has 504040 bytes (492.2k) and is available from the project website.
There you can find the official minified version, too, which brings down the size to 66625 bytes (65.1k, 13%).

After GZIP compression these minified files vary in size:
Boot
  26166 bytes (25.6k)
CDN
cdnjs
  23174 bytes (22.6k)
CDN
gzip -6 (default)
  22119 bytes (21.6k)
local copy
unpkg
  22102 bytes (21.6k)
CDN
gzip -9
  22057 bytes (21.5k)
local copy
jsdelivr
  22054 bytes (21.5k)
CDN
libdeflate -12
  21370 bytes (20.9k)
local copy
7zip -mx=9 -tgzip
  21352 bytes (20.9k)
local copy
zultra
  21312 bytes (20.8k)
local copy
kzip -s0 -rn -b4
  21280 bytes (20.8k)
local copy
pigz -11 -n
  21252 bytes (20.8k)
local copy
Zopfli
  21203 bytes (20.7k)
local copy
Zopfli (defluff)
  21202 bytes (20.7k)
local copy

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

You will automatically get the smallest lodash 4.11.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 851 bytes by using my lodash 4.11.1 Zopfli version instead of the best available CDN (4.01% smaller than jsdelivr, 21203 vs. 22054 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 --i100000 --mb8 --mls256 --bsr9 --lazy --ohh

(found April 14, 2016)
Description Value Parameter
iterations 100000  --i100000
maximum blocks 8  --mb8
maximum length score 256  --mls256
block splitting recursion 9  --bsr9
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 (21202 bytes).

Verify file integrity

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

MD5:
curl --silent --compressed https://raw.githubusercontent.com/lodash/lodash/4.11.1/dist/lodash.min.js --location | md5sum
3a6912bf0a7b977348826a35646e39f6  -
curl --silent --compressed https://minime.stephan-brumme.com/files/lodash/lodash-4.11.1.min.zopfli.js.gz | md5sum
3a6912bf0a7b977348826a35646e39f6  -

SHA1:
curl --silent --compressed https://raw.githubusercontent.com/lodash/lodash/4.11.1/dist/lodash.min.js --location | sha1sum
a5b7c4b8b4f4580e35363b5ab7ad42cb89bcc238  -
curl --silent --compressed https://minime.stephan-brumme.com/files/lodash/lodash-4.11.1.min.zopfli.js.gz | sha1sum
a5b7c4b8b4f4580e35363b5ab7ad42cb89bcc238  -

These CDNs send you the original file:
CDN Size (compressed) MD5 (uncompressed) Timestamp
unpkg 22102 bytes 3a6912bf0a7b977348826a35646e39f6 July 11, 2016 @ 16:46
jsdelivr 22054 bytes 3a6912bf0a7b977348826a35646e39f6 April 14, 2016 @ 12:06

And some CDNs send you a different file:
CDN Size (compressed) MD5 (uncompressed) Comment / Diff Timestamp
Boot 26166 bytes e2b9010f1f9ddee390cecc66a8fbe48a < /**
< * @license
< * lodash 4.11.1 (Custom Build) lodash.com/license | Under [...]
< * Build: `lodash -o ./dist/lodash.js`
< */
< ;(function(){function t(t,n){return t.set(n[0],n[1]),t}fun [...]
< return true}function i(t,n){for(var r=-1,e=t.length,u=0,o= [...]
< var u=t.length;for(e&&u&&(r=t[--u]);u--;)r=n(r,t[u],u,t);r [...]
< return-1}function y(t,n,r,e){--r;for(var u=t.length;++r<u; [...]
< })}function O(t){return function(n){return t(n)}}function [...]
[...]
May 4, 2016 @ 10:40
cdnjs 23174 bytes e2b9010f1f9ddee390cecc66a8fbe48a < /**
< * @license
< * lodash 4.11.1 (Custom Build) lodash.com/license | Under [...]
< * Build: `lodash -o ./dist/lodash.js`
< */
< ;(function(){function t(t,n){return t.set(n[0],n[1]),t}fun [...]
< return true}function i(t,n){for(var r=-1,e=t.length,u=0,o= [...]
< var u=t.length;for(e&&u&&(r=t[--u]);u--;)r=n(r,t[u],u,t);r [...]
< return-1}function y(t,n,r,e){--r;for(var u=t.length;++r<u; [...]
< })}function O(t){return function(n){return t(n)}}function [...]
[...]
(invalid)

Note: only the MD5 hashes are shown to keep things simple.

Other Versions

Available lodash versions at minime.stephan-brumme.com:

4.17.21, 4.17.20, 4.17.19, 4.17.18, 4.17.17, 4.17.16, 4.17.15, 4.17.14, 4.17.13, 4.17.12, 4.17.11, 4.17.10, 4.17.9, 4.17.5, 4.17.4, 4.17.3, 4.17.2, 4.17.1, 4.17.0, 4.16.6, 4.16.5, 4.16.4, 4.16.3, 4.16.2, 4.16.1, 4.16.0, 4.15.0, 4.14.2, 4.14.1, 4.14.0, 4.13.1, 4.13.0, 4.12.0, 4.11.2, 4.11.1, 4.11.0, 4.10.0,
4.9.0, 4.8.2, 4.8.1, 4.8.0, 4.7.0, 4.6.1, 4.6.0, 4.5.1, 4.5.0, 4.4.0, 4.3.0, 4.2.1, 4.2.0, 4.1.0, 4.0.1, 4.0.0

The project site contains an overview how well these versions were compressed.
Other interesting projects are AngularJS, BackboneJS, Bootstrap, D3, Dojo, Ember, jQuery, Knockout, React, Socket.IO, ThreeJS, UnderscoreJS and Vue.

Changelog

Best Zopfli parameters so far:
Size Improvement Parameters Found
21203 bytes -3 bytes zopfli --i100000 --mls256 --bsr9 --lazy --ohh April 14, 2016 @ 15:38
21206 bytes -1 byte zopfli --i10000 --mls256 --bsr9 --lazy --ohh April 14, 2016 @ 14:06
21207 bytes -1 byte zopfli --i100000 --mls256 --bsr12 --lazy --ohh April 14, 2016 @ 13:32
21208 bytes -3 bytes zopfli --i100000 --mls2 --bsr30 --lazy --ohh April 14, 2016 @ 12:31
21211 bytes -3 bytes zopfli --i10000 --mls2 --bsr30 --lazy --ohh April 14, 2016 @ 11:56
21214 bytes -5 bytes zopfli --i1000 --mls2 --bsr30 --lazy --ohh April 14, 2016 @ 11:52
21219 bytes zopfli --i100 --mls2 --bsr30 --lazy --ohh April 14, 2016 @ 11:24

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:49.

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 or 100,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
21251 21250 21254 21254 21257 21260 21261 21261 21256 21258 21254 21254 21251 21244 21250
21226 21219 21223 21223 21243 21230 21226 21237 21215 21219 21232 21236 21233 21232 21229
21224 21221 21214 21225 21223 21220 21225 21227 21214 21234 21225 21226 21233 21230 21232
21217 21214 21219 21216 21216 21231 21217 21220 21225 21212 21228 21230 21235 21232 21222
21215 21219 21224 21217 21230 21226 21217 21219 21219 21226 21221 21232 21231 21230 21231
21216 21214 21213 21224 21227 21234 21217 21203 21215 21226 21222 21227 21231 21231 21231
21222 21220 21215 21227 21219 21227 21218 21223 21212 21225 21233 21231 21229 21228 21234
21214 21227 21211 21224 21221 21227 21225 21212 21220 21224 21221 21240 21229 21266 21235
21212 21211 21212 21222 21222 21230 21220 21207 21212 21217 21228 21230 21235 21251 21226
21212 21215 21221 21224 21231 21230 21217 21211 21220 21214 21235 21227 21234 21232 21235
21234 21214 21210 21219 21220 21223 21215 21211 21220 21224 21224 21231 21231 21230 21232
21214 21213 21221 21224 21232 21230 21220 21215 21216 21219 21219 21230 21235 21232 21227
21213 21213 21212 21220 21226 21229 21227 21216 21222 21214 21222 21234 21234 21231 21234
21219 21214 21212 21226 21235 21229 21215 21215 21219 21233 21221 21225 21232 21245 21223
21212 21209 21209 21224 21228 21221 21211 21221 21220 21215 21233 21229 21237 21230 21233
21227 21212 21225 21217 21219 21217 21219 21216 21217 21227 21227 21224 21235 21233 21232
21211 21212 21213 21214 21224 21213 21217 21218 21218 21220 21215 21232 21231 21233 21234
21216 21213 21229 21215 21220 21218 21217 21218 21208 21227 21220 21229 21235 21235 21224
21208 21213 21215 21215 21226 21216 21218 21220 21220 21216 21227 21234 21237 21243 21232
21221 21213 21222 21214 21222 21231 21217 21221 21219 21210 21221 21229 21229 21228 21231
21221 21218 21217 21215 21222 21231 21218 21217 21227 21219 21223 21227 21231 21241 21232
21208 21212 21211 21217 21228 21211 21217 21211 21212 21213 21210 21229 21234 21231 21236
21213 21210 21210 21219 21218 21220 21217 21229 21223 21221 21224 21228 21232 21232 21235

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 21219 bytes 100%
1,000 21211 bytes -8 bytes 100%
10,000 21206 bytes -5 bytes 100%
100,000 21203 bytes -3 bytes 0.87%
1,000,000
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
21303 bytes +100 bytes (+0.47%) +23 bytes
21371 bytes +168 bytes (+0.79%) +91 bytes
21292 bytes +89 bytes (+0.42%) +12 bytes
21301 bytes +98 bytes (+0.46%) +21 bytes
21280 bytes +77 bytes (+0.36%)
21294 bytes +91 bytes (+0.43%) +14 bytes
21318 bytes +115 bytes (+0.54%) +38 bytes
21346 bytes +143 bytes (+0.67%) +66 bytes
21375 bytes +172 bytes (+0.81%) +95 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 18005 bytes -3198 bytes (-15.08%)
RAR (proprietary) RAR rar a -m5 -md64m -mc63:128t -mt1 18299 bytes -2904 bytes (-13.70%)
PPMd (Wikipedia) 7zip 7za a -mx=9 -m0=ppmd 18673 bytes -2530 bytes (-11.93%)
Brotli (Wikipedia) brotli brotli -q 11 19993 bytes -1210 bytes (-5.71%)
LZMA2 (Wikipedia) xz xz -9 20440 bytes -763 bytes (-3.60%)
Burrows-Wheeler transform (Wikipedia) bzip2 bzip2 -9 20581 bytes -622 bytes (-2.93%)
Zstandard (Wikipedia) zstd zstd -19 21106 bytes -97 bytes (-0.46%)

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.