Choose a version:
27% The original file has 1699380 bytes (1,659.6k) and is available from the project website.
There you can find the official minified version, too, which brings down the size to 453468 bytes (442.8k, 27%).

After GZIP compression these minified files vary in size:
Boot
  143376 bytes (140.0k)
CDN
cdnjs
  117876 bytes (115.1k)
CDN
gzip -6 (default)
  116102 bytes (113.4k)
local copy
gzip -9
  115709 bytes (113.0k)
local copy
libdeflate -12
  111905 bytes (109.3k)
local copy
zultra
  111881 bytes (109.3k)
local copy
7zip -mx=9 -tgzip
  111866 bytes (109.2k)
local copy
pigz -11 -n
  111688 bytes (109.1k)
local copy
kzip -s0 -rn -b7
  111640 bytes (109.0k)
local copy
Zopfli
  111477 bytes (108.9k)
local copy
Zopfli (defluff)
  111475 bytes (108.9k)
local copy

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

You will automatically get the smallest Ember 2.3.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 6399 bytes by using my Ember 2.3.1 Zopfli version instead of the best available CDN (5.74% smaller than cdnjs, 111477 vs. 117876 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 --mls32 --bsr30 --lazy --ohh

(found February 12, 2016)
Description Value Parameter
iterations 1000000  --i1000000
maximum blocks 8  --mb8
maximum length score 32  --mls32
block splitting recursion 30  --bsr30
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 2 more bytes (111475 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.3.1/ember.min.js --location | md5sum
2fe136c83a0810c3aeaa1d6551fed8cf  -
curl --silent --compressed https://minime.stephan-brumme.com/files/ember/ember-2.3.1.min.zopfli.js.gz | md5sum
2fe136c83a0810c3aeaa1d6551fed8cf  -

SHA1:
curl --silent --compressed https://builds.emberjs.com/tags/v2.3.1/ember.min.js --location | sha1sum
591e820207697f73664989660e6a8b4f30caa534  -
curl --silent --compressed https://minime.stephan-brumme.com/files/ember/ember-2.3.1.min.zopfli.js.gz | sha1sum
591e820207697f73664989660e6a8b4f30caa534  -

All listed CDNs deliver identical contents:
CDN Size (compressed) MD5 (uncompressed) Timestamp
Boot 143376 bytes 2fe136c83a0810c3aeaa1d6551fed8cf February 10, 2016 @ 00:09
cdnjs 117876 bytes 2fe136c83a0810c3aeaa1d6551fed8cf February 5, 2016 @ 06:02

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
111477 bytes -1 byte zopfli --i1000000 --mls32 --bsr30 --lazy --ohh February 12, 2016 @ 11:59
111478 bytes -4 bytes zopfli --i100000 --mls32 --bsr30 --lazy --ohh February 11, 2016 @ 13:21
111482 bytes -1 byte zopfli --i1000000 --mls32 --bsr25 --lazy --ohh February 10, 2016 @ 18:36
111483 bytes -1 byte zopfli --i100000 --mls32 --bsr25 --lazy --ohh February 9, 2016 @ 01:43
111484 bytes -4 bytes zopfli --i100000 --mls32 --bsr15 --lazy --ohh February 8, 2016 @ 22:19
111488 bytes -2 bytes zopfli --i10000 --mls32 --bsr15 --lazy --ohh February 8, 2016 @ 17:28
111490 bytes -13 bytes zopfli --i10000 --mls32 --bsr7 --lazy --ohh February 8, 2016 @ 14:11
111503 bytes -41 bytes zopfli --i1000 --mls32 --bsr7 --lazy --ohh February 8, 2016 @ 13:20
111544 bytes zopfli --i100 --mls32 --bsr7 --lazy --ohh February 8, 2016 @ 12:32

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
111582 111582 111582 111582 111581 111582 111581 111621 111619 111617 111614 111680 111680 111675 111677
111529 111528 111527 111523 111523 111617 111555 111529 111549 111535 111548 111614 111680 111519 111631
111533 111533 111520 111529 111530 111521 111552 111538 111544 111523 111532 111541 111680 111515 111530
111613 111613 111619 111617 111484 111616 111614 111613 111620 111620 111622 111530 111620 111618 111619
111621 111620 111617 111616 111620 111616 111614 111615 111619 111624 111618 111540 111619 111629 111624
111491 111620 111619 111617 111484 111616 111614 111615 111620 111620 111619 111532 111632 111615 111618
111491 111613 111615 111615 111491 111622 111614 111613 111619 111613 111619 111522 111629 111615 111625
111494 111613 111619 111622 111493 111614 111614 111612 111619 111620 111620 111558 111623 111618 111623
111481 111622 111619 111615 111616 111616 111614 111615 111619 111613 111620 111535 111620 111615 111630
111496 111619 111619 111618 111619 111622 111612 111615 111619 111613 111622 111524 111620 111617 111618
111491 111614 111619 111618 111493 111616 111614 111617 111619 111613 111616 111524 111627 111615 111625
111491 111613 111619 111617 111484 111622 111614 111613 111619 111622 111622 111519 111620 111615 111630
111494 111613 111619 111616 111500 111616 111622 111626 111629 111613 111531 111525 111630 111615 111630
111492 111613 111621 111617 111485 111620 111614 111613 111628 111613 111620 111538 111625 111617 111624
111494 111619 111614 111615 111491 111621 111614 111616 111621 111613 111620 111523 111620 111632 111623
111491 111616 111619 111622 111492 111619 111614 111613 111628 111613 111622 111522 111620 111615 111625
111492 111613 111619 111618 111493 111614 111614 111620 111619 111613 111618 111526 111619 111618 111619
111480 111616 111619 111615 111492 111622 111616 111613 111623 111622 111622 111524 111619 111616 111625
111502 111613 111619 111618 111619 111622 111616 111615 111538 111620 111622 111522 111623 111615 111619
111491 111622 111619 111619 111493 111622 111616 111613 111614 111627 111616 111523 111620 111615 111618
111492 111613 111619 111618 111482 111616 111616 111613 111619 111613 111616 111524 111620 111615 111623
111493 111616 111614 111617 111477 111615 111616 111615 111614 111613 111620 111524 111619 111615 111624
111494 111614 111619 111617 111482 111616 111614 111612 111613 111619 111616 111522 111619 111618 111618

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 111544 bytes 100%
1,000 111503 bytes -41 bytes 100%
10,000 111488 bytes -15 bytes 100%
100,000 111478 bytes -10 bytes 2.61%
1,000,000 111477 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
111696 bytes +219 bytes (+0.20%) +56 bytes
111664 bytes +187 bytes (+0.17%) +24 bytes
111681 bytes +204 bytes (+0.18%) +41 bytes
111735 bytes +258 bytes (+0.23%) +95 bytes
111760 bytes +283 bytes (+0.25%) +120 bytes
111699 bytes +222 bytes (+0.20%) +59 bytes
111653 bytes +176 bytes (+0.16%) +13 bytes
111640 bytes +163 bytes (+0.15%)
111686 bytes +209 bytes (+0.19%) +46 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 75906 bytes -35571 bytes (-31.91%)
RAR (proprietary) RAR rar a -m5 -md64m -mc63:128t -mt1 81320 bytes -30157 bytes (-27.05%)
PPMd (Wikipedia) 7zip 7za a -mx=9 -m0=ppmd 87643 bytes -23834 bytes (-21.38%)
Burrows-Wheeler transform (Wikipedia) bzip2 bzip2 -9 92459 bytes -19018 bytes (-17.06%)
Brotli (Wikipedia) brotli brotli -q 11 96614 bytes -14863 bytes (-13.33%)
LZMA2 (Wikipedia) xz xz -9 98860 bytes -12617 bytes (-11.32%)
Zstandard (Wikipedia) zstd zstd -19 101718 bytes -9759 bytes (-8.75%)

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.