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

After GZIP compression these minified files vary in size:
Boot
  69034 bytes (67.4k)
CDN
cdnjs
  60174 bytes (58.8k)
CDN
Google
  60023 bytes (58.6k)
CDN
unpkg
  59722 bytes (58.3k)
CDN
gzip -6 (default)
  59712 bytes (58.3k)
local copy
gzip -9
  59569 bytes (58.2k)
local copy
kzip -s0 -rn -b0
  57757 bytes (56.4k)
local copy
7zip -mx=9 -tgzip
  57752 bytes (56.4k)
local copy
libdeflate -12
  57749 bytes (56.4k)
local copy
zultra
  57715 bytes (56.4k)
local copy
pigz -11 -n
  57679 bytes (56.3k)
local copy
Zopfli
  57610 bytes (56.3k)
local copy
Zopfli (defluff)
  57609 bytes (56.3k)
local copy

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

You will automatically get the smallest AngularJS 1.7.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 2112 bytes by using my AngularJS 1.7.0 Zopfli version instead of the best available CDN (3.67% smaller than unpkg, 57610 vs. 59722 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 --mls512 --bsr22 --lazy --ohh

(found June 5, 2018)
Description Value Parameter
iterations 1000000  --i1000000
maximum blocks 8  --mb8
maximum length score 512  --mls512
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 1 more byte (57609 bytes).

Verify file integrity

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

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

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

All listed CDNs deliver identical contents:
CDN Size (compressed) MD5 (uncompressed) Timestamp
Boot 69034 bytes aecdf05d672207d561739925412c8abf (invalid)
cdnjs 60174 bytes aecdf05d672207d561739925412c8abf (invalid)
Google 60023 bytes aecdf05d672207d561739925412c8abf (invalid)
unpkg 59722 bytes aecdf05d672207d561739925412c8abf (invalid)

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
57610 bytes -3 bytes zopfli --i1000000 --mls512 --bsr22 --lazy --ohh June 5, 2018 @ 01:27
57613 bytes -8 bytes zopfli --i100000 --mls512 --bsr22 --lazy --ohh June 4, 2018 @ 13:51
57621 bytes -1 byte zopfli --i10000 --mls512 --bsr22 --lazy --ohh June 4, 2018 @ 11:27
57622 bytes -4 bytes zopfli --i10000 --mls512 --bsr21 --lazy --ohh June 4, 2018 @ 11:16
57626 bytes -2 bytes zopfli --i10000 --mls512 --bsr17 --lazy --ohh June 4, 2018 @ 11:15
57628 bytes -1 byte zopfli --i1000 --mls512 --bsr15 --lazy --ohh June 4, 2018 @ 09:39
57629 bytes -1 byte zopfli --i1000 --mls512 --bsr21 --lazy --ohh June 4, 2018 @ 09:35
57630 bytes -6 bytes zopfli --i1000 --mls512 --bsr22 --lazy --ohh June 4, 2018 @ 09:35
57636 bytes zopfli --i100 --mls512 --bsr22 --lazy --ohh June 4, 2018 @ 09:06

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 @ 13:07.

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
57685 57676 57677 57674 57676 57666 57677 57672 57662 57672 57654 57653 57759 57645 57684
57671 57670 57671 57671 57669 57663 57640 57652 57643 57646 57639 57646 57646 57641 57664
57665 57659 57668 57667 57669 57645 57644 57647 57646 57643 57642 57647 57651 57650 57664
57669 57676 57669 57673 57653 57665 57641 57654 57646 57653 57653 57649 57647 57647 57664
57656 57672 57655 57658 57656 57655 57655 57654 57646 57637 57645 57644 57655 57646 57631
57668 57674 57667 57669 57672 57661 57641 57656 57614 57629 57647 57641 57645 57641 57669
57669 57670 57667 57670 57642 57637 57630 57638 57624 57631 57633 57625 57645 57636 57660
57644 57661 57646 57644 57646 57648 57626 57630 57625 57626 57629 57624 57646 57641 57663
57671 57665 57668 57663 57669 57638 57628 57639 57630 57624 57630 57624 57629 57652 57663
57668 57639 57668 57664 57633 57651 57637 57638 57624 57630 57629 57641 57628 57642 57664
57670 57647 57653 57655 57641 57646 57632 57637 57624 57624 57631 57634 57634 57642 57662
57671 57664 57671 57669 57637 57642 57636 57636 57623 57626 57627 57626 57634 57639 57663
57669 57642 57643 57664 57636 57641 57632 57635 57626 57630 57630 57635 57629 57647 57627
57670 57641 57668 57642 57636 57645 57630 57639 57626 57625 57633 57638 57636 57635 57633
57670 57666 57658 57670 57636 57636 57628 57636 57627 57626 57627 57624 57629 57645 57662
57668 57665 57667 57670 57635 57642 57628 57637 57623 57626 57630 57628 57630 57641 57665
57657 57670 57657 57656 57634 57644 57628 57638 57623 57628 57631 57634 57628 57642 57661
57654 57663 57655 57649 57634 57638 57633 57638 57614 57625 57630 57628 57628 57641 57661
57654 57656 57657 57651 57635 57643 57640 57637 57610 57624 57628 57639 57645 57638 57648
57655 57654 57655 57643 57635 57644 57631 57637 57627 57629 57628 57638 57645 57635 57629
57654 57654 57655 57658 57638 57634 57626 57635 57632 57637 57630 57624 57629 57641 57661
57655 57656 57656 57653 57641 57638 57629 57638 57630 57630 57630 57627 57627 57641 57649
57654 57642 57656 57656 57652 57638 57648 57636 57624 57627 57627 57628 57629 57641 57660

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 57636 bytes 100%
1,000 57628 bytes -8 bytes 100%
10,000 57621 bytes -7 bytes 100%
100,000 57613 bytes -8 bytes 0.87%
1,000,000 57610 bytes -3 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
57757 bytes +147 bytes (+0.26%)
57757 bytes +147 bytes (+0.26%)
57758 bytes +148 bytes (+0.26%) +1 byte
57766 bytes +156 bytes (+0.27%) +9 bytes
57775 bytes +165 bytes (+0.29%) +18 bytes
57772 bytes +162 bytes (+0.28%) +15 bytes
57771 bytes +161 bytes (+0.28%) +14 bytes
57803 bytes +193 bytes (+0.34%) +46 bytes
57815 bytes +205 bytes (+0.36%) +58 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 44464 bytes -13146 bytes (-22.82%)
RAR (proprietary) RAR rar a -m5 -md64m -mc63:128t -mt1 47011 bytes -10599 bytes (-18.40%)
PPMd (Wikipedia) 7zip 7za a -mx=9 -m0=ppmd 48779 bytes -8831 bytes (-15.33%)
Brotli (Wikipedia) brotli brotli -q 11 52346 bytes -5264 bytes (-9.14%)
Burrows-Wheeler transform (Wikipedia) bzip2 bzip2 -9 52993 bytes -4617 bytes (-8.01%)
LZMA2 (Wikipedia) xz xz -9 53876 bytes -3734 bytes (-6.48%)
Zstandard (Wikipedia) zstd zstd -19 55448 bytes -2162 bytes (-3.75%)

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.