Choose a version:
13% The original file has 965533 bytes (942.9k) and is available from the project website.
There you can find the official minified version, too, which brings down the size to 126400 bytes (123.4k, 13%).

After GZIP compression these minified files vary in size:
Boot
  53296 bytes (52.0k)
CDN
cdnjs
  46794 bytes (45.7k)
CDN
unpkg
  46518 bytes (45.4k)
CDN
gzip -6 (default)
  46486 bytes (45.4k)
local copy
Google
  46436 bytes (45.3k)
CDN
Yandex
  46390 bytes (45.3k)
CDN
jsdelivr
  46390 bytes (45.3k)
CDN
gzip -9
  46386 bytes (45.3k)
local copy
7zip -mx=9 -tgzip
  45018 bytes (44.0k)
local copy
kzip -s0 -rn -b1
  44982 bytes (43.9k)
local copy
zultra
  44975 bytes (43.9k)
local copy
libdeflate -12
  44970 bytes (43.9k)
local copy
pigz -11 -n
  44919 bytes (43.9k)
local copy
Zopfli
  44877 bytes (43.8k)
local copy
Zopfli (defluff)
  44876 bytes (43.8k)
local copy

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

You will automatically get the smallest AngularJS 1.3.16 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 1513 bytes by using my AngularJS 1.3.16 Zopfli version instead of the best available CDN (3.37% smaller than jsdelivr, 44877 vs. 46390 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 --mls128 --bsr40 --lazy --ohh

(found November 30, 2015)
Description Value Parameter
iterations 100000  --i100000
maximum blocks 8  --mb8
maximum length score 128  --mls128
block splitting recursion 40  --bsr40
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 (44876 bytes).

Verify file integrity

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

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

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

All listed CDNs deliver identical contents:
CDN Size (compressed) MD5 (uncompressed) Timestamp
Boot 53296 bytes 1a25639e5948e8591dc277edea24dc02 June 8, 2015 @ 08:06
cdnjs 46794 bytes 1a25639e5948e8591dc277edea24dc02 June 6, 2015 @ 19:00
unpkg 46518 bytes 1a25639e5948e8591dc277edea24dc02 July 11, 2016 @ 15:53
Google 46436 bytes 1a25639e5948e8591dc277edea24dc02 June 6, 2015 @ 04:18
Yandex 46390 bytes 1a25639e5948e8591dc277edea24dc02 June 11, 2015 @ 14:17
jsdelivr 46390 bytes 1a25639e5948e8591dc277edea24dc02 June 10, 2015 @ 12:07

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
44877 bytes -1 byte zopfli --i100000 --mls128 --bsr40 --lazy --ohh November 30, 2015 @ 14:20
44878 bytes -1 byte zopfli --i10000 --mls128 --bsr40 --lazy --ohh October 13, 2015 @ 21:30
44879 bytes -1 byte zopfli --i10000 --mls256 --bsr22 --lazy --ohh October 13, 2015 @ 20:54
44880 bytes -2 bytes zopfli --i10000 --mls512 --bsr16 --lazy --ohh September 8, 2015 @ 19:42
44882 bytes -3 bytes zopfli --i10000 --mls512 --bsr6 --lazy --ohh September 8, 2015 @ 19:41
44885 bytes -2 bytes zopfli --i1000 --mls512 --bsr16 --lazy --ohh September 7, 2015 @ 18:21
44887 bytes -7 bytes zopfli --i1000 --mls512 --bsr6 --lazy --ohh September 7, 2015 @ 18:21
44894 bytes zopfli --i100 --mls1024 --bsr11 --lazy --ohh September 7, 2015 @ 16:26

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
44907 44906 44908 44910 44909 44910 44901 44900 44903 44903 44910 44903 44908 44901 44891
44912 44908 44923 44909 44909 44912 44899 44899 44904 44899 44892 44901 44904 44892 44933
44899 44896 44898 44905 44904 44910 44879 44888 44882 44891 44899 44902 44889 44891 44896
44888 44920 44923 44903 44905 44909 44905 44879 44893 44880 44899 44894 44885 44890 44880
44893 44898 44911 44904 44909 44907 44889 44881 44903 44896 44892 44886 44891 44891 44914
44899 44908 44922 44899 44914 44910 44900 44877 44899 44901 44894 44904 44888 44891 44897
44891 44923 44922 44909 44914 44909 44892 44882 44896 44900 44902 44900 44897 44890 44915
44884 44921 44921 44914 44901 44909 44892 44881 44895 44885 44888 44887 44899 44891 44920
44909 44921 44907 44914 44897 44909 44907 44881 44892 44882 44888 44886 44897 44891 44911
44900 44900 44909 44921 44918 44909 44905 44882 44902 44884 44895 44896 44884 44891 44910
44910 44907 44920 44909 44899 44908 44895 44878 44899 44896 44894 44901 44891 44891 44891
44888 44920 44922 44921 44907 44910 44905 44883 44900 44887 44881 44901 44885 44891 44903
44909 44923 44922 44909 44909 44908 44880 44879 44880 44886 44890 44885 44883 44891 44885
44901 44908 44921 44911 44923 44908 44898 44883 44898 44883 44906 44900 44898 44891 44929
44909 44921 44922 44920 44909 44908 44899 44899 44898 44887 44888 44900 44887 44891 44934
44910 44921 44908 44920 44915 44909 44901 44878 44894 44886 44882 44906 44906 44891 44926
44909 44908 44921 44911 44902 44907 44899 44878 44898 44897 44891 44900 44882 44890 44895
44894 44923 44903 44898 44906 44902 44880 44882 44899 44882 44888 44883 44889 44894 44898
44889 44907 44899 44907 44903 44905 44900 44879 44899 44898 44903 44901 44882 44890 44890
44890 44921 44923 44922 44908 44909 44889 44891 44892 44899 44880 44900 44882 44891 44929
44915 44906 44921 44913 44909 44909 44905 44879 44898 44880 44888 44886 44896 44891 44902
44893 44909 44920 44921 44901 44908 44906 44879 44900 44887 44888 44900 44886 44891 44889
44913 44920 44923 44911 44899 44908 44877 44884 44881 44899 44891 44886 44885 44890 44902

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 44891 bytes 100%
1,000 44882 bytes -9 bytes 100%
10,000 44878 bytes -4 bytes 100%
100,000 44877 bytes -1 byte 1.45%
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
44983 bytes +106 bytes (+0.24%) +1 byte
44982 bytes +105 bytes (+0.23%)
45003 bytes +126 bytes (+0.28%) +21 bytes
45035 bytes +158 bytes (+0.35%) +53 bytes
45044 bytes +167 bytes (+0.37%) +62 bytes
45069 bytes +192 bytes (+0.43%) +87 bytes
45047 bytes +170 bytes (+0.38%) +65 bytes
45044 bytes +167 bytes (+0.37%) +62 bytes
45080 bytes +203 bytes (+0.45%) +98 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 35787 bytes -9090 bytes (-20.26%)
RAR (proprietary) RAR rar a -m5 -md64m -mc63:128t -mt1 37405 bytes -7472 bytes (-16.65%)
PPMd (Wikipedia) 7zip 7za a -mx=9 -m0=ppmd 39258 bytes -5619 bytes (-12.52%)
Brotli (Wikipedia) brotli brotli -q 11 41190 bytes -3687 bytes (-8.22%)
Burrows-Wheeler transform (Wikipedia) bzip2 bzip2 -9 41943 bytes -2934 bytes (-6.54%)
LZMA2 (Wikipedia) xz xz -9 42624 bytes -2253 bytes (-5.02%)
Zstandard (Wikipedia) zstd zstd -19 43801 bytes -1076 bytes (-2.40%)

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.