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

After GZIP compression these minified files vary in size:
Boot
  63479 bytes (62.0k)
CDN
cdnjs
  55561 bytes (54.3k)
CDN
unpkg
  55189 bytes (53.9k)
CDN
gzip -6 (default)
  55180 bytes (53.9k)
local copy
Google
  55124 bytes (53.8k)
CDN
gzip -9
  55084 bytes (53.8k)
local copy
libdeflate -12
  53357 bytes (52.1k)
local copy
7zip -mx=9 -tgzip
  53354 bytes (52.1k)
local copy
kzip -s0 -rn -b0
  53345 bytes (52.1k)
local copy
zultra
  53322 bytes (52.1k)
local copy
pigz -11 -n
  53320 bytes (52.1k)
local copy
Zopfli
  53226 bytes (52.0k)
local copy
Zopfli (defluff)
  53225 bytes (52.0k)
local copy

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

You will automatically get the smallest AngularJS 1.5.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 1898 bytes by using my AngularJS 1.5.3 Zopfli version instead of the best available CDN (3.57% smaller than Google, 53226 vs. 55124 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 --mls1024 --bsr30 --lazy --ohh

(found March 29, 2016)
Description Value Parameter
iterations 1000000  --i1000000
maximum blocks 8  --mb8
maximum length score 1024  --mls1024
block splitting recursion 30  --bsr30
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 (53225 bytes).

Verify file integrity

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

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

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

All listed CDNs deliver identical contents:
CDN Size (compressed) MD5 (uncompressed) Timestamp
Boot 63479 bytes 0744b6e5cd7b7cdad98cefb3d9c141c6 May 3, 2016 @ 10:35
cdnjs 55561 bytes 0744b6e5cd7b7cdad98cefb3d9c141c6 March 26, 2016 @ 03:46
unpkg 55189 bytes 0744b6e5cd7b7cdad98cefb3d9c141c6 July 11, 2016 @ 15:51
Google 55124 bytes 0744b6e5cd7b7cdad98cefb3d9c141c6 March 25, 2016 @ 22:02

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
53226 bytes -4 bytes zopfli --i1000000 --mls1024 --bsr30 --lazy --ohh March 29, 2016 @ 17:35
53230 bytes -4 bytes zopfli --i100000 --mls1024 --bsr30 --lazy --ohh March 28, 2016 @ 09:23
53234 bytes -7 bytes zopfli --i10000 --mls1024 --bsr30 --lazy --ohh March 28, 2016 @ 07:33
53241 bytes -1 byte zopfli --i1000 --mls1024 --bsr30 --lazy --ohh March 28, 2016 @ 07:26
53242 bytes -3 bytes zopfli --i10000 --mls1024 --bsr14 --lazy --ohh March 28, 2016 @ 07:15
53245 bytes -1 byte zopfli --i1000 --mls1024 --bsr14 --lazy --ohh March 28, 2016 @ 07:07
53246 bytes -4 bytes zopfli --i1000 --mls1024 --bsr19 --lazy --ohh March 28, 2016 @ 07:06
53250 bytes -3 bytes zopfli --i1000 --mls4096 --bsr20 --lazy --ohh March 28, 2016 @ 07:04
53253 bytes -2 bytes zopfli --i1000 --mls64 --bsr12 --lazy --ohh March 28, 2016 @ 07:04
53255 bytes zopfli --i100 --mls64 --bsr12 --lazy --ohh March 28, 2016 @ 07:02

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

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
53277 53274 53274 53275 53276 53274 53274 53276 53275 53277 53276 53265 53270 53271 53272
53275 53268 53260 53259 53261 53259 53254 53254 53258 53259 53258 53252 53261 53250 53253
53252 53253 53253 53255 53253 53247 53251 53252 53260 53251 53254 53259 53259 53261 53248
53271 53272 53271 53269 53266 53255 53268 53252 53258 53260 53247 53249 53260 53265 53252
53251 53254 53253 53254 53255 53253 53257 53255 53258 53250 53254 53263 53268 53251 53252
53259 53261 53262 53259 53249 53253 53258 53253 53258 53241 53247 53249 53251 53255 53250
53254 53268 53258 53262 53262 53246 53258 53253 53260 53242 53245 53249 53259 53252 53250
53267 53265 53262 53261 53263 53254 53254 53253 53258 53251 53252 53249 53259 53252 53253
53256 53255 53265 53266 53259 53246 53250 53257 53258 53250 53254 53249 53259 53251 53252
53257 53256 53260 53267 53261 53247 53258 53257 53257 53251 53253 53249 53249 53251 53250
53266 53252 53262 53258 53253 53247 53258 53249 53258 53235 53247 53250 53252 53251 53250
53271 53269 53262 53261 53264 53253 53258 53249 53258 53251 53247 53248 53251 53253 53253
53255 53251 53259 53259 53258 53257 53258 53260 53260 53241 53252 53249 53254 53251 53250
53252 53259 53252 53254 53263 53247 53257 53253 53258 53251 53254 53249 53255 53249 53251
53256 53251 53257 53257 53257 53246 53257 53253 53259 53242 53252 53249 53251 53251 53249
53268 53270 53253 53267 53259 53246 53258 53254 53252 53242 53248 53248 53254 53252 53250
53252 53254 53252 53263 53255 53242 53258 53250 53258 53242 53255 53249 53252 53250 53252
53256 53252 53260 53263 53253 53246 53258 53253 53260 53251 53247 53249 53251 53251 53252
53258 53269 53259 53257 53264 53253 53258 53253 53258 53251 53247 53249 53253 53258 53250
53249 53256 53252 53259 53266 53252 53250 53251 53260 53251 53252 53249 53253 53252 53253
53246 53248 53259 53254 53253 53246 53255 53254 53258 53251 53249 53249 53259 53253 53250
53252 53247 53250 53262 53249 53244 53249 53253 53258 53226 53248 53249 53250 53253 53253
53252 53246 53256 53252 53253 53248 53249 53241 53248 53251 53255 53249 53252 53250 53252

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 53255 bytes 100%
1,000 53241 bytes -14 bytes 100%
10,000 53234 bytes -7 bytes 100%
100,000 53230 bytes -4 bytes 0.58%
1,000,000 53226 bytes -4 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
53345 bytes +119 bytes (+0.22%)
53347 bytes +121 bytes (+0.23%) +2 bytes
53363 bytes +137 bytes (+0.26%) +18 bytes
53365 bytes +139 bytes (+0.26%) +20 bytes
53373 bytes +147 bytes (+0.28%) +28 bytes
53390 bytes +164 bytes (+0.31%) +45 bytes
53393 bytes +167 bytes (+0.31%) +48 bytes
53383 bytes +157 bytes (+0.29%) +38 bytes
53408 bytes +182 bytes (+0.34%) +63 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 41352 bytes -11874 bytes (-22.31%)
RAR (proprietary) RAR rar a -m5 -md64m -mc63:128t -mt1 43646 bytes -9580 bytes (-18.00%)
PPMd (Wikipedia) 7zip 7za a -mx=9 -m0=ppmd 45054 bytes -8172 bytes (-15.35%)
Brotli (Wikipedia) brotli brotli -q 11 48378 bytes -4848 bytes (-9.11%)
Burrows-Wheeler transform (Wikipedia) bzip2 bzip2 -9 49177 bytes -4049 bytes (-7.61%)
LZMA2 (Wikipedia) xz xz -9 49908 bytes -3318 bytes (-6.23%)
Zstandard (Wikipedia) zstd zstd -19 51377 bytes -1849 bytes (-3.47%)

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.