Choose a version:
13% The original file has 1237968 bytes (1,209.0k) and is available from the project website.
There you can find the official minified version, too, which brings down the size to 166973 bytes (163.1k, 13%).

After GZIP compression these minified files vary in size:
Boot
  67351 bytes (65.8k)
CDN
cdnjs
  58761 bytes (57.4k)
CDN
Google
  58589 bytes (57.2k)
CDN
gzip -6 (default)
  58313 bytes (56.9k)
local copy
unpkg
  58305 bytes (56.9k)
CDN
gzip -9
  58184 bytes (56.8k)
local copy
7zip -mx=9 -tgzip
  56402 bytes (55.1k)
local copy
kzip -s0 -rn -b1
  56391 bytes (55.1k)
local copy
libdeflate -12
  56381 bytes (55.1k)
local copy
zultra
  56357 bytes (55.0k)
local copy
pigz -11 -n
  56303 bytes (55.0k)
local copy
Zopfli
  56259 bytes (54.9k)
local copy
Zopfli (defluff)
  56257 bytes (54.9k)
local copy

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

You will automatically get the smallest AngularJS 1.6.2 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 2046 bytes by using my AngularJS 1.6.2 Zopfli version instead of the best available CDN (3.64% smaller than unpkg, 56259 vs. 58305 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 --mls2048 --bsr17 --lazy --ohh

(found February 9, 2017)
Description Value Parameter
iterations 1000000  --i1000000
maximum blocks 8  --mb8
maximum length score 2048  --mls2048
block splitting recursion 17  --bsr17
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 (56257 bytes).

Verify file integrity

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

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

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

All listed CDNs deliver identical contents:
CDN Size (compressed) MD5 (uncompressed) Timestamp
Boot 67351 bytes 56df58a529ccbb636f562cf58314722f February 15, 2017 @ 12:11
cdnjs 58761 bytes 56df58a529ccbb636f562cf58314722f February 7, 2017 @ 17:18
Google 58589 bytes 56df58a529ccbb636f562cf58314722f February 19, 2017 @ 20:15
unpkg 58305 bytes 56df58a529ccbb636f562cf58314722f February 8, 2017 @ 09:27

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
56259 bytes -1 byte zopfli --i1000000 --mls2048 --bsr17 --lazy --ohh February 9, 2017 @ 02:12
56260 bytes -3 bytes zopfli --i100000 --mls2048 --bsr17 --lazy --ohh February 8, 2017 @ 11:32
56263 bytes -2 bytes zopfli --i10000 --mls2048 --bsr10 --lazy --ohh February 8, 2017 @ 10:35
56265 bytes -1 byte zopfli --i10000 --mls2048 --bsr17 --lazy --ohh February 8, 2017 @ 10:26
56266 bytes -1 byte zopfli --i10000 --mls1024 --bsr40 --lazy --ohh February 8, 2017 @ 09:55
56267 bytes -8 bytes zopfli --i10000 --mls512 --bsr13 --lazy --ohh February 8, 2017 @ 09:49
56275 bytes -9 bytes zopfli --i1000 --mls512 --bsr13 --lazy --ohh February 8, 2017 @ 09:40
56284 bytes zopfli --i100 --mls512 --bsr13 --lazy --ohh February 8, 2017 @ 09:39

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, 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
56325 56323 56324 56326 56315 56319 56315 56315 56315 56319 56297 56305 56400 56302 56314
56306 56306 56302 56299 56303 56298 56304 56292 56290 56279 56300 56290 56300 56288 56287
56300 56302 56306 56305 56309 56295 56285 56288 56289 56280 56277 56298 56301 56298 56296
56312 56305 56295 56297 56295 56300 56288 56293 56298 56292 56279 56307 56294 56290 56296
56308 56307 56303 56298 56295 56302 56302 56286 56281 56288 56280 56292 56292 56296 56289
56305 56307 56301 56301 56298 56305 56297 56290 56282 56279 56278 56298 56300 56288 56298
56303 56293 56301 56289 56283 56287 56282 56270 56276 56274 56262 56290 56298 56277 56281
56303 56292 56307 56309 56284 56284 56278 56281 56273 56281 56278 56297 56295 56289 56280
56290 56305 56308 56298 56300 56305 56278 56279 56270 56268 56268 56298 56291 56289 56292
56288 56296 56290 56303 56279 56286 56278 56270 56267 56269 56267 56300 56291 56288 56283
56306 56308 56305 56299 56282 56288 56274 56279 56274 56282 56269 56298 56292 56278 56286
56303 56307 56286 56288 56280 56284 56280 56270 56268 56268 56271 56290 56293 56287 56298
56315 56297 56305 56302 56279 56282 56276 56284 56277 56262 56270 56298 56300 56284 56299
56307 56308 56300 56286 56284 56284 56280 56281 56276 56271 56259 56292 56293 56289 56296
56297 56293 56288 56288 56282 56288 56277 56277 56273 56269 56268 56302 56291 56286 56282
56299 56295 56286 56297 56294 56287 56277 56274 56278 56269 56266 56300 56294 56288 56281
56299 56308 56294 56288 56299 56290 56277 56276 56275 56279 56280 56298 56290 56289 56280
56298 56295 56294 56295 56284 56284 56278 56269 56272 56274 56263 56298 56300 56289 56290
56299 56288 56300 56297 56285 56287 56279 56268 56271 56267 56268 56298 56293 56288 56278
56309 56302 56290 56293 56286 56286 56278 56282 56273 56267 56262 56300 56293 56288 56280
56298 56294 56293 56298 56283 56289 56277 56278 56279 56270 56267 56298 56293 56288 56283
56291 56309 56285 56295 56284 56288 56276 56278 56273 56277 56272 56288 56301 56289 56279
56289 56290 56294 56288 56297 56286 56281 56282 56272 56266 56268 56281 56282 56286 56279

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 56284 bytes 100%
1,000 56275 bytes -9 bytes 100%
10,000 56263 bytes -12 bytes 100%
100,000 56260 bytes -3 bytes 1.45%
1,000,000 56259 bytes -1 byte 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
56392 bytes +133 bytes (+0.24%) +1 byte
56391 bytes +132 bytes (+0.23%)
56397 bytes +138 bytes (+0.25%) +6 bytes
56412 bytes +153 bytes (+0.27%) +21 bytes
56428 bytes +169 bytes (+0.30%) +37 bytes
56427 bytes +168 bytes (+0.30%) +36 bytes
56426 bytes +167 bytes (+0.30%) +35 bytes
56466 bytes +207 bytes (+0.37%) +75 bytes
56467 bytes +208 bytes (+0.37%) +76 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 43396 bytes -12863 bytes (-22.86%)
RAR (proprietary) RAR rar a -m5 -md64m -mc63:128t -mt1 45929 bytes -10330 bytes (-18.36%)
PPMd (Wikipedia) 7zip 7za a -mx=9 -m0=ppmd 47695 bytes -8564 bytes (-15.22%)
Brotli (Wikipedia) brotli brotli -q 11 51049 bytes -5210 bytes (-9.26%)
Burrows-Wheeler transform (Wikipedia) bzip2 bzip2 -9 51820 bytes -4439 bytes (-7.89%)
LZMA2 (Wikipedia) xz xz -9 52572 bytes -3687 bytes (-6.55%)
Zstandard (Wikipedia) zstd zstd -19 54108 bytes -2151 bytes (-3.82%)

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.