Choose a version:
14% The original file has 741569 bytes (724.2k) and is available from the project website.
There you can find the official minified version, too, which brings down the size to 102445 bytes (100.0k, 14%).

After GZIP compression these minified files vary in size:
Boot
  43206 bytes (42.2k)
CDN
Baidu
  38132 bytes (37.2k)
CDN
cdnjs
  38012 bytes (37.1k)
CDN
gzip -6 (default)
  37789 bytes (36.9k)
local copy
Google
  37733 bytes (36.8k)
CDN
Yandex
  37713 bytes (36.8k)
CDN
jsdelivr
  37713 bytes (36.8k)
CDN
gzip -9
  37708 bytes (36.8k)
local copy
7zip -mx=9 -tgzip
  36602 bytes (35.7k)
local copy
libdeflate -12
  36587 bytes (35.7k)
local copy
zultra
  36579 bytes (35.7k)
local copy
kzip -s0 -rn -b0
  36578 bytes (35.7k)
local copy
pigz -11 -n
  36552 bytes (35.7k)
local copy
Zopfli
  36511 bytes (35.7k)
local copy
Zopfli (defluff)
  36510 bytes (35.7k)
local copy

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

You will automatically get the smallest AngularJS 1.2.14 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 1202 bytes by using my AngularJS 1.2.14 Zopfli version instead of the best available CDN (3.29% smaller than jsdelivr, 36511 vs. 37713 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 --mls4 --bsr15 --lazy --ohh

(found November 27, 2015)
Description Value Parameter
iterations 100000  --i100000
maximum blocks 8  --mb8
maximum length score 4  --mls4
block splitting recursion 15  --bsr15
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 (36510 bytes).

Verify file integrity

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

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

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

These CDNs send you the original file:
CDN Size (compressed) MD5 (uncompressed) Timestamp
Boot 43206 bytes ff4e9f192563f2d37e04428c841b6539 March 18, 2015 @ 10:25
cdnjs 38012 bytes ff4e9f192563f2d37e04428c841b6539 March 28, 2014 @ 15:15
Google 37733 bytes ff4e9f192563f2d37e04428c841b6539 (invalid)
Yandex 37713 bytes ff4e9f192563f2d37e04428c841b6539 June 11, 2015 @ 14:17
jsdelivr 37713 bytes ff4e9f192563f2d37e04428c841b6539 August 7, 2014 @ 18:31

And some CDNs send you a different file:
CDN Size (compressed) MD5 (uncompressed) Comment / Diff Timestamp
Baidu 38132 bytes 41bcdf1821ab1794ca5da0047e4908e5 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
36511 bytes -1 byte zopfli --i100000 --mls4 --bsr15 --lazy --ohh November 27, 2015 @ 17:36
36512 bytes -1 byte zopfli --i10000 --mls4 --bsr15 --lazy --ohh October 21, 2015 @ 13:10
36513 bytes -1 byte zopfli --i10000 --mls32 --bsr7 --lazy --ohh October 21, 2015 @ 13:07
36514 bytes -1 byte zopfli --i1000 --mls32 --bsr7 --lazy --ohh September 19, 2015 @ 18:06
36515 bytes -2 bytes zopfli --i10000 --mls1024 --bsr10 --lazy --ohh September 9, 2015 @ 19:05
36517 bytes -1 byte zopfli --i1000 --mls8192 --bsr14 --lazy --ohh September 7, 2015 @ 20:21
36518 bytes -2 bytes zopfli --i1000 --mls1024 --bsr10 --lazy --ohh September 7, 2015 @ 20:18
36520 bytes -1 byte zopfli --i1000 --mls1024 --bsr6 --lazy --ohh September 7, 2015 @ 20:18
36521 bytes zopfli --i100 --mls4096 --bsr6 --lazy --ohh September 7, 2015 @ 16:11

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 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
36517 36537 36522 36537 36538 36538 36541 36531 36536 36519 36538 36538 36545 36530 36520
36536 36542 36521 36524 36518 36518 36520 36523 36538 36537 36533 36533 36529 36518 36537
36520 36517 36515 36519 36521 36522 36519 36524 36537 36518 36520 36517 36529 36525 36519
36521 36538 36525 36520 36513 36519 36517 36519 36524 36519 36520 36528 36518 36532 36535
36526 36516 36522 36519 36517 36518 36522 36520 36531 36530 36531 36520 36516 36522 36519
36524 36541 36523 36518 36517 36519 36518 36517 36537 36540 36533 36525 36521 36529 36536
36514 36538 36523 36517 36518 36518 36518 36519 36530 36515 36531 36519 36522 36518 36536
36517 36517 36521 36518 36520 36517 36521 36519 36531 36516 36519 36530 36520 36519 36521
36522 36538 36521 36519 36519 36519 36519 36517 36531 36529 36519 36519 36515 36525 36534
36533 36537 36518 36519 36518 36518 36517 36517 36530 36520 36519 36522 36515 36520 36521
36537 36537 36537 36533 36533 36519 36518 36517 36537 36538 36533 36531 36515 36525 36535
36522 36511 36524 36518 36516 36519 36518 36522 36538 36538 36532 36530 36524 36518 36537
36518 36516 36516 36519 36517 36519 36517 36519 36537 36539 36530 36530 36521 36523 36518
36522 36538 36521 36526 36518 36519 36517 36523 36537 36538 36519 36522 36523 36521 36537
36538 36537 36537 36519 36534 36519 36537 36537 36531 36540 36532 36531 36518 36518 36536
36522 36537 36515 36523 36520 36519 36518 36516 36537 36540 36532 36531 36518 36534 36535
36516 36515 36523 36517 36518 36518 36517 36519 36537 36540 36529 36523 36517 36523 36534
36518 36537 36525 36520 36524 36519 36516 36521 36538 36540 36516 36522 36516 36516 36535
36538 36537 36537 36538 36533 36534 36537 36537 36537 36539 36531 36517 36523 36518 36547
36516 36516 36523 36519 36521 36518 36518 36522 36538 36538 36531 36531 36519 36519 36537
36514 36537 36522 36517 36522 36517 36520 36525 36531 36530 36531 36530 36521 36522 36547
36522 36515 36523 36519 36517 36521 36519 36522 36523 36521 36531 36531 36515 36518 36518
36522 36537 36537 36538 36533 36519 36537 36519 36538 36540 36520 36530 36516 36519 36548

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 36521 bytes 100%
1,000 36514 bytes -7 bytes 100%
10,000 36512 bytes -2 bytes 100%
100,000 36511 bytes -1 byte 0.29%
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
36578 bytes +67 bytes (+0.18%)
36579 bytes +68 bytes (+0.19%) +1 byte
36604 bytes +93 bytes (+0.25%) +26 bytes
36631 bytes +120 bytes (+0.33%) +53 bytes
36642 bytes +131 bytes (+0.36%) +64 bytes
36679 bytes +168 bytes (+0.46%) +101 bytes
36643 bytes +132 bytes (+0.36%) +65 bytes
36665 bytes +154 bytes (+0.42%) +87 bytes
36681 bytes +170 bytes (+0.47%) +103 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 29697 bytes -6814 bytes (-18.66%)
RAR (proprietary) RAR rar a -m5 -md64m -mc63:128t -mt1 30800 bytes -5711 bytes (-15.64%)
PPMd (Wikipedia) 7zip 7za a -mx=9 -m0=ppmd 32068 bytes -4443 bytes (-12.17%)
Brotli (Wikipedia) brotli brotli -q 11 33584 bytes -2927 bytes (-8.02%)
Burrows-Wheeler transform (Wikipedia) bzip2 bzip2 -9 34559 bytes -1952 bytes (-5.35%)
LZMA2 (Wikipedia) xz xz -9 34996 bytes -1515 bytes (-4.15%)
Zstandard (Wikipedia) zstd zstd -19 35856 bytes -655 bytes (-1.79%)

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.