Choose a version:
15% The original file has 573664 bytes (560.2k) and is available from the project website.
There you can find the official minified version, too, which brings down the size to 88802 bytes (86.7k, 15%).

After GZIP compression these minified files vary in size:
Boot
  37813 bytes (36.9k)
CDN
Baidu
  33564 bytes (32.8k)
CDN
cdnjs
  33459 bytes (32.7k)
CDN
gzip -6 (default)
  33272 bytes (32.5k)
local copy
Google
  33251 bytes (32.5k)
CDN
gzip -9
  33215 bytes (32.4k)
local copy
jsdelivr
  33212 bytes (32.4k)
CDN
7zip -mx=9 -tgzip
  32280 bytes (31.5k)
local copy
libdeflate -12
  32276 bytes (31.5k)
local copy
kzip -s0 -rn -b0
  32262 bytes (31.5k)
local copy
zultra
  32245 bytes (31.5k)
local copy
pigz -11 -n
  32224 bytes (31.5k)
local copy
Zopfli
  32203 bytes (31.4k)
local copy
Zopfli (defluff)
  32201 bytes (31.4k)
local copy

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

You will automatically get the smallest AngularJS 1.1.5 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 1009 bytes by using my AngularJS 1.1.5 Zopfli version instead of the best available CDN (3.13% smaller than jsdelivr, 32203 vs. 33212 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 --mls2 --bsr22 --lazy --ohh

(found November 26, 2015)
Description Value Parameter
iterations 100000  --i100000
maximum blocks 8  --mb8
maximum length score 2  --mls2
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 2 more bytes (32201 bytes).

Verify file integrity

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

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

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

These CDNs send you the original file:
CDN Size (compressed) MD5 (uncompressed) Timestamp
Boot 37813 bytes df1c56732ca5e0cfe2a4725ec9517449 March 18, 2015 @ 10:18
cdnjs 33459 bytes df1c56732ca5e0cfe2a4725ec9517449 (invalid)
Google 33251 bytes df1c56732ca5e0cfe2a4725ec9517449 (invalid)
jsdelivr 33212 bytes df1c56732ca5e0cfe2a4725ec9517449 August 7, 2014 @ 18:30

And some CDNs send you a different file:
CDN Size (compressed) MD5 (uncompressed) Comment / Diff Timestamp
Baidu 33564 bytes 2e4c03baa7fe19faedefddccfabc5abd only whitespaces differ June 5, 2014 @ 10:05

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
32203 bytes -3 bytes zopfli --i100000 --mls2 --bsr22 --lazy --ohh November 26, 2015 @ 18:40
32206 bytes -1 byte zopfli --i10000 --mls2 --bsr22 --lazy --ohh November 26, 2015 @ 17:27
32207 bytes -1 byte zopfli --i10000 --mls4096 --bsr30 --lazy --ohh October 21, 2015 @ 17:12
32208 bytes -1 byte zopfli --i10000 --mls4096 --bsr12 --lazy --ohh September 10, 2015 @ 03:30
32209 bytes -1 byte zopfli --i1000 --mls4096 --bsr12 --lazy --ohh September 7, 2015 @ 20:44
32210 bytes -1 byte zopfli --i1000 --mls1024 --bsr9 --lazy --ohh September 7, 2015 @ 20:43
32211 bytes -8 bytes zopfli --i1000 --mls512 --bsr6 --lazy --ohh September 7, 2015 @ 20:42
32219 bytes zopfli --i100 --mls512 --bsr4 --lazy --ohh September 7, 2015 @ 16:15

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

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
32220 32219 32219 32219 32220 32219 32220 32225 32220 32218 32218 32221 32212 32223 32217
32220 32217 32221 32221 32218 32218 32216 32218 32219 32222 32218 32225 32225 32220 32231
32219 32219 32213 32218 32219 32218 32218 32220 32210 32218 32215 32222 32222 32218 32211
32217 32216 32207 32217 32216 32220 32219 32218 32219 32217 32218 32217 32219 32219 32224
32217 32218 32217 32217 32216 32218 32218 32217 32219 32218 32218 32223 32218 32218 32218
32218 32222 32220 32218 32218 32218 32216 32218 32210 32209 32218 32212 32210 32219 32229
32216 32218 32218 32220 32219 32217 32217 32218 32217 32218 32219 32208 32217 32219 32223
32225 32216 32221 32216 32217 32219 32217 32218 32210 32219 32209 32222 32223 32219 32222
32219 32216 32217 32219 32218 32217 32219 32219 32211 32219 32218 32208 32227 32216 32223
32218 32219 32217 32216 32219 32217 32218 32218 32219 32217 32218 32219 32215 32219 32223
32220 32220 32221 32217 32221 32218 32218 32218 32217 32218 32218 32212 32219 32216 32223
32217 32218 32224 32216 32216 32216 32218 32218 32216 32217 32217 32208 32219 32218 32210
32217 32217 32221 32217 32217 32217 32217 32218 32219 32217 32210 32226 32215 32215 32223
32233 32217 32217 32216 32217 32216 32217 32218 32211 32221 32217 32208 32211 32216 32217
32225 32226 32216 32217 32217 32217 32216 32218 32220 32218 32218 32208 32219 32218 32224
32220 32217 32222 32216 32217 32220 32219 32218 32208 32218 32218 32221 32210 32217 32224
32222 32217 32217 32216 32217 32217 32216 32218 32211 32218 32217 32208 32209 32216 32222
32223 32218 32218 32216 32217 32216 32217 32218 32210 32217 32218 32208 32217 32218 32222
32203 32217 32208 32217 32217 32217 32217 32217 32216 32218 32218 32212 32209 32219 32223
32222 32217 32218 32216 32219 32217 32217 32218 32210 32218 32218 32213 32222 32219 32224
32221 32216 32218 32216 32217 32217 32219 32219 32211 32219 32218 32208 32223 32218 32223
32221 32218 32218 32218 32217 32218 32217 32218 32212 32217 32218 32206 32219 32219 32224
32216 32218 32216 32217 32217 32217 32218 32218 32219 32218 32218 32208 32224 32217 32219

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 32217 bytes 100%
1,000 32208 bytes -9 bytes 100%
10,000 32206 bytes -2 bytes 100%
100,000 32203 bytes -3 bytes 0.58%
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
32262 bytes +59 bytes (+0.18%)
32262 bytes +59 bytes (+0.18%)
32276 bytes +73 bytes (+0.23%) +14 bytes
32285 bytes +82 bytes (+0.25%) +23 bytes
32301 bytes +98 bytes (+0.30%) +39 bytes
32337 bytes +134 bytes (+0.42%) +75 bytes
32365 bytes +162 bytes (+0.50%) +103 bytes
32394 bytes +191 bytes (+0.59%) +132 bytes
32383 bytes +180 bytes (+0.56%) +121 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 26626 bytes -5577 bytes (-17.32%)
RAR (proprietary) RAR rar a -m5 -md64m -mc63:128t -mt1 27448 bytes -4755 bytes (-14.77%)
PPMd (Wikipedia) 7zip 7za a -mx=9 -m0=ppmd 28477 bytes -3726 bytes (-11.57%)
Brotli (Wikipedia) brotli brotli -q 11 29655 bytes -2548 bytes (-7.91%)
Burrows-Wheeler transform (Wikipedia) bzip2 bzip2 -9 30700 bytes -1503 bytes (-4.67%)
LZMA2 (Wikipedia) xz xz -9 31004 bytes -1199 bytes (-3.72%)
Zstandard (Wikipedia) zstd zstd -19 31725 bytes -478 bytes (-1.48%)

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.