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

After GZIP compression these minified files vary in size:
Boot
  67528 bytes (65.9k)
CDN, direct link
cdnjs
  58958 bytes (57.6k)
CDN, direct link
Google
  58814 bytes (57.4k)
CDN, direct link
unpkg
  58504 bytes (57.1k)
CDN, direct link
gzip -6 (default)
  58492 bytes (57.1k)
local copy
gzip -9
  58367 bytes (57.0k)
local copy
7zip -mx=9 -tgzip
  56606 bytes (55.3k)
local copy
kzip -s0 -rn -b2
  56598 bytes (55.3k)
local copy
libdeflate -12
  56586 bytes (55.3k)
local copy
pigz -11 -n
  56489 bytes (55.2k)
local copy
Zopfli
  56458 bytes (55.1k)
local copy
Zopfli (defluff)
  56457 bytes (55.1k)
local copy

perma-link to the smallest file on my server:
http://minime.stephan-brumme.com/files/angularjs/angular-1.6.4.min.js

You will automatically get the smallest AngularJS 1.6.4 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 2046 bytes by using my AngularJS 1.6.4 Zopfli version instead of the best available CDN (3.62% smaller than unpkg, 56458 vs. 58504 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 --mls256 --bsr20 --lazy --ohh

(found April 4, 2017)
Description Value Parameter
iterations 1000000  --i1000000
maximum blocks 8  --mb8
maximum length score 256  --mls256
block splitting recursion 20  --bsr20
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 1 more byte (56457 bytes).

Verify file integrity

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

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

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

All listed CDNs deliver identical contents:
CDN Size (compressed) MD5 (uncompressed) Timestamp
Boot 67528 bytes be6af23e2a716c006da75d0291784254 April 1, 2017 @ 19:47
cdnjs 58958 bytes be6af23e2a716c006da75d0291784254 March 31, 2017 @ 22:33
Google 58814 bytes be6af23e2a716c006da75d0291784254 April 11, 2017 @ 20:15
unpkg 58504 bytes be6af23e2a716c006da75d0291784254 April 3, 2017 @ 09:22

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

Other Versions

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

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
56458 bytes -3 bytes zopfli --i1000000 --mls256 --bsr20 --lazy --ohh April 4, 2017 @ 01:19
56461 bytes -3 bytes zopfli --i100000 --mls256 --bsr12 --lazy --ohh April 3, 2017 @ 12:27
56464 bytes -2 bytes zopfli --i10000 --mls256 --bsr12 --lazy --ohh April 3, 2017 @ 11:08
56466 bytes -3 bytes zopfli --i10000 --mls256 --bsr20 --lazy --ohh April 3, 2017 @ 11:02
56469 bytes -3 bytes zopfli --i1000 --mls256 --bsr20 --lazy --ohh April 3, 2017 @ 10:56
56472 bytes -5 bytes zopfli --i1000 --mls2048 --bsr40 --lazy --ohh April 3, 2017 @ 10:56
56477 bytes zopfli --i100 --mls256 --bsr12 --lazy --ohh April 3, 2017 @ 09:24

If there are multiple parameter sets yielding the same compressed size, only the first one found is shown.

Most recent activity on April 11, 2017 @ 20:15.

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
56528 56528 56528 56532 56511 56520 56513 56520 56521 56521 56513 56501 56493 56510 56524
56507 56506 56505 56502 56504 56493 56503 56484 56494 56493 56496 56496 56492 56492 56504
56520 56522 56502 56503 56506 56506 56508 56493 56494 56495 56495 56495 56493 56495 56500
56504 56509 56508 56507 56506 56506 56505 56491 56494 56502 56502 56495 56492 56491 56502
56506 56511 56507 56504 56497 56503 56502 56503 56492 56489 56499 56498 56494 56491 56497
56503 56506 56507 56504 56503 56502 56503 56499 56495 56487 56485 56485 56493 56492 56497
56513 56481 56504 56504 56479 56504 56482 56472 56471 56478 56464 56485 56492 56495 56504
56503 56509 56502 56504 56505 56485 56483 56486 56471 56482 56465 56486 56473 56490 56502
56515 56503 56507 56503 56503 56492 56492 56460 56469 56474 56469 56495 56475 56484 56493
56504 56506 56502 56503 56481 56479 56484 56475 56472 56474 56470 56485 56472 56486 56497
56511 56504 56504 56503 56504 56490 56483 56472 56475 56480 56469 56486 56475 56493 56494
56508 56506 56508 56506 56510 56480 56485 56472 56476 56472 56470 56486 56471 56493 56492
56504 56511 56508 56504 56506 56481 56485 56478 56477 56479 56463 56487 56477 56488 56493
56504 56508 56508 56498 56506 56480 56482 56480 56473 56472 56465 56486 56474 56486 56493
56518 56500 56494 56496 56496 56485 56485 56475 56473 56471 56464 56486 56493 56480 56495
56494 56508 56502 56495 56495 56496 56490 56475 56473 56476 56469 56486 56490 56493 56491
56506 56506 56494 56494 56496 56500 56502 56458 56478 56464 56474 56487 56496 56488 56491
56495 56497 56494 56495 56497 56471 56482 56471 56471 56470 56473 56486 56493 56493 56492
56499 56498 56494 56494 56497 56489 56481 56477 56473 56462 56470 56485 56493 56490 56493
56496 56495 56494 56492 56495 56488 56483 56483 56478 56470 56471 56486 56493 56496 56492
56495 56495 56495 56494 56495 56480 56483 56483 56474 56476 56476 56495 56496 56493 56492
56493 56494 56495 56495 56494 56492 56464 56473 56475 56472 56476 56495 56471 56478 56475
56494 56494 56496 56494 56492 56480 56496 56474 56475 56472 56464 56472 56472 56493 56478

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 56477 bytes 100%
1,000 56469 bytes -8 bytes 100%
10,000 56464 bytes -5 bytes 100%
100,000 56461 bytes -3 bytes 3.19%
1,000,000 56458 bytes -3 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
56600 bytes +142 bytes (+0.25%) +2 bytes
56599 bytes +141 bytes (+0.25%) +1 byte
56598 bytes +140 bytes (+0.25%)
56605 bytes +147 bytes (+0.26%) +7 bytes
56621 bytes +163 bytes (+0.29%) +23 bytes
56617 bytes +159 bytes (+0.28%) +19 bytes
56619 bytes +161 bytes (+0.29%) +21 bytes
56647 bytes +189 bytes (+0.33%) +49 bytes
56648 bytes +190 bytes (+0.34%) +50 bytes

Non-DEFLATE Algorithms

Archivers based on completely different compression algorithms often produce superior results.
Unfortunately, browsers only support gzip compression at the moment.
Algorithm Program Parameters Size Compared To Best Zopfli
ZPAQ (Wikipedia) zpaq zpaq -method 69 43556 bytes -12902 bytes (-22.85%)
RAR (proprietary) RAR rar a -m5 -md64m -mc63:128t -mt1 46086 bytes -10372 bytes (-18.37%)
PPMd (Wikipedia) 7zip 7za a -mx=9 -m0=ppmd 47756 bytes -8702 bytes (-15.41%)
Brotli (Wikipedia) brotli brotli -q 11 51154 bytes -5304 bytes (-9.39%)
Burrows-Wheeler transform (Wikipedia) bzip2 bzip2 -9 51984 bytes -4474 bytes (-7.92%)
LZMA2 (Wikipedia) xz xz -9 52724 bytes -3734 bytes (-6.61%)
ZSTD (Wikipedia) zstd zstd -19 54279 bytes -2179 bytes (-3.86%)

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 2017.
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