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

After GZIP compression these minified files vary in size:
Boot
  129870 bytes (126.8k)
CDN
cdnjs
  124033 bytes (121.1k)
CDN
gzip -6 (default)
  122516 bytes (119.6k)
local copy
gzip -9
  121997 bytes (119.1k)
local copy
7zip -mx=9 -tgzip
  117848 bytes (115.1k)
local copy
libdeflate -12
  117772 bytes (115.0k)
local copy
zultra
  117760 bytes (115.0k)
local copy
pigz -11 -n
  117704 bytes (114.9k)
local copy
kzip -s0 -rn -b3
  117566 bytes (114.8k)
local copy
Zopfli
  117544 bytes (114.8k)
local copy
Zopfli (defluff)
  117540 bytes (114.8k)
local copy

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

You will automatically get the smallest Ember 2.17.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 6489 bytes by using my Ember 2.17.1 Zopfli version instead of the best available CDN (5.52% smaller than cdnjs, 117544 vs. 124033 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 --mls8 --bsr12 --lazy --ohh

(found February 20, 2018)
Description Value Parameter
iterations 1000000  --i1000000
maximum blocks 8  --mb8
maximum length score 8  --mls8
block splitting recursion 12  --bsr12
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 (117540 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.17.1/ember.min.js --location | md5sum
dd7a3fce6a8c0598a73d6f40e2816a47  -
curl --silent --compressed https://minime.stephan-brumme.com/files/ember/ember-2.17.1.min.zopfli.js.gz | md5sum
dd7a3fce6a8c0598a73d6f40e2816a47  -

SHA1:
curl --silent --compressed https://builds.emberjs.com/tags/v2.17.1/ember.min.js --location | sha1sum
51ed46998e02d3f0905f35c0ccd716cac9e1e34f  -
curl --silent --compressed https://minime.stephan-brumme.com/files/ember/ember-2.17.1.min.zopfli.js.gz | sha1sum
51ed46998e02d3f0905f35c0ccd716cac9e1e34f  -

All listed CDNs deliver identical contents:
CDN Size (compressed) MD5 (uncompressed) Timestamp
Boot 129870 bytes dd7a3fce6a8c0598a73d6f40e2816a47 June 7, 2018 @ 20:21
cdnjs 124033 bytes dd7a3fce6a8c0598a73d6f40e2816a47 February 14, 2018 @ 06:04

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
117544 bytes -2 bytes zopfli --i1000000 --mls8 --bsr12 --lazy --ohh February 20, 2018 @ 06:45
117546 bytes -6 bytes zopfli --i100000 --mls8 --bsr12 --lazy --ohh February 16, 2018 @ 20:40
117552 bytes -1 byte zopfli --i10000 --mls8 --bsr12 --lazy --ohh February 14, 2018 @ 18:24
117553 bytes -1 byte zopfli --i10000 --mls2 --bsr12 --lazy --ohh February 14, 2018 @ 15:28
117554 bytes -3 bytes zopfli --i10000 --mls8 --bsr40 --lazy --ohh February 14, 2018 @ 15:10
117557 bytes -1 byte zopfli --i10000 --mls4096 --bsr11 --lazy --ohh February 14, 2018 @ 14:56
117558 bytes -1 byte zopfli --i10000 --mls32 --bsr11 --lazy --ohh February 14, 2018 @ 14:52
117559 bytes -4 bytes zopfli --i1000 --mls8 --bsr11 --lazy --ohh February 14, 2018 @ 10:47
117563 bytes -1 byte zopfli --i1000 --mls512 --bsr19 --lazy --ohh February 14, 2018 @ 10:07
117564 bytes -1 byte zopfli --i1000 --mls2 --bsr12 --lazy --ohh February 14, 2018 @ 09:47
117565 bytes -16 bytes zopfli --i1000 --mls8 --bsr20 --lazy --ohh February 14, 2018 @ 09:45
117581 bytes zopfli --i100 --mls2 --bsr17 --lazy --ohh February 14, 2018 @ 09:07

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

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
117582 117582 117578 117580 117571 117579 117581 117578 117581 117573 117567 117575 117569 117575 117620
117573 117573 117555 117570 117557 117574 117574 117577 117580 117579 117564 117567 117595 117571 117615
117569 117590 117575 117551 117556 117560 117569 117573 117566 117572 117557 117556 117564 117578 117617
117566 117569 117569 117554 117556 117555 117576 117568 117578 117574 117557 117561 117569 117581 117586
117565 117565 117573 117554 117560 117558 117564 117582 117575 117576 117554 117558 117583 117578 117614
117571 117567 117567 117556 117555 117559 117570 117578 117582 117601 117555 117556 117581 117580 117587
117570 117572 117575 117567 117556 117559 117573 117579 117556 117555 117563 117571 117585 117586 117582
117572 117572 117551 117555 117558 117565 117568 117569 117563 117557 117568 117557 117580 117585 117571
117549 117554 117544 117555 117556 117583 117566 117569 117559 117570 117555 117556 117622 117582 117618
117558 117554 117569 117556 117554 117555 117564 117571 117568 117566 117579 117577 117622 117583 117581
117586 117585 117571 117563 117560 117559 117565 117573 117566 117555 117568 117571 117581 117579 117579
117554 117554 117555 117556 117554 117555 117557 117568 117555 117558 117560 117563 117624 117583 117614
117571 117554 117551 117555 117577 117558 117556 117572 117557 117554 117554 117568 117581 117576 117582
117545 117555 117555 117558 117566 117567 117568 117570 117558 117556 117554 117558 117581 117576 117578
117573 117571 117570 117555 117553 117562 117571 117570 117563 117570 117550 117555 117584 117582 117624
117571 117571 117572 117558 117555 117555 117559 117570 117557 117556 117566 117556 117581 117584 117614
117571 117574 117555 117555 117555 117555 117571 117569 117565 117569 117566 117556 117581 117584 117618
117571 117557 117555 117557 117555 117555 117557 117572 117557 117560 117551 117556 117580 117580 117630
117570 117570 117570 117555 117572 117555 117568 117567 117555 117555 117554 117556 117581 117584 117616
117573 117571 117562 117556 117560 117560 117572 117569 117565 117567 117554 117556 117591 117576 117585
117558 117556 117556 117556 117557 117555 117556 117559 117559 117558 117551 117559 117580 117583 117581
117558 117558 117554 117554 117555 117554 117564 117567 117557 117569 117557 117555 117580 117570 117623
117573 117571 117554 117556 117555 117555 117556 117557 117556 117556 117556 117555 117582 117584 117618

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 117581 bytes 100%
1,000 117559 bytes -22 bytes 100%
10,000 117552 bytes -7 bytes 100%
100,000 117546 bytes -6 bytes 2.90%
1,000,000 117544 bytes -2 bytes 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
117641 bytes +97 bytes (+0.08%) +75 bytes
117662 bytes +118 bytes (+0.10%) +96 bytes
117621 bytes +77 bytes (+0.07%) +55 bytes
117566 bytes +22 bytes (+0.02%)
117607 bytes +63 bytes (+0.05%) +41 bytes
117628 bytes +84 bytes (+0.07%) +62 bytes
117636 bytes +92 bytes (+0.08%) +70 bytes
117579 bytes +35 bytes (+0.03%) +13 bytes
117633 bytes +89 bytes (+0.08%) +67 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 81093 bytes -36451 bytes (-31.01%)
RAR (proprietary) RAR rar a -m5 -md64m -mc63:128t -mt1 87914 bytes -29630 bytes (-25.21%)
PPMd (Wikipedia) 7zip 7za a -mx=9 -m0=ppmd 94456 bytes -23088 bytes (-19.64%)
Burrows-Wheeler transform (Wikipedia) bzip2 bzip2 -9 100743 bytes -16801 bytes (-14.29%)
Brotli (Wikipedia) brotli brotli -q 11 102599 bytes -14945 bytes (-12.71%)
LZMA2 (Wikipedia) xz xz -9 104176 bytes -13368 bytes (-11.37%)
Zstandard (Wikipedia) zstd zstd -19 107166 bytes -10378 bytes (-8.83%)

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.