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

After GZIP compression these minified files vary in size:
Boot
  150073 bytes (146.6k)
CDN
cdnjs
  123398 bytes (120.5k)
CDN
gzip -6 (default)
  121848 bytes (119.0k)
local copy
gzip -9
  121340 bytes (118.5k)
local copy
libdeflate -12
  117209 bytes (114.5k)
local copy
7zip -mx=9 -tgzip
  117179 bytes (114.4k)
local copy
pigz -11 -n
  117068 bytes (114.3k)
local copy
zultra
  117043 bytes (114.3k)
local copy
kzip -s0 -rn -b3
  116906 bytes (114.2k)
local copy
Zopfli
  116866 bytes (114.1k)
local copy
Zopfli (defluff)
  116863 bytes (114.1k)
local copy

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

You will automatically get the smallest Ember 2.18.0 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 6532 bytes by using my Ember 2.18.0 Zopfli version instead of the best available CDN (5.59% smaller than cdnjs, 116866 vs. 123398 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 --mls8192 --bsr7 --lazy --ohh

(found January 3, 2018)
Description Value Parameter
iterations 1000000  --i1000000
maximum blocks 8  --mb8
maximum length score 8192  --mls8192
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 3 more bytes (116863 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.18.0/ember.min.js --location | md5sum
120dded9f13ff292d970f75900cbd460  -
curl --silent --compressed https://minime.stephan-brumme.com/files/ember/ember-2.18.0.min.zopfli.js.gz | md5sum
120dded9f13ff292d970f75900cbd460  -

SHA1:
curl --silent --compressed https://builds.emberjs.com/tags/v2.18.0/ember.min.js --location | sha1sum
01f40d038302412d61f8544912b0c4735b096a7d  -
curl --silent --compressed https://minime.stephan-brumme.com/files/ember/ember-2.18.0.min.zopfli.js.gz | sha1sum
01f40d038302412d61f8544912b0c4735b096a7d  -

All listed CDNs deliver identical contents:
CDN Size (compressed) MD5 (uncompressed) Timestamp
Boot 150073 bytes 120dded9f13ff292d970f75900cbd460 January 6, 2018 @ 23:31
cdnjs 123398 bytes 120dded9f13ff292d970f75900cbd460 January 1, 2018 @ 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
116866 bytes -4 bytes zopfli --i1000000 --mls8192 --bsr7 --lazy --ohh January 3, 2018 @ 10:18
116870 bytes -4 bytes zopfli --i100000 --mls8192 --bsr7 --lazy --ohh January 2, 2018 @ 09:36
116874 bytes -22 bytes zopfli --i10000 --mls8192 --bsr7 --lazy --ohh January 2, 2018 @ 07:07
116896 bytes -19 bytes zopfli --i1000 --mls8192 --bsr7 --lazy --ohh January 2, 2018 @ 05:32
116915 bytes zopfli --i100 --mls8192 --bsr7 --lazy --ohh January 2, 2018 @ 05:23

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, 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
116938 116937 116937 116999 116937 116939 116942 116942 116941 116938 116934 116933 116930 116934 116983
116926 116930 116942 116941 116936 116942 116940 116939 116926 116934 116934 116934 116937 116950 116979
116934 116929 116930 116926 116936 116950 116925 116922 116930 116929 116931 116929 116931 116941 116932
116925 116929 116933 116933 116934 116940 116943 116941 116945 116925 116929 116927 116866 116923 116955
116928 116928 116935 116935 116949 116930 116925 116927 116934 116933 116925 116927 116946 116941 116950
116929 116927 116931 116929 116935 116946 116939 116931 116927 116931 116929 116932 116928 116924 116976
116935 116934 116934 116929 116936 116938 116944 116926 116923 116922 116929 116928 116926 116945 116945
116939 116953 116923 116926 116928 116928 116931 116928 116927 116927 116935 116932 116926 116943 116946
116924 116923 116924 116925 116926 116926 116925 116921 116929 116929 116930 116927 116986 116942 116976
116933 116925 116926 116952 116925 116930 116932 116926 116934 116929 116948 116939 116957 116946 116943
116939 116939 116934 116925 116917 116933 116932 116926 116934 116927 116930 116927 116924 116943 116983
116933 116928 116924 116926 116924 116930 116924 116927 116922 116927 116932 116935 116954 116939 116947
116934 116931 116925 116925 116924 116926 116922 116923 116922 116927 116934 116947 116925 116940 116948
116926 116925 116925 116926 116925 116926 116927 116924 116925 116930 116931 116928 116924 116946 116977
116932 116925 116924 116925 116925 116928 116930 116925 116926 116929 116953 116927 116924 116941 116977
116937 116936 116926 116926 116928 116924 116928 116926 116923 116925 116931 116935 116945 116942 116977
116934 116937 116923 116929 116926 116923 116930 116926 116928 116930 116953 116928 116927 116943 116979
116932 116934 116926 116930 116925 116926 116934 116922 116929 116929 116932 116935 116927 116944 116976
116934 116931 116936 116925 116925 116955 116931 116925 116926 116926 116930 116935 116928 116943 116976
116934 116926 116927 116926 116926 116926 116936 116922 116926 116926 116933 116926 116928 116940 116947
116933 116931 116924 116926 116922 116952 116927 116926 116919 116924 116934 116925 116927 116943 116976
116933 116928 116925 116925 116926 116928 116934 116943 116929 116927 116933 116955 116926 116928 116983
116926 116926 116924 116925 116928 116954 116926 116922 116923 116929 116932 116925 116927 116929 116976

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 116915 bytes 100%
1,000 116896 bytes -19 bytes 100%
10,000 116874 bytes -22 bytes 100%
100,000 116870 bytes -4 bytes 0.58%
1,000,000 116866 bytes -4 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
117004 bytes +138 bytes (+0.12%) +98 bytes
117022 bytes +156 bytes (+0.13%) +116 bytes
116972 bytes +106 bytes (+0.09%) +66 bytes
116906 bytes +40 bytes (+0.03%)
116980 bytes +114 bytes (+0.10%) +74 bytes
116996 bytes +130 bytes (+0.11%) +90 bytes
117012 bytes +146 bytes (+0.12%) +106 bytes
116941 bytes +75 bytes (+0.06%) +35 bytes
116988 bytes +122 bytes (+0.10%) +82 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 80660 bytes -36206 bytes (-30.98%)
RAR (proprietary) RAR rar a -m5 -md64m -mc63:128t -mt1 87525 bytes -29341 bytes (-25.11%)
PPMd (Wikipedia) 7zip 7za a -mx=9 -m0=ppmd 93918 bytes -22948 bytes (-19.64%)
Burrows-Wheeler transform (Wikipedia) bzip2 bzip2 -9 100314 bytes -16552 bytes (-14.16%)
Brotli (Wikipedia) brotli brotli -q 11 102217 bytes -14649 bytes (-12.53%)
LZMA2 (Wikipedia) xz xz -9 103680 bytes -13186 bytes (-11.28%)
Zstandard (Wikipedia) zstd zstd -19 106633 bytes -10233 bytes (-8.76%)

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.