Choose a version:
30% The original file has 1607990 bytes (1,570.3k) and is available from the project website.
There you can find the official minified version, too, which brings down the size to 487445 bytes (476.0k, 30%).

After GZIP compression these minified files vary in size:
Boot
  151064 bytes (147.5k)
CDN
cdnjs
  124373 bytes (121.5k)
CDN
gzip -6 (default)
  122907 bytes (120.0k)
local copy
gzip -9
  122385 bytes (119.5k)
local copy
zultra
  118199 bytes (115.4k)
local copy
libdeflate -12
  118146 bytes (115.4k)
local copy
7zip -mx=9 -tgzip
  118139 bytes (115.4k)
local copy
pigz -11 -n
  118023 bytes (115.3k)
local copy
kzip -s0 -rn -b3
  117902 bytes (115.1k)
local copy
Zopfli
  117822 bytes (115.1k)
local copy
Zopfli (defluff)
  117818 bytes (115.1k)
local copy

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

You will automatically get the smallest Ember 2.16.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 6551 bytes by using my Ember 2.16.1 Zopfli version instead of the best available CDN (5.56% smaller than cdnjs, 117822 vs. 124373 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 --mls2048 --bsr7 --lazy --ohh

(found November 2, 2017)
Description Value Parameter
iterations 1000000  --i1000000
maximum blocks 8  --mb8
maximum length score 2048  --mls2048
block splitting recursion 7  --bsr7
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 4 more bytes (117818 bytes).

Verify file integrity

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

MD5:
curl --silent --compressed https://builds.emberjs.com/tags/v2.16.1/ember.min.js --location | md5sum
f1b6ef1ea575030429483c79a7cf84c7  -
curl --silent --compressed https://minime.stephan-brumme.com/files/ember/ember-2.16.1.min.zopfli.js.gz | md5sum
f1b6ef1ea575030429483c79a7cf84c7  -

SHA1:
curl --silent --compressed https://builds.emberjs.com/tags/v2.16.1/ember.min.js --location | sha1sum
333ce23d33053506c0cca3e9878a25b6de0f7f27  -
curl --silent --compressed https://minime.stephan-brumme.com/files/ember/ember-2.16.1.min.zopfli.js.gz | sha1sum
333ce23d33053506c0cca3e9878a25b6de0f7f27  -

All listed CDNs deliver identical contents:
CDN Size (compressed) MD5 (uncompressed) Timestamp
Boot 151064 bytes f1b6ef1ea575030429483c79a7cf84c7 November 14, 2017 @ 17:09
cdnjs 124373 bytes f1b6ef1ea575030429483c79a7cf84c7 October 29, 2017 @ 17:35

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

Other Versions

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

3.0.0,
2.18.2, 2.18.1, 2.18.0,
2.17.2, 2.17.1, 2.17.0,
2.16.2, 2.16.1, 2.16.0,
2.15.3, 2.15.2, 2.15.1, 2.15.0,
2.14.1, 2.14.0,
2.13.4, 2.13.3, 2.13.2, 2.13.1, 2.13.0,
2.12.2, 2.12.1, 2.12.0,
2.11.3, 2.11.2, 2.11.1, 2.11.0,
2.10.2, 2.10.1, 2.10.0,
2.9.1, 2.9.0,
2.8.3, 2.8.2, 2.8.1, 2.8.0,
2.7.3, 2.7.2, 2.7.1, 2.7.0,
2.6.2, 2.6.1, 2.6.0,
2.5.1, 2.5.0,
2.4.6, 2.4.5, 2.4.4, 2.4.3, 2.4.2, 2.4.1, 2.4.0,
2.3.1, 2.3.0,
2.2.2, 2.2.1, 2.2.0,
2.1.2, 2.1.1, 2.1.0,
2.0.3, 2.0.2, 2.0.1, 2.0.0,
1.13.13, 1.13.12, 1.13.11, 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.2, 1.12.1, 1.12.0,
1.11.4, 1.11.3, 1.11.2, 1.11.1, 1.11.0,
1.10.1, 1.10.0,
1.9.1, 1.9.0,
1.8.1, 1.8.0,
1.7.1, 1.7.0,
1.6.1, 1.6.0,
1.5.1, 1.5.0,
1.4.0,
1.3.2, 1.3.1, 1.3.0,
1.2.2, 1.2.1, 1.2.0,
1.0.1, 1.0.0

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

Changelog

Best Zopfli parameters so far:
Size Improvement Parameters Found
117822 bytes -10 bytes zopfli --i1000000 --mls2048 --bsr7 --lazy --ohh November 2, 2017 @ 16:11
117832 bytes -8 bytes zopfli --i100000 --mls2048 --bsr7 --lazy --ohh November 1, 2017 @ 17:23
117840 bytes -13 bytes zopfli --i10000 --mls2048 --bsr7 --lazy --ohh November 1, 2017 @ 15:03
117853 bytes -11 bytes zopfli --i1000 --mls2048 --bsr7 --lazy --ohh November 1, 2017 @ 14:42
117864 bytes zopfli --i100 --mls2048 --bsr7 --lazy --ohh November 1, 2017 @ 14:17

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

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 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
117931 117932 117926 117927 117920 117919 117923 117924 117926 117922 117911 117906 117912 117919 117970
117929 117917 117905 117920 117931 117910 117926 117920 117928 117929 117925 117912 117937 117921 117987
117936 117939 117923 117905 117904 117920 117927 117920 117916 117922 117908 117929 117905 117926 117961
117915 117918 117904 117905 117906 117904 117919 117920 117918 117921 117822 117906 117925 117926 117939
117913 117911 117923 117904 117933 117920 117925 117918 117911 117925 117900 117910 117936 117924 117924
117904 117917 117902 117902 117903 117903 117918 117921 117915 117907 117903 117921 117935 117930 117930
117906 117916 117912 117914 117914 117906 117923 117920 117916 117903 117919 117923 117935 117975 117971
117927 117917 117902 117905 117903 117902 117906 117910 117910 117905 117914 117904 117932 117930 117920
117906 117902 117901 117906 117902 117904 117915 117913 117918 117905 117914 117926 117935 117932 117969
117907 117903 117901 117906 117903 117904 117924 117911 117915 117918 117930 117917 117964 117973 117927
117930 117910 117919 117908 117906 117919 117920 117916 117913 117902 117905 117904 117936 117912 117929
117903 117904 117907 117904 117905 117906 117926 117904 117904 117908 117912 117908 117963 117931 117969
117904 117903 117903 117907 117903 117907 117902 117916 117905 117901 117913 117901 117935 117931 117940
117903 117903 117904 117905 117910 117912 117909 117912 117904 117905 117918 117904 117935 117932 117920
117919 117922 117913 117904 117915 117911 117929 117915 117921 117914 117913 117905 117935 117931 117967
117918 117922 117905 117906 117916 117904 117924 117920 117904 117905 117913 117904 117935 117933 117928
117918 117922 117901 117903 117905 117906 117920 117914 117916 117905 117913 117904 117935 117930 117967
117906 117903 117904 117905 117902 117904 117908 117920 117905 117906 117905 117902 117935 117932 117968
117926 117925 117924 117908 117923 117920 117922 117914 117918 117902 117913 117903 117934 117926 117988
117918 117918 117917 117907 117918 117927 117927 117914 117913 117918 117913 117904 117936 117973 117932
117904 117905 117906 117906 117905 117906 117910 117905 117906 117905 117913 117904 117934 117973 117930
117902 117905 117905 117909 117901 117905 117904 117915 117917 117919 117904 117904 117935 117913 117972
117902 117903 117905 117905 117904 117906 117919 117916 117904 117904 117915 117903 117933 117932 117928

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 117864 bytes 100%
1,000 117853 bytes -11 bytes 100%
10,000 117840 bytes -13 bytes 100%
100,000 117832 bytes -8 bytes 0.29%
1,000,000 117822 bytes -10 bytes 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
117987 bytes +165 bytes (+0.14%) +85 bytes
118002 bytes +180 bytes (+0.15%) +100 bytes
117971 bytes +149 bytes (+0.13%) +69 bytes
117902 bytes +80 bytes (+0.07%)
117945 bytes +123 bytes (+0.10%) +43 bytes
118000 bytes +178 bytes (+0.15%) +98 bytes
117973 bytes +151 bytes (+0.13%) +71 bytes
117927 bytes +105 bytes (+0.09%) +25 bytes
117961 bytes +139 bytes (+0.12%) +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 81367 bytes -36455 bytes (-30.94%)
RAR (proprietary) RAR rar a -m5 -md64m -mc63:128t -mt1 88175 bytes -29647 bytes (-25.16%)
PPMd (Wikipedia) 7zip 7za a -mx=9 -m0=ppmd 94737 bytes -23085 bytes (-19.59%)
Burrows-Wheeler transform (Wikipedia) bzip2 bzip2 -9 101063 bytes -16759 bytes (-14.22%)
Brotli (Wikipedia) brotli brotli -q 11 102827 bytes -14995 bytes (-12.73%)
LZMA2 (Wikipedia) xz xz -9 104464 bytes -13358 bytes (-11.34%)
Zstandard (Wikipedia) zstd zstd -19 107473 bytes -10349 bytes (-8.78%)

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.