Choose a version:
14% The original file has 1041139 bytes (1,016.7k) and is available from the project website.
There you can find the official minified version, too, which brings down the size to 145358 bytes (142.0k, 14%).

After GZIP compression these minified files vary in size:
Boot
  59359 bytes (58.0k)
CDN
cdnjs
  52051 bytes (50.8k)
CDN
gzip -6 (default)
  51740 bytes (50.5k)
local copy
unpkg
  51727 bytes (50.5k)
CDN
Google
  51680 bytes (50.5k)
CDN
gzip -9
  51637 bytes (50.4k)
local copy
libdeflate -12
  50041 bytes (48.9k)
local copy
7zip -mx=9 -tgzip
  50037 bytes (48.9k)
local copy
kzip -s0 -rn -b0
  50019 bytes (48.8k)
local copy
pigz -11 -n
  49996 bytes (48.8k)
local copy
zultra
  49989 bytes (48.8k)
local copy
Zopfli
  49894 bytes (48.7k)
local copy
Zopfli (defluff)
  49893 bytes (48.7k)
local copy

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

You will automatically get the smallest AngularJS 1.4.3 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 1786 bytes by using my AngularJS 1.4.3 Zopfli version instead of the best available CDN (3.58% smaller than Google, 49894 vs. 51680 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 --mls8 --bsr16 --lazy --ohh

(found September 28, 2015)
Description Value Parameter
iterations 100000  --i100000
maximum blocks 8  --mb8
maximum length score 8  --mls8
block splitting recursion 16  --bsr16
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 (49893 bytes).

Verify file integrity

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

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

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

All listed CDNs deliver identical contents:
CDN Size (compressed) MD5 (uncompressed) Timestamp
Boot 59359 bytes d2342622316f832ef1333c74e41354ca July 21, 2015 @ 22:35
cdnjs 52051 bytes d2342622316f832ef1333c74e41354ca July 20, 2015 @ 07:48
unpkg 51727 bytes d2342622316f832ef1333c74e41354ca July 11, 2016 @ 15:52
Google 51680 bytes d2342622316f832ef1333c74e41354ca July 15, 2015 @ 20:21

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
49894 bytes -3 bytes zopfli --i100000 --mls8 --bsr16 --lazy --ohh September 28, 2015 @ 06:18
49897 bytes -1 byte zopfli --i10000 --mls8 --bsr16 --lazy --ohh September 26, 2015 @ 05:11
49898 bytes -3 bytes zopfli --i10000 --mls16384 --bsr16 --lazy --ohh September 17, 2015 @ 17:26
49901 bytes -1 byte zopfli --i1000 --mls16384 --bsr7 --lazy --ohh September 11, 2015 @ 17:35
49902 bytes -9 bytes zopfli --i1000 --mls16384 --bsr13 --lazy --ohh September 11, 2015 @ 17:31
49911 bytes -8 bytes zopfli --i1000 --mls16384 --bsr8 --lazy --ohh September 11, 2015 @ 17:29
49919 bytes zopfli --i100 --mls16384 --bsr13 --lazy --ohh September 11, 2015 @ 15:07

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:56.

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
49955 49956 49956 49956 49955 49956 49957 49957 49950 49951 49959 49959 49959 49930 49945
49936 49939 49926 49937 49937 49938 49935 49934 49926 49937 49939 49935 49935 49929 49941
49936 49910 49938 49940 49942 49934 49936 49935 49937 49939 49939 49935 49936 49939 49932
49908 49902 49901 49910 49909 49937 49925 49940 49925 49940 49927 49924 49938 49899 49953
49910 49909 49910 49912 49911 49935 49936 49938 49924 49925 49939 49925 49927 49910 49950
49936 49930 49927 49937 49936 49934 49943 49935 49920 49936 49927 49935 49926 49928 49942
49936 49901 49913 49938 49915 49935 49936 49935 49938 49940 49925 49925 49925 49918 49937
49908 49904 49900 49911 49908 49937 49925 49935 49920 49927 49926 49924 49926 49909 49956
49929 49900 49937 49940 49937 49934 49936 49935 49937 49938 49927 49924 49925 49911 49940
49909 49902 49901 49912 49922 49934 49934 49934 49937 49927 49940 49924 49925 49900 49942
49906 49899 49907 49926 49944 49937 49934 49935 49937 49924 49927 49926 49939 49909 49941
49935 49937 49937 49931 49926 49937 49934 49934 49937 49938 49926 49924 49928 49897 49940
49911 49905 49894 49934 49909 49936 49934 49937 49922 49936 49939 49924 49928 49897 49941
49907 49900 49904 49910 49912 49937 49935 49936 49937 49923 49925 49924 49939 49909 49940
49907 49901 49937 49931 49942 49934 49936 49935 49937 49926 49925 49925 49926 49908 49940
49936 49895 49916 49925 49906 49937 49935 49940 49937 49923 49939 49925 49927 49909 49940
49905 49902 49909 49910 49942 49934 49926 49935 49937 49938 49926 49925 49924 49899 49939
49933 49903 49938 49910 49939 49935 49934 49935 49918 49921 49926 49924 49924 49899 49947
49907 49899 49927 49930 49909 49937 49924 49935 49923 49937 49927 49925 49926 49909 49957
49908 49899 49900 49927 49911 49937 49924 49940 49937 49938 49925 49925 49924 49899 49940
49938 49902 49901 49932 49922 49937 49935 49940 49924 49922 49939 49925 49925 49900 49939
49940 49903 49920 49943 49917 49936 49934 49934 49937 49926 49925 49926 49939 49901 49941
49935 49900 49901 49925 49939 49937 49934 49935 49937 49925 49940 49924 49925 49899 49941

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 49915 bytes 100%
1,000 49901 bytes -14 bytes 100%
10,000 49897 bytes -4 bytes 100%
100,000 49894 bytes -3 bytes 1.16%
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
50019 bytes +125 bytes (+0.25%)
50023 bytes +129 bytes (+0.26%) +4 bytes
50027 bytes +133 bytes (+0.27%) +8 bytes
50057 bytes +163 bytes (+0.33%) +38 bytes
50069 bytes +175 bytes (+0.35%) +50 bytes
50060 bytes +166 bytes (+0.33%) +41 bytes
50087 bytes +193 bytes (+0.39%) +68 bytes
50122 bytes +228 bytes (+0.46%) +103 bytes
50088 bytes +194 bytes (+0.39%) +69 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 39057 bytes -10837 bytes (-21.72%)
RAR (proprietary) RAR rar a -m5 -md64m -mc63:128t -mt1 41175 bytes -8719 bytes (-17.48%)
PPMd (Wikipedia) 7zip 7za a -mx=9 -m0=ppmd 42260 bytes -7634 bytes (-15.30%)
Brotli (Wikipedia) brotli brotli -q 11 45570 bytes -4324 bytes (-8.67%)
Burrows-Wheeler transform (Wikipedia) bzip2 bzip2 -9 46435 bytes -3459 bytes (-6.93%)
LZMA2 (Wikipedia) xz xz -9 46940 bytes -2954 bytes (-5.92%)
Zstandard (Wikipedia) zstd zstd -19 48329 bytes -1565 bytes (-3.14%)

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.