Choose a version:
13% The original file has 1221184 bytes (1,192.6k) and is available from the project website.
There you can find the official minified version, too, which brings down the size to 163188 bytes (159.4k, 13%).

After GZIP compression these minified files vary in size:
Boot
  66268 bytes (64.7k)
CDN
cdnjs
  57899 bytes (56.5k)
CDN
Google
  57781 bytes (56.4k)
CDN
gzip -6 (default)
  57479 bytes (56.1k)
local copy
unpkg
  57455 bytes (56.1k)
CDN
gzip -9
  57369 bytes (56.0k)
local copy
7zip -mx=9 -tgzip
  55638 bytes (54.3k)
local copy
libdeflate -12
  55629 bytes (54.3k)
local copy
kzip -s0 -rn -b1
  55609 bytes (54.3k)
local copy
zultra
  55570 bytes (54.3k)
local copy
pigz -11 -n
  55518 bytes (54.2k)
local copy
Zopfli
  55456 bytes (54.2k)
local copy
Zopfli (defluff)
  55454 bytes (54.2k)
local copy

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

You will automatically get the smallest AngularJS 1.5.11 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 1999 bytes by using my AngularJS 1.5.11 Zopfli version instead of the best available CDN (3.60% smaller than unpkg, 55456 vs. 57455 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 --mls16384 --bsr23 --lazy --ohh

(found January 14, 2017)
Description Value Parameter
iterations 1000000  --i1000000
maximum blocks 8  --mb8
maximum length score 16384  --mls16384
block splitting recursion 23  --bsr23
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 (55454 bytes).

Verify file integrity

After decompression, my uncompressed files are identical to the original ones:

MD5:
curl --silent --compressed https://code.angularjs.org/1.5.11/angular.min.js --location | md5sum
c2ad694ba54a332992cc370fafd0d367  -
curl --silent --compressed https://minime.stephan-brumme.com/files/angularjs/angular-1.5.11.min.zopfli.js.gz | md5sum
c2ad694ba54a332992cc370fafd0d367  -

SHA1:
curl --silent --compressed https://code.angularjs.org/1.5.11/angular.min.js --location | sha1sum
aa803cdbe3d52e6c0186de199dac97113e6045ab  -
curl --silent --compressed https://minime.stephan-brumme.com/files/angularjs/angular-1.5.11.min.zopfli.js.gz | sha1sum
aa803cdbe3d52e6c0186de199dac97113e6045ab  -

All listed CDNs deliver identical contents:
CDN Size (compressed) MD5 (uncompressed) Timestamp
Boot 66268 bytes c2ad694ba54a332992cc370fafd0d367 January 21, 2017 @ 17:06
cdnjs 57899 bytes c2ad694ba54a332992cc370fafd0d367 January 13, 2017 @ 08:47
Google 57781 bytes c2ad694ba54a332992cc370fafd0d367 January 14, 2017 @ 12:15
unpkg 57455 bytes c2ad694ba54a332992cc370fafd0d367 January 13, 2017 @ 14:03

Note: only the MD5 hashes are shown to keep things simple.

Other Versions

Available AngularJS versions at minime.stephan-brumme.com:

1.8.2, 1.8.1, 1.8.0,
1.7.9, 1.7.8, 1.7.7, 1.7.6, 1.7.5, 1.7.4, 1.7.3, 1.7.2, 1.7.1, 1.7.0,
1.6.10, 1.6.9, 1.6.8, 1.6.7, 1.6.6, 1.6.5, 1.6.4, 1.6.3, 1.6.2, 1.6.1, 1.6.0,
1.5.11, 1.5.10, 1.5.9, 1.5.8, 1.5.7, 1.5.6, 1.5.5, 1.5.4, 1.5.3, 1.5.2, 1.5.1, 1.5.0,
1.4.14, 1.4.13, 1.4.12, 1.4.11, 1.4.10, 1.4.9, 1.4.8, 1.4.7, 1.4.6, 1.4.5, 1.4.4, 1.4.3, 1.4.2, 1.4.1, 1.4.0,
1.3.20, 1.3.19, 1.3.18, 1.3.17, 1.3.16, 1.3.15, 1.3.14, 1.3.13, 1.3.12, 1.3.11, 1.3.10, 1.3.9, 1.3.8, 1.3.7, 1.3.6, 1.3.5, 1.3.4, 1.3.3, 1.3.2, 1.3.1, 1.3.0,
1.2.32, 1.2.31, 1.2.30, 1.2.29, 1.2.28, 1.2.27, 1.2.26, 1.2.25, 1.2.24, 1.2.23, 1.2.22, 1.2.21, 1.2.20, 1.2.19, 1.2.18, 1.2.17, 1.2.16, 1.2.15, 1.2.14, 1.2.13, 1.2.12, 1.2.11, 1.2.10, 1.2.9, 1.2.8, 1.2.7, 1.2.6, 1.2.5, 1.2.4, 1.2.3, 1.2.2, 1.2.1, 1.2.0,
1.1.5, 1.1.4, 1.1.3, 1.1.2, 1.1.1, 1.1.0,
1.0.8, 1.0.7, 1.0.6, 1.0.5, 1.0.4, 1.0.3, 1.0.2, 1.0.1, 1.0.0,
0.10.6, 0.10.5, 0.10.4, 0.10.3, 0.10.2, 0.10.1, 0.10.0,
0.9.19, 0.9.18, 0.9.17, 0.9.16, 0.9.15, 0.9.14, 0.9.13, 0.9.12, 0.9.11, 0.9.10, 0.9.9, 0.9.8, 0.9.7, 0.9.6, 0.9.5, 0.9.4, 0.9.3, 0.9.2, 0.9.1, 0.9.0

The project site contains an overview how well these versions were compressed.
Other interesting projects are BackboneJS, Bootstrap, D3, Dojo, Ember, jQuery, Knockout, lodash, React, Socket.IO, ThreeJS, UnderscoreJS and Vue.

Changelog

Best Zopfli parameters so far:
Size Improvement Parameters Found
55456 bytes -3 bytes zopfli --i1000000 --mls16384 --bsr23 --lazy --ohh January 14, 2017 @ 01:41
55459 bytes -2 bytes zopfli --i100000 --mls16384 --bsr23 --lazy --ohh January 13, 2017 @ 15:11
55461 bytes -4 bytes zopfli --i10000 --mls16384 --bsr23 --lazy --ohh January 13, 2017 @ 14:14
55465 bytes -18 bytes zopfli --i1000 --mls16384 --bsr23 --lazy --ohh January 13, 2017 @ 14:09
55483 bytes zopfli --i100 --mls16384 --bsr23 --lazy --ohh January 13, 2017 @ 14:06

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
55538 55537 55536 55527 55525 55526 55523 55527 55527 55530 55500 55499 55511 55517 55525
55529 55518 55518 55520 55501 55507 55510 55508 55502 55506 55507 55508 55508 55478 55514
55514 55510 55513 55516 55509 55508 55496 55507 55507 55496 55508 55508 55508 55504 55509
55516 55505 55475 55485 55476 55475 55508 55508 55507 55507 55515 55508 55506 55473 55502
55514 55486 55512 55511 55502 55507 55505 55513 55509 55500 55496 55493 55502 55514 55509
55512 55516 55509 55524 55501 55506 55512 55505 55506 55497 55508 55508 55507 55478 55516
55513 55523 55513 55513 55473 55509 55511 55495 55507 55508 55508 55508 55506 55462 55493
55511 55520 55517 55512 55502 55503 55514 55507 55499 55507 55508 55494 55507 55473 55508
55520 55520 55508 55513 55513 55508 55495 55506 55506 55495 55508 55508 55507 55474 55501
55513 55523 55513 55510 55507 55507 55515 55509 55506 55508 55508 55495 55507 55476 55502
55520 55522 55513 55517 55502 55509 55499 55509 55506 55497 55508 55508 55507 55460 55514
55525 55520 55514 55524 55505 55513 55513 55509 55507 55508 55508 55508 55507 55474 55516
55508 55508 55507 55512 55473 55477 55509 55506 55506 55508 55508 55494 55507 55481 55496
55517 55520 55513 55509 55512 55503 55512 55507 55507 55497 55507 55493 55507 55460 55490
55514 55516 55513 55512 55512 55516 55514 55510 55507 55507 55508 55508 55507 55462 55516
55512 55522 55510 55516 55509 55509 55514 55508 55506 55507 55508 55508 55506 55476 55495
55520 55519 55513 55513 55502 55502 55512 55506 55506 55497 55508 55508 55507 55476 55516
55514 55521 55516 55516 55470 55507 55511 55508 55506 55497 55508 55508 55507 55466 55497
55513 55511 55513 55507 55504 55503 55508 55508 55506 55497 55508 55508 55506 55466 55492
55513 55522 55512 55512 55513 55514 55514 55509 55507 55497 55507 55495 55495 55456 55499
55514 55516 55509 55505 55504 55507 55505 55506 55500 55507 55508 55509 55506 55475 55500
55507 55521 55509 55512 55470 55505 55500 55510 55495 55508 55508 55508 55507 55473 55498
55515 55513 55517 55513 55508 55499 55499 55501 55498 55492 55508 55508 55495 55473 55489

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 55483 bytes 100%
1,000 55465 bytes -18 bytes 100%
10,000 55461 bytes -4 bytes 100%
100,000 55459 bytes -2 bytes 1.45%
1,000,000 55456 bytes -3 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
55610 bytes +154 bytes (+0.28%) +1 byte
55609 bytes +153 bytes (+0.28%)
55615 bytes +159 bytes (+0.29%) +6 bytes
55619 bytes +163 bytes (+0.29%) +10 bytes
55634 bytes +178 bytes (+0.32%) +25 bytes
55651 bytes +195 bytes (+0.35%) +42 bytes
55627 bytes +171 bytes (+0.31%) +18 bytes
55663 bytes +207 bytes (+0.37%) +54 bytes
55691 bytes +235 bytes (+0.42%) +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 43052 bytes -12404 bytes (-22.37%)
RAR (proprietary) RAR rar a -m5 -md64m -mc63:128t -mt1 45415 bytes -10041 bytes (-18.11%)
PPMd (Wikipedia) 7zip 7za a -mx=9 -m0=ppmd 47018 bytes -8438 bytes (-15.22%)
Brotli (Wikipedia) brotli brotli -q 11 50378 bytes -5078 bytes (-9.16%)
Burrows-Wheeler transform (Wikipedia) bzip2 bzip2 -9 51191 bytes -4265 bytes (-7.69%)
LZMA2 (Wikipedia) xz xz -9 51924 bytes -3532 bytes (-6.37%)
Zstandard (Wikipedia) zstd zstd -19 53429 bytes -2027 bytes (-3.66%)

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.