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

After GZIP compression these minified files vary in size:
Boot
  61687 bytes (60.2k)
CDN
cdnjs
  53959 bytes (52.7k)
CDN
unpkg
  53602 bytes (52.3k)
CDN
gzip -6 (default)
  53597 bytes (52.3k)
local copy
Google
  53534 bytes (52.3k)
CDN
gzip -9
  53515 bytes (52.3k)
local copy
libdeflate -12
  51827 bytes (50.6k)
local copy
kzip -s0 -rn -b0
  51824 bytes (50.6k)
local copy
7zip -mx=9 -tgzip
  51819 bytes (50.6k)
local copy
zultra
  51805 bytes (50.6k)
local copy
pigz -11 -n
  51783 bytes (50.6k)
local copy
Zopfli
  51692 bytes (50.5k)
local copy
Zopfli (defluff)
  51691 bytes (50.5k)
local copy

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

You will automatically get the smallest AngularJS 1.4.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 1842 bytes by using my AngularJS 1.4.11 Zopfli version instead of the best available CDN (3.56% smaller than Google, 51692 vs. 53534 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 --mls8 --bsr22 --lazy --ohh

(found June 15, 2016)
Description Value Parameter
iterations 1000000  --i1000000
maximum blocks 8  --mb8
maximum length score 8  --mls8
block splitting recursion 22  --bsr22
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 (51691 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.11/angular.min.js --location | md5sum
450c2459c4402eed5484e757dbc2b4cb  -
curl --silent --compressed https://minime.stephan-brumme.com/files/angularjs/angular-1.4.11.min.zopfli.js.gz | md5sum
450c2459c4402eed5484e757dbc2b4cb  -

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

All listed CDNs deliver identical contents:
CDN Size (compressed) MD5 (uncompressed) Timestamp
Boot 61687 bytes 450c2459c4402eed5484e757dbc2b4cb May 27, 2016 @ 16:01
cdnjs 53959 bytes 450c2459c4402eed5484e757dbc2b4cb May 27, 2016 @ 15:46
unpkg 53602 bytes 450c2459c4402eed5484e757dbc2b4cb July 11, 2016 @ 15:52
Google 53534 bytes 450c2459c4402eed5484e757dbc2b4cb May 28, 2016 @ 20:51

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
51692 bytes -3 bytes zopfli --i1000000 --mls8 --bsr22 --lazy --ohh June 15, 2016 @ 00:03
51695 bytes -1 byte zopfli --i100000 --mls8 --bsr22 --lazy --ohh June 14, 2016 @ 16:57
51696 bytes -1 byte zopfli --i100000 --mls32 --bsr7 --lazy --ohh June 14, 2016 @ 14:04
51697 bytes -1 byte zopfli --i10000 --mls32 --bsr7 --lazy --ohh June 14, 2016 @ 13:13
51698 bytes -3 bytes zopfli --i10000 --mls8 --bsr22 --lazy --ohh June 14, 2016 @ 13:03
51701 bytes -1 byte zopfli --i1000 --mls32 --bsr7 --lazy --ohh June 14, 2016 @ 13:01
51702 bytes -2 bytes zopfli --i1000 --mls8 --bsr22 --lazy --ohh June 14, 2016 @ 12:59
51704 bytes -11 bytes zopfli --i1000 --mls8 --bsr19 --lazy --ohh June 14, 2016 @ 12:59
51715 bytes -2 bytes zopfli --i1000 --mls32 --bsr16 --lazy --ohh June 14, 2016 @ 12:59
51717 bytes zopfli --i100 --mls8 --bsr19 --lazy --ohh June 14, 2016 @ 12:47

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
51757 51758 51758 51757 51757 51759 51761 51759 51761 51761 51750 51751 51746 51746 51755
51742 51718 51714 51716 51741 51736 51729 51739 51740 51744 51742 51742 51742 51733 51733
51727 51700 51700 51701 51705 51728 51724 51729 51718 51741 51725 51741 51741 51735 51728
51731 51715 51705 51709 51696 51742 51729 51746 51737 51726 51729 51726 51741 51736 51728
51725 51707 51712 51708 51711 51741 51739 51740 51740 51727 51722 51738 51751 51731 51702
51723 51727 51712 51707 51743 51725 51727 51725 51742 51728 51742 51733 51741 51731 51728
51726 51721 51719 51736 51741 51725 51724 51717 51737 51734 51725 51726 51741 51734 51732
51747 51721 51719 51718 51731 51724 51724 51721 51740 51741 51742 51727 51741 51734 51701
51725 51731 51733 51728 51721 51726 51725 51717 51740 51729 51718 51733 51741 51734 51701
51726 51723 51720 51725 51728 51721 51724 51739 51739 51734 51718 51734 51741 51733 51729
51725 51717 51707 51717 51713 51726 51724 51718 51742 51739 51725 51728 51741 51734 51702
51731 51740 51709 51707 51719 51724 51727 51718 51740 51728 51729 51734 51742 51733 51729
51727 51709 51705 51711 51711 51724 51727 51739 51738 51730 51727 51734 51743 51732 51699
51729 51710 51706 51705 51702 51723 51725 51719 51739 51729 51727 51733 51741 51733 51725
51727 51707 51703 51710 51707 51727 51727 51719 51718 51729 51727 51733 51741 51734 51699
51724 51704 51696 51718 51725 51724 51727 51739 51717 51729 51728 51727 51742 51731 51699
51727 51703 51699 51708 51723 51723 51726 51718 51718 51729 51728 51727 51741 51734 51725
51727 51701 51708 51706 51720 51724 51728 51718 51740 51729 51728 51733 51741 51735 51703
51722 51715 51692 51700 51708 51722 51728 51719 51741 51730 51728 51734 51742 51732 51700
51724 51704 51706 51718 51728 51726 51724 51718 51738 51729 51725 51726 51741 51735 51700
51727 51722 51720 51706 51722 51727 51716 51718 51740 51728 51729 51741 51741 51730 51701
51718 51718 51716 51712 51715 51718 51714 51718 51741 51719 51717 51719 51741 51731 51701
51717 51719 51727 51713 51715 51718 51716 51717 51733 51729 51720 51719 51741 51735 51728

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 51717 bytes 100%
1,000 51701 bytes -16 bytes 100%
10,000 51697 bytes -4 bytes 100%
100,000 51695 bytes -2 bytes 0.87%
1,000,000 51692 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
51824 bytes +132 bytes (+0.26%)
51824 bytes +132 bytes (+0.26%)
51852 bytes +160 bytes (+0.31%) +28 bytes
51856 bytes +164 bytes (+0.32%) +32 bytes
51853 bytes +161 bytes (+0.31%) +29 bytes
51870 bytes +178 bytes (+0.34%) +46 bytes
51879 bytes +187 bytes (+0.36%) +55 bytes
51895 bytes +203 bytes (+0.39%) +71 bytes
51890 bytes +198 bytes (+0.38%) +66 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 40246 bytes -11446 bytes (-22.14%)
RAR (proprietary) RAR rar a -m5 -md64m -mc63:128t -mt1 42458 bytes -9234 bytes (-17.86%)
PPMd (Wikipedia) 7zip 7za a -mx=9 -m0=ppmd 43843 bytes -7849 bytes (-15.18%)
Brotli (Wikipedia) brotli brotli -q 11 47011 bytes -4681 bytes (-9.06%)
Burrows-Wheeler transform (Wikipedia) bzip2 bzip2 -9 47882 bytes -3810 bytes (-7.37%)
LZMA2 (Wikipedia) xz xz -9 48480 bytes -3212 bytes (-6.21%)
Zstandard (Wikipedia) zstd zstd -19 49945 bytes -1747 bytes (-3.38%)

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.