Choose a version:
13% The original file has 925789 bytes (904.1k) and is available from the project website.
There you can find the official minified version, too, which brings down the size to 123199 bytes (120.3k, 13%).

After GZIP compression these minified files vary in size:
Boot
  51834 bytes (50.6k)
CDN
cdnjs
  45459 bytes (44.4k)
CDN
gzip -6 (default)
  45150 bytes (44.1k)
local copy
unpkg
  45143 bytes (44.1k)
CDN
Google
  45095 bytes (44.0k)
CDN
gzip -9
  45074 bytes (44.0k)
local copy
Yandex
  45073 bytes (44.0k)
CDN
7zip -mx=9 -tgzip
  43744 bytes (42.7k)
local copy
kzip -s0 -rn -b0
  43706 bytes (42.7k)
local copy
zultra
  43682 bytes (42.7k)
local copy
libdeflate -12
  43681 bytes (42.7k)
local copy
pigz -11 -n
  43631 bytes (42.6k)
local copy
Zopfli
  43599 bytes (42.6k)
local copy
Zopfli (defluff)
  43597 bytes (42.6k)
local copy

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

You will automatically get the smallest AngularJS 1.3.0 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 1474 bytes by using my AngularJS 1.3.0 Zopfli version instead of the best available CDN (3.38% smaller than Yandex, 43599 vs. 45073 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 --mls256 --bsr10 --lazy --ohh

(found November 30, 2015)
Description Value Parameter
iterations 100000  --i100000
maximum blocks 8  --mb8
maximum length score 256  --mls256
block splitting recursion 10  --bsr10
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 (43597 bytes).

Verify file integrity

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

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

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

All listed CDNs deliver identical contents:
CDN Size (compressed) MD5 (uncompressed) Timestamp
Boot 51834 bytes 8eb6e12ab5241c6ad600aa5fae1eaeb9 March 18, 2015 @ 10:41
cdnjs 45459 bytes 8eb6e12ab5241c6ad600aa5fae1eaeb9 October 31, 2014 @ 07:15
unpkg 45143 bytes 8eb6e12ab5241c6ad600aa5fae1eaeb9 July 11, 2016 @ 15:54
Google 45095 bytes 8eb6e12ab5241c6ad600aa5fae1eaeb9 October 14, 2014 @ 00:49
Yandex 45073 bytes 8eb6e12ab5241c6ad600aa5fae1eaeb9 June 11, 2015 @ 14:17

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
43599 bytes -2 bytes zopfli --i100000 --mls256 --bsr10 --lazy --ohh November 30, 2015 @ 10:24
43601 bytes -3 bytes zopfli --i10000 --mls256 --bsr10 --lazy --ohh October 14, 2015 @ 02:22
43604 bytes -3 bytes zopfli --i10000 --mls512 --bsr9 --lazy --ohh September 9, 2015 @ 07:38
43607 bytes -14 bytes zopfli --i1000 --mls512 --bsr16 --lazy --ohh September 7, 2015 @ 18:54
43621 bytes zopfli --i100 --mls1024 --bsr14 --lazy --ohh September 7, 2015 @ 16:12

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 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
43627 43628 43636 43624 43624 43626 43638 43646 43628 43634 43630 43637 43626 43629 43620
43645 43636 43636 43647 43647 43649 43633 43633 43630 43625 43625 43624 43626 43612 43635
43630 43630 43628 43644 43616 43621 43619 43628 43613 43612 43609 43617 43608 43613 43620
43646 43642 43604 43621 43616 43622 43615 43612 43606 43611 43610 43618 43607 43605 43612
43638 43630 43629 43643 43633 43621 43627 43625 43622 43610 43611 43613 43607 43605 43610
43642 43636 43623 43634 43617 43617 43617 43615 43604 43612 43610 43610 43607 43605 43611
43623 43623 43611 43620 43616 43627 43610 43599 43609 43627 43612 43622 43606 43606 43611
43647 43649 43640 43643 43628 43622 43616 43628 43615 43614 43610 43612 43615 43609 43611
43642 43643 43613 43622 43610 43620 43627 43628 43610 43605 43611 43611 43606 43605 43612
43630 43631 43612 43648 43638 43631 43628 43629 43616 43606 43612 43617 43608 43605 43617
43647 43649 43616 43650 43635 43635 43611 43627 43612 43611 43619 43617 43615 43605 43613
43644 43641 43605 43615 43616 43621 43614 43615 43607 43611 43612 43617 43609 43606 43612
43649 43645 43616 43615 43616 43620 43617 43616 43605 43626 43612 43616 43606 43606 43614
43634 43638 43616 43632 43616 43621 43617 43629 43623 43615 43610 43611 43607 43605 43612
43647 43648 43632 43644 43642 43643 43642 43628 43621 43606 43610 43628 43607 43605 43639
43649 43642 43633 43649 43637 43621 43617 43628 43610 43610 43622 43622 43607 43605 43611
43630 43631 43616 43647 43616 43621 43623 43617 43612 43605 43610 43628 43607 43605 43611
43631 43628 43644 43620 43641 43620 43615 43620 43612 43606 43612 43610 43606 43605 43610
43630 43627 43615 43621 43618 43622 43617 43614 43607 43610 43610 43616 43608 43606 43611
43642 43643 43642 43616 43612 43637 43615 43616 43609 43611 43611 43619 43606 43606 43612
43654 43635 43631 43639 43640 43635 43627 43626 43608 43605 43612 43618 43605 43605 43613
43650 43646 43616 43624 43616 43622 43612 43616 43607 43605 43612 43611 43606 43613 43612
43650 43648 43640 43641 43642 43633 43614 43617 43605 43610 43609 43611 43606 43613 43614

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 43617 bytes 100%
1,000 43604 bytes -13 bytes 100%
10,000 43601 bytes -3 bytes 100%
100,000 43599 bytes -2 bytes 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
43706 bytes +107 bytes (+0.25%)
43707 bytes +108 bytes (+0.25%) +1 byte
43725 bytes +126 bytes (+0.29%) +19 bytes
43754 bytes +155 bytes (+0.36%) +48 bytes
43762 bytes +163 bytes (+0.37%) +56 bytes
43791 bytes +192 bytes (+0.44%) +85 bytes
43767 bytes +168 bytes (+0.39%) +61 bytes
43767 bytes +168 bytes (+0.39%) +61 bytes
43815 bytes +216 bytes (+0.50%) +109 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 34869 bytes -8730 bytes (-20.02%)
RAR (proprietary) RAR rar a -m5 -md64m -mc63:128t -mt1 36405 bytes -7194 bytes (-16.50%)
PPMd (Wikipedia) 7zip 7za a -mx=9 -m0=ppmd 38100 bytes -5499 bytes (-12.61%)
Brotli (Wikipedia) brotli brotli -q 11 40071 bytes -3528 bytes (-8.09%)
Burrows-Wheeler transform (Wikipedia) bzip2 bzip2 -9 40851 bytes -2748 bytes (-6.30%)
LZMA2 (Wikipedia) xz xz -9 41540 bytes -2059 bytes (-4.72%)
Zstandard (Wikipedia) zstd zstd -19 42632 bytes -967 bytes (-2.22%)

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.