Choose a version:
30% The original file has 1608014 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 488215 bytes (476.8k, 30%).

After GZIP compression these minified files vary in size:
Boot
  151189 bytes (147.6k)
CDN
cdnjs
  124437 bytes (121.5k)
CDN
gzip -6 (default)
  122955 bytes (120.1k)
local copy
gzip -9
  122433 bytes (119.6k)
local copy
7zip -mx=9 -tgzip
  118264 bytes (115.5k)
local copy
libdeflate -12
  118201 bytes (115.4k)
local copy
zultra
  118186 bytes (115.4k)
local copy
pigz -11 -n
  118095 bytes (115.3k)
local copy
kzip -s0 -rn -b3
  117974 bytes (115.2k)
local copy
Zopfli
  117955 bytes (115.2k)
local copy
Zopfli (defluff)
  117949 bytes (115.2k)
local copy

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

You will automatically get the smallest Ember 2.16.2 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 6482 bytes by using my Ember 2.16.2 Zopfli version instead of the best available CDN (5.50% smaller than cdnjs, 117955 vs. 124437 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 --bsr18 --lazy --ohh

(found November 8, 2017)
Description Value Parameter
iterations 1000000  --i1000000
maximum blocks 8  --mb8
maximum length score 2048  --mls2048
block splitting recursion 18  --bsr18
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 6 more bytes (117949 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.2/ember.min.js --location | md5sum
e700166453e575be0c8678fec5d89bd6  -
curl --silent --compressed https://minime.stephan-brumme.com/files/ember/ember-2.16.2.min.zopfli.js.gz | md5sum
e700166453e575be0c8678fec5d89bd6  -

SHA1:
curl --silent --compressed https://builds.emberjs.com/tags/v2.16.2/ember.min.js --location | sha1sum
d3cb262ce24bb538d5f3a76cd62c7909cbeeccfe  -
curl --silent --compressed https://minime.stephan-brumme.com/files/ember/ember-2.16.2.min.zopfli.js.gz | sha1sum
d3cb262ce24bb538d5f3a76cd62c7909cbeeccfe  -

All listed CDNs deliver identical contents:
CDN Size (compressed) MD5 (uncompressed) Timestamp
Boot 151189 bytes e700166453e575be0c8678fec5d89bd6 November 14, 2017 @ 17:09
cdnjs 124437 bytes e700166453e575be0c8678fec5d89bd6 November 1, 2017 @ 23:34

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
117955 bytes -1 byte zopfli --i1000000 --mls2048 --bsr18 --lazy --ohh November 8, 2017 @ 20:07
117956 bytes -2 bytes zopfli --i100000 --mls16 --bsr6 --lazy --ohh November 7, 2017 @ 03:12
117958 bytes -5 bytes zopfli --i100000 --mls2048 --bsr8 --lazy --ohh November 6, 2017 @ 19:17
117963 bytes -8 bytes zopfli --i10000 --mls2048 --bsr8 --lazy --ohh November 6, 2017 @ 15:59
117971 bytes -2 bytes zopfli --i1000 --mls2048 --bsr8 --lazy --ohh November 6, 2017 @ 14:19
117973 bytes -1 byte zopfli --i1000 --mls2048 --bsr20 --lazy --ohh November 6, 2017 @ 14:17
117974 bytes -6 bytes zopfli --i1000 --mls16 --bsr30 --lazy --ohh November 6, 2017 @ 14:17
117980 bytes -3 bytes zopfli --i1000 --mls512 --bsr14 --lazy --ohh November 6, 2017 @ 14:15
117983 bytes -1 byte zopfli --i1000 --mls512 --bsr13 --lazy --ohh November 6, 2017 @ 14:15
117984 bytes zopfli --i100 --mls2 --bsr16 --lazy --ohh November 6, 2017 @ 13: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:47.

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
118003 117996 117991 117991 117983 117985 117990 117987 117986 117974 117973 117965 117985 118008 118027
117978 117987 117965 117982 117993 117970 117981 117985 117986 117990 117974 117968 117995 117981 118025
117982 117984 117982 117955 117966 117970 118020 117981 117980 117980 117966 117968 118023 117985 118039
117977 117981 117987 117966 117966 117972 117980 117979 117978 117982 117966 117979 117986 117970 117999
117978 117969 117984 117968 117964 117968 117987 117993 117977 117992 117958 117965 117994 117988 118018
117973 117973 117965 117966 117963 117964 117991 117979 117979 117980 117981 117979 117992 117987 117997
117967 117977 117966 117967 117964 117984 117983 117973 117966 117982 117977 117986 117992 117991 118025
117991 117982 117963 117965 117964 117965 117983 117973 117970 117970 117980 117965 117992 117988 117992
117963 117963 117957 117964 117964 117968 117973 117976 117980 117970 117963 117976 117991 117990 118024
117959 117959 117966 117968 117964 117965 117984 117982 117967 117980 117993 117976 118019 117988 118028
117994 117970 117975 117968 117967 117972 117973 117984 117973 117976 117963 117986 117993 117992 118025
117963 117984 117967 117963 117965 117965 117990 117979 117965 117970 117966 117966 118019 117988 118024
117966 117964 117964 117964 117963 117963 117969 117977 117966 117965 117982 117963 117992 117990 117992
117963 117963 117964 117966 117972 117965 117978 117972 117963 117965 117977 117964 117992 117990 117982
117979 117984 117995 117965 117976 117965 117988 117977 117974 117977 117955 117982 117991 117989 118024
117981 117981 117968 117974 117979 117963 117983 117978 117966 117966 117977 117964 117991 117990 118024
117981 117983 117964 117964 117978 117966 117987 117975 117973 117984 117964 117964 117991 117989 118029
117966 117965 117967 117966 117965 117963 117972 117967 117966 117966 117964 117964 117991 117992 118027
117980 117979 117985 117963 117982 117978 117985 117978 117965 117968 117978 117992 117992 117987 118025
117981 117981 117979 117963 117981 117968 117995 117976 117972 117977 117977 117964 117992 117990 117998
117963 117966 117967 117963 117967 117967 117967 117966 117966 117968 117957 117964 117991 117989 117992
117963 117966 117967 117965 117965 117967 117987 117978 117978 117979 117963 117958 117992 117976 118028
117965 117964 117967 117965 117964 117966 117964 117979 117965 117966 117978 117965 117993 117975 118024

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 117984 bytes 100%
1,000 117971 bytes -13 bytes 100%
10,000 117962 bytes -9 bytes 100%
100,000 117956 bytes -6 bytes 2.32%
1,000,000 117955 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
118034 bytes +79 bytes (+0.07%) +60 bytes
118071 bytes +116 bytes (+0.10%) +97 bytes
118011 bytes +56 bytes (+0.05%) +37 bytes
117974 bytes +19 bytes (+0.02%)
118028 bytes +73 bytes (+0.06%) +54 bytes
118058 bytes +103 bytes (+0.09%) +84 bytes
118049 bytes +94 bytes (+0.08%) +75 bytes
117994 bytes +39 bytes (+0.03%) +20 bytes
118029 bytes +74 bytes (+0.06%) +55 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 81381 bytes -36574 bytes (-31.01%)
RAR (proprietary) RAR rar a -m5 -md64m -mc63:128t -mt1 88252 bytes -29703 bytes (-25.18%)
PPMd (Wikipedia) 7zip 7za a -mx=9 -m0=ppmd 94806 bytes -23149 bytes (-19.63%)
Burrows-Wheeler transform (Wikipedia) bzip2 bzip2 -9 101147 bytes -16808 bytes (-14.25%)
Brotli (Wikipedia) brotli brotli -q 11 102857 bytes -15098 bytes (-12.80%)
LZMA2 (Wikipedia) xz xz -9 104516 bytes -13439 bytes (-11.39%)
Zstandard (Wikipedia) zstd zstd -19 107533 bytes -10422 bytes (-8.84%)

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.