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

After GZIP compression these minified files vary in size:
Boot
  138449 bytes (135.2k)
CDN
jsdelivr
  118044 bytes (115.3k)
CDN
cdnjs
  113960 bytes (111.3k)
CDN
gzip -6 (default)
  112318 bytes (109.7k)
local copy
gzip -9
  111949 bytes (109.3k)
local copy
fastcdn
  111781 bytes (109.2k)
CDN
zultra
  108186 bytes (105.7k)
local copy
7zip -mx=9 -tgzip
  108178 bytes (105.6k)
local copy
libdeflate -12
  108110 bytes (105.6k)
local copy
pigz -11 -n
  107963 bytes (105.4k)
local copy
kzip -s0 -rn -b0
  107786 bytes (105.3k)
local copy
Zopfli
  107757 bytes (105.2k)
local copy
Zopfli (defluff)
  107754 bytes (105.2k)
local copy

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

You will automatically get the smallest Ember 2.1.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 4024 bytes by using my Ember 2.1.0 Zopfli version instead of the best available CDN (3.73% smaller than fastcdn, 107757 vs. 111781 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 --mls512 --bsr7 --lazy --ohh

(found October 20, 2015)
Description Value Parameter
iterations 1000000  --i1000000
maximum blocks 8  --mb8
maximum length score 512  --mls512
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 (107754 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.1.0/ember.min.js --location | md5sum
971de40a9ff8f627645ffc2236a68ddc  -
curl --silent --compressed https://minime.stephan-brumme.com/files/ember/ember-2.1.0.min.zopfli.js.gz | md5sum
971de40a9ff8f627645ffc2236a68ddc  -

SHA1:
curl --silent --compressed https://builds.emberjs.com/tags/v2.1.0/ember.min.js --location | sha1sum
01762a4da2d9e295e1534d7b6d6b6b4b5614544b  -
curl --silent --compressed https://minime.stephan-brumme.com/files/ember/ember-2.1.0.min.zopfli.js.gz | sha1sum
01762a4da2d9e295e1534d7b6d6b6b4b5614544b  -

These CDNs send you the original file:
CDN Size (compressed) MD5 (uncompressed) Timestamp
Boot 138449 bytes 971de40a9ff8f627645ffc2236a68ddc October 9, 2015 @ 23:15
cdnjs 113960 bytes 971de40a9ff8f627645ffc2236a68ddc October 6, 2015 @ 03:20
fastcdn 111781 bytes 971de40a9ff8f627645ffc2236a68ddc November 6, 2015 @ 06:02

And some CDNs send you a different file:
CDN Size (compressed) MD5 (uncompressed) Comment / Diff Timestamp
jsdelivr 118044 bytes d0caa0082d4142672552772ced35901b < e.classList?1===t.length?e.classList.add(t[0]):2===t.lengt [...]
< var h=a,m=!1,d=void 0,f=h.match(/^(@?)<(.*)>$/);f&&(h=f[2] [...]
< renderedNodes:this.renderedNodes,hasParentOutlet:this.hasP [...]
< u.removeDependentKeys(this,e,t,l.meta(e))},h.prototype.set [...]
< t},i.prototype._getInherited=function(e){for(var t=this;vo [...]
< var a=i||t.meta(e),o=a.writableWatching();o[r]?o[r]=(o[r]| [...]
< m=E(f.defaultValue)),v._qpDelegate=i.get(p,"_qp.states.ina [...]
< t;var o=r.get(this,"content");return n.set(o,e,t)}})}),e(" [...]
< return e?e:(l(),this[g])},nameClasses:function(){o([this.t [...]
< e.ownerView=this.ownerView},unlinkChild:function(e){i.set( [...]
[...]
(invalid)

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
107757 bytes -2 bytes zopfli --i1000000 --mls512 --bsr7 --lazy --ohh October 20, 2015 @ 10:27
107759 bytes -2 bytes zopfli --i100000 --mls512 --bsr7 --lazy --ohh October 10, 2015 @ 06:32
107761 bytes -1 byte zopfli --i100000 --mls128 --bsr7 --lazy --ohh October 9, 2015 @ 23:07
107762 bytes -4 bytes zopfli --i100000 --mls64 --bsr25 --lazy --ohh October 5, 2015 @ 18:44
107766 bytes -4 bytes zopfli --i10000 --mls64 --bsr25 --lazy --ohh October 5, 2015 @ 13:23
107770 bytes -1 byte zopfli --i1000 --mls64 --bsr25 --lazy --ohh October 5, 2015 @ 10:47
107771 bytes -3 bytes zopfli --i1000 --mls64 --bsr17 --lazy --ohh October 5, 2015 @ 10:45
107774 bytes -46 bytes zopfli --i1000 --mls2048 --bsr30 --lazy --ohh October 5, 2015 @ 10:29
107820 bytes zopfli --i100 --mls2048 --bsr30 --lazy --ohh October 5, 2015 @ 09:58

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

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
107940 107920 107942 107920 107940 107883 107943 107942 107928 107919 107924 107921 107929 107942 107945
107823 107823 107899 107899 107895 107903 107896 107791 107779 107792 107800 107799 107824 107804 107902
107780 107775 107789 107780 107784 107784 107787 107786 107786 107792 107816 107815 107792 107942 107945
107780 107775 107895 107899 107901 107778 107759 107769 107757 107900 107899 107788 107781 107900 107900
107773 107772 107899 107898 107898 107774 107901 107900 107901 107898 107898 107794 107901 107901 107900
107783 107806 107895 107898 107896 107808 107900 107896 107896 107898 107981 107797 107904 107901 107896
107775 107776 107895 107899 107898 107801 107901 107898 107898 107897 107900 107896 107779 107900 107901
107774 107774 107899 107895 107900 107782 107901 107897 107896 107898 107816 107797 107785 107900 107894
107773 107772 107894 107899 107900 107789 107900 107897 107902 107898 107901 107796 107898 107900 107898
107774 107774 107899 107899 107896 107792 107899 107901 107897 107898 107771 107793 107782 107900 107900
107775 107773 107895 107896 107900 107764 107895 107896 107897 107900 107820 107791 107899 107900 107901
107775 107775 107895 107899 107900 107797 107901 107898 107898 107901 107902 107785 107898 107901 107900
107772 107760 107899 107900 107896 107809 107905 107903 107899 107900 107900 107791 107811 107900 107901
107777 107767 107897 107896 107899 107761 107895 107897 107902 107898 107981 107789 107787 107900 107900
107772 107773 107895 107896 107896 107770 107901 107896 107896 107898 107899 107803 107901 107903 107901
107775 107775 107899 107899 107896 107796 107895 107896 107898 107901 107795 107810 107789 107901 107898
107777 107774 107895 107901 107896 107793 107899 107902 107898 107898 107981 107793 107781 107901 107896
107778 107770 107899 107899 107896 107792 107897 107898 107898 107899 107899 107799 107901 107901 107896
107771 107771 107895 107899 107897 107768 107896 107896 107898 107895 107901 107798 107787 107902 107896
107780 107774 107895 107899 107899 107772 107899 107901 107899 107894 107981 107796 107906 107899 107901
107773 107773 107895 107895 107900 107762 107898 107896 107898 107900 107981 107806 107903 107899 107895
107775 107775 107895 107896 107896 107769 107895 107896 107900 107899 107762 107792 107898 107900 107898
107771 107773 107900 107899 107898 107797 107900 107896 107902 107899 107981 107790 107898 107904 107900

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 107820 bytes 100%
1,000 107770 bytes -50 bytes 100%
10,000 107766 bytes -4 bytes 100%
100,000 107759 bytes -7 bytes 2.03%
1,000,000 107757 bytes -2 bytes 0.87%
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
107786 bytes +29 bytes (+0.03%)
107936 bytes +179 bytes (+0.17%) +150 bytes
107922 bytes +165 bytes (+0.15%) +136 bytes
107876 bytes +119 bytes (+0.11%) +90 bytes
107818 bytes +61 bytes (+0.06%) +32 bytes
107791 bytes +34 bytes (+0.03%) +5 bytes
107825 bytes +68 bytes (+0.06%) +39 bytes
107867 bytes +110 bytes (+0.10%) +81 bytes
107914 bytes +157 bytes (+0.15%) +128 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 73835 bytes -33922 bytes (-31.48%)
RAR (proprietary) RAR rar a -m5 -md64m -mc63:128t -mt1 79060 bytes -28697 bytes (-26.63%)
PPMd (Wikipedia) 7zip 7za a -mx=9 -m0=ppmd 84977 bytes -22780 bytes (-21.14%)
Burrows-Wheeler transform (Wikipedia) bzip2 bzip2 -9 89887 bytes -17870 bytes (-16.58%)
Brotli (Wikipedia) brotli brotli -q 11 93899 bytes -13858 bytes (-12.86%)
LZMA2 (Wikipedia) xz xz -9 96044 bytes -11713 bytes (-10.87%)
Zstandard (Wikipedia) zstd zstd -19 98726 bytes -9031 bytes (-8.38%)

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.