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

After GZIP compression these minified files vary in size:
Boot
  144638 bytes (141.2k)
CDN
cdnjs
  118766 bytes (116.0k)
CDN
gzip -6 (default)
  116936 bytes (114.2k)
local copy
jsdelivr
  116616 bytes (113.9k)
CDN
gzip -9
  116538 bytes (113.8k)
local copy
7zip -mx=9 -tgzip
  112723 bytes (110.1k)
local copy
libdeflate -12
  112677 bytes (110.0k)
local copy
zultra
  112661 bytes (110.0k)
local copy
pigz -11 -n
  112468 bytes (109.8k)
local copy
kzip -s0 -rn -b5
  112383 bytes (109.7k)
local copy
Zopfli
  112285 bytes (109.7k)
local copy
Zopfli (defluff)
  112282 bytes (109.7k)
local copy

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

You will automatically get the smallest Ember 2.4.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 4331 bytes by using my Ember 2.4.0 Zopfli version instead of the best available CDN (3.86% smaller than jsdelivr, 112285 vs. 116616 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 --i100000 --mb8 --mls32 --bsr14 --lazy --ohh

(found March 1, 2016)
Description Value Parameter
iterations 100000  --i100000
maximum blocks 8  --mb8
maximum length score 32  --mls32
block splitting recursion 14  --bsr14
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 (112282 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.4.0/ember.min.js --location | md5sum
5506b24d009077e5beb4e27dd139ce5d  -
curl --silent --compressed https://minime.stephan-brumme.com/files/ember/ember-2.4.0.min.zopfli.js.gz | md5sum
5506b24d009077e5beb4e27dd139ce5d  -

SHA1:
curl --silent --compressed https://builds.emberjs.com/tags/v2.4.0/ember.min.js --location | sha1sum
0778ee99cef75dfc9df2df4ac2be71b768fd51ab  -
curl --silent --compressed https://minime.stephan-brumme.com/files/ember/ember-2.4.0.min.zopfli.js.gz | sha1sum
0778ee99cef75dfc9df2df4ac2be71b768fd51ab  -

All listed CDNs deliver identical contents:
CDN Size (compressed) MD5 (uncompressed) Timestamp
Boot 144638 bytes 5506b24d009077e5beb4e27dd139ce5d March 1, 2016 @ 07:55
cdnjs 118766 bytes 5506b24d009077e5beb4e27dd139ce5d March 1, 2016 @ 04:17
jsdelivr 116616 bytes 5506b24d009077e5beb4e27dd139ce5d February 29, 2016 @ 21:33

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
112285 bytes -7 bytes zopfli --i100000 --mls32 --bsr14 --lazy --ohh March 1, 2016 @ 21:41
112292 bytes -11 bytes zopfli --i10000 --mls32 --bsr14 --lazy --ohh March 1, 2016 @ 14:48
112303 bytes -3 bytes zopfli --i1000 --mls32 --bsr14 --lazy --ohh March 1, 2016 @ 14:29
112306 bytes -1 byte zopfli --i1000 --mls4096 --bsr11 --lazy --ohh March 1, 2016 @ 14:06
112307 bytes -21 bytes zopfli --i1000 --mls4096 --bsr19 --lazy --ohh March 1, 2016 @ 14:02
112328 bytes zopfli --i100 --mls4096 --bsr19 --lazy --ohh March 1, 2016 @ 13:18

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 or 100,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
112412 112411 112404 112403 112416 112415 112422 112355 112420 112416 112415 112416 112417 112425 112419
112319 112321 112316 112325 112327 112350 112340 112327 112333 112320 112346 112416 112416 112333 112407
112308 112319 112313 112312 112336 112308 112326 112346 112334 112310 112335 112335 112320 112321 112417
112415 112421 112417 112414 112293 112408 112409 112410 112408 112408 112310 112308 112299 112322 112407
112410 112408 112408 112410 112410 112296 112409 112442 112408 112408 112307 112302 112300 112342 112410
112420 112408 112413 112418 112293 112420 112415 112414 112407 112408 112413 112315 112298 112409 112408
112407 112408 112408 112414 112285 112300 112409 112410 112408 112408 112328 112300 112304 112406 112410
112413 112421 112408 112410 112286 112300 112306 112419 112408 112410 112327 112297 112299 112407 112410
112407 112409 112408 112414 112286 112286 112295 112416 112408 112415 112324 112415 112298 112407 112411
112412 112412 112408 112414 112297 112299 112295 112410 112408 112415 112309 112297 112304 112406 112411
112407 112408 112413 112410 112285 112287 112408 112419 112408 112408 112327 112312 112299 112413 112410
112412 112408 112413 112407 112300 112298 112290 112419 112408 112408 112301 112307 112299 112407 112410
112414 112410 112422 112410 112300 112415 112417 112408 112412 112410 112303 112297 112297 112406 112408
112411 112410 112409 112413 112293 112293 112308 112419 112410 112408 112333 112310 112300 112409 112411
112410 112411 112409 112409 112289 112297 112413 112410 112408 112408 112327 112309 112299 112406 112408
112414 112323 112414 112416 112413 112416 112414 112416 112408 112408 112413 112297 112305 112406 112409
112413 112416 112415 112416 112294 112420 112422 112410 112407 112415 112325 112298 112313 112407 112409
112416 112415 112413 112410 112293 112298 112409 112410 112408 112415 112326 112313 112313 112407 112409
112407 112409 112408 112414 112293 112408 112411 112410 112408 112408 112299 112299 112298 112406 112407
112407 112409 112408 112414 112285 112298 112409 112419 112408 112418 112298 112300 112312 112406 112410
112410 112414 112408 112414 112293 112424 112409 112419 112408 112408 112327 112300 112313 112406 112408
112416 112415 112409 112419 112293 112299 112297 112416 112421 112413 112313 112303 112314 112406 112411
112411 112414 112413 112407 112290 112415 112408 112412 112410 112408 112329 112300 112314 112415 112411

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 112328 bytes 100%
1,000 112302 bytes -26 bytes 100%
10,000 112292 bytes -10 bytes 100%
100,000 112285 bytes -7 bytes 2.90%
1,000,000
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
112497 bytes +212 bytes (+0.19%) +114 bytes
112435 bytes +150 bytes (+0.13%) +52 bytes
112492 bytes +207 bytes (+0.18%) +109 bytes
112517 bytes +232 bytes (+0.21%) +134 bytes
112403 bytes +118 bytes (+0.11%) +20 bytes
112383 bytes +98 bytes (+0.09%)
112429 bytes +144 bytes (+0.13%) +46 bytes
112465 bytes +180 bytes (+0.16%) +82 bytes
112512 bytes +227 bytes (+0.20%) +129 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 76570 bytes -35715 bytes (-31.81%)
RAR (proprietary) RAR rar a -m5 -md64m -mc63:128t -mt1 81982 bytes -30303 bytes (-26.99%)
PPMd (Wikipedia) 7zip 7za a -mx=9 -m0=ppmd 88410 bytes -23875 bytes (-21.26%)
Burrows-Wheeler transform (Wikipedia) bzip2 bzip2 -9 93294 bytes -18991 bytes (-16.91%)
Brotli (Wikipedia) brotli brotli -q 11 97514 bytes -14771 bytes (-13.15%)
LZMA2 (Wikipedia) xz xz -9 99740 bytes -12545 bytes (-11.17%)
Zstandard (Wikipedia) zstd zstd -19 102530 bytes -9755 bytes (-8.69%)

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.