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

After GZIP compression these minified files vary in size:
Boot
  66784 bytes (65.2k)
CDN
cdnjs
  58290 bytes (56.9k)
CDN
gzip -6 (default)
  57808 bytes (56.5k)
local copy
unpkg
  57800 bytes (56.4k)
CDN
Google
  57770 bytes (56.4k)
CDN
gzip -9
  57689 bytes (56.3k)
local copy
jsdelivr
  57688 bytes (56.3k)
CDN
7zip -mx=9 -tgzip
  55924 bytes (54.6k)
local copy
kzip -s0 -rn -b0
  55906 bytes (54.6k)
local copy
libdeflate -12
  55884 bytes (54.6k)
local copy
zultra
  55865 bytes (54.6k)
local copy
pigz -11 -n
  55831 bytes (54.5k)
local copy
Zopfli
  55772 bytes (54.5k)
local copy
Zopfli (defluff)
  55771 bytes (54.5k)
local copy

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

You will automatically get the smallest AngularJS 1.6.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 1916 bytes by using my AngularJS 1.6.0 Zopfli version instead of the best available CDN (3.44% smaller than jsdelivr, 55772 vs. 57688 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 --mls2048 --bsr19 --lazy --ohh

(found December 16, 2016)
Description Value Parameter
iterations 1000000  --i1000000
maximum blocks 8  --mb8
maximum length score 2048  --mls2048
block splitting recursion 19  --bsr19
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 (55771 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.0/angular.min.js --location | md5sum
f4914c1fed1c60b90816b57b009c6162  -
curl --silent --compressed https://minime.stephan-brumme.com/files/angularjs/angular-1.6.0.min.zopfli.js.gz | md5sum
f4914c1fed1c60b90816b57b009c6162  -

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

All listed CDNs deliver identical contents:
CDN Size (compressed) MD5 (uncompressed) Timestamp
Boot 66784 bytes f4914c1fed1c60b90816b57b009c6162 December 8, 2016 @ 14:00
cdnjs 58290 bytes f4914c1fed1c60b90816b57b009c6162 December 8, 2016 @ 13:47
unpkg 57800 bytes f4914c1fed1c60b90816b57b009c6162 December 15, 2016 @ 10:45
Google 57770 bytes f4914c1fed1c60b90816b57b009c6162 December 8, 2016 @ 22:28
jsdelivr 57688 bytes f4914c1fed1c60b90816b57b009c6162 December 10, 2016 @ 04:38

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
55772 bytes -4 bytes zopfli --i1000000 --mls2048 --bsr19 --lazy --ohh December 16, 2016 @ 18:29
55776 bytes -1 byte zopfli --i100000 --mls2048 --bsr14 --lazy --ohh December 15, 2016 @ 21:23
55777 bytes -1 byte zopfli --i100000 --mls256 --bsr11 --lazy --ohh December 15, 2016 @ 13:51
55778 bytes -2 bytes zopfli --i100000 --mls256 --bsr21 --lazy --ohh December 15, 2016 @ 12:50
55780 bytes -4 bytes zopfli --i10000 --mls256 --bsr21 --lazy --ohh December 15, 2016 @ 11:37
55784 bytes -3 bytes zopfli --i1000 --mls256 --bsr21 --lazy --ohh December 15, 2016 @ 11:25
55787 bytes -17 bytes zopfli --i1000 --mls512 --bsr14 --lazy --ohh December 15, 2016 @ 11:24
55804 bytes zopfli --i100 --mls2048 --bsr13 --lazy --ohh December 15, 2016 @ 10: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:50.

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
55824 55823 55827 55829 55830 55830 55832 55832 55831 55830 55833 55815 55815 55815 55825
55819 55821 55816 55811 55811 55809 55810 55802 55808 55798 55806 55798 55809 55810 55800
55811 55821 55812 55812 55813 55815 55809 55787 55798 55799 55808 55811 55808 55802 55797
55814 55816 55813 55826 55806 55816 55807 55802 55786 55789 55792 55810 55798 55809 55809
55813 55815 55821 55817 55808 55806 55807 55791 55812 55809 55791 55805 55819 55809 55793
55807 55824 55811 55813 55808 55808 55810 55796 55799 55810 55798 55798 55806 55809 55794
55824 55806 55807 55804 55803 55809 55809 55793 55791 55791 55790 55810 55802 55799 55806
55813 55808 55813 55811 55802 55808 55803 55777 55790 55789 55797 55811 55807 55809 55796
55817 55816 55811 55812 55808 55811 55808 55791 55783 55778 55777 55801 55812 55798 55796
55807 55811 55800 55805 55800 55809 55807 55796 55784 55781 55772 55800 55808 55800 55795
55820 55813 55807 55811 55799 55809 55809 55782 55778 55793 55774 55810 55808 55799 55797
55814 55808 55812 55803 55803 55808 55807 55781 55789 55791 55786 55798 55799 55799 55814
55812 55821 55812 55810 55805 55808 55805 55789 55778 55788 55785 55798 55799 55806 55792
55806 55811 55813 55804 55802 55808 55807 55781 55793 55801 55778 55804 55798 55810 55797
55802 55813 55804 55805 55811 55812 55806 55781 55783 55799 55790 55798 55799 55799 55799
55819 55813 55811 55811 55808 55814 55809 55795 55782 55791 55772 55798 55798 55809 55794
55810 55809 55806 55807 55804 55812 55809 55788 55789 55799 55786 55798 55798 55799 55791
55821 55812 55802 55804 55796 55808 55807 55778 55777 55777 55781 55799 55798 55809 55796
55816 55810 55814 55801 55808 55806 55806 55797 55784 55790 55791 55799 55804 55798 55799
55806 55810 55807 55803 55801 55809 55806 55781 55783 55789 55777 55800 55805 55799 55795
55802 55807 55803 55813 55808 55808 55808 55791 55789 55800 55790 55807 55798 55800 55792
55802 55812 55807 55802 55803 55809 55798 55792 55789 55790 55778 55810 55799 55810 55792
55805 55811 55802 55803 55798 55799 55804 55784 55788 55799 55792 55810 55799 55798 55796

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 55804 bytes 100%
1,000 55784 bytes -20 bytes 100%
10,000 55780 bytes -4 bytes 100%
100,000 55776 bytes -4 bytes 4.06%
1,000,000 55772 bytes -4 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
55906 bytes +134 bytes (+0.24%)
55909 bytes +137 bytes (+0.25%) +3 bytes
55915 bytes +143 bytes (+0.26%) +9 bytes
55930 bytes +158 bytes (+0.28%) +24 bytes
55928 bytes +156 bytes (+0.28%) +22 bytes
55941 bytes +169 bytes (+0.30%) +35 bytes
55945 bytes +173 bytes (+0.31%) +39 bytes
55968 bytes +196 bytes (+0.35%) +62 bytes
55980 bytes +208 bytes (+0.37%) +74 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 43124 bytes -12648 bytes (-22.68%)
RAR (proprietary) RAR rar a -m5 -md64m -mc63:128t -mt1 45569 bytes -10203 bytes (-18.29%)
PPMd (Wikipedia) 7zip 7za a -mx=9 -m0=ppmd 47196 bytes -8576 bytes (-15.38%)
Brotli (Wikipedia) brotli brotli -q 11 50689 bytes -5083 bytes (-9.11%)
Burrows-Wheeler transform (Wikipedia) bzip2 bzip2 -9 51435 bytes -4337 bytes (-7.78%)
LZMA2 (Wikipedia) xz xz -9 52180 bytes -3592 bytes (-6.44%)
Zstandard (Wikipedia) zstd zstd -19 53655 bytes -2117 bytes (-3.80%)

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.