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

After GZIP compression these minified files vary in size:
Boot
  45467 bytes (44.4k)
CDN
cdnjs
  39995 bytes (39.1k)
CDN
gzip -6 (default)
  39770 bytes (38.8k)
local copy
gzip -9
  39704 bytes (38.8k)
local copy
Google
  39701 bytes (38.8k)
CDN
Yandex
  39698 bytes (38.8k)
CDN
jsdelivr
  39698 bytes (38.8k)
CDN
7zip -mx=9 -tgzip
  38486 bytes (37.6k)
local copy
kzip -s0 -rn -b0
  38480 bytes (37.6k)
local copy
libdeflate -12
  38468 bytes (37.6k)
local copy
pigz -11 -n
  38459 bytes (37.6k)
local copy
zultra
  38458 bytes (37.6k)
local copy
Zopfli
  38409 bytes (37.5k)
local copy

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

You will automatically get the smallest AngularJS 1.2.25 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 1289 bytes by using my AngularJS 1.2.25 Zopfli version instead of the best available CDN (3.36% smaller than jsdelivr, 38409 vs. 39698 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 --mls4096 --bsr7 --lazy --ohh

(found November 30, 2015)
Description Value Parameter
iterations 100000  --i100000
maximum blocks 8  --mb8
maximum length score 4096  --mls4096
block splitting recursion 7  --bsr7
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

Verify file integrity

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

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

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

All listed CDNs deliver identical contents:
CDN Size (compressed) MD5 (uncompressed) Timestamp
Boot 45467 bytes 48eeee3bd2b189eb98b3d33e561ad614 March 18, 2015 @ 10:33
cdnjs 39995 bytes 48eeee3bd2b189eb98b3d33e561ad614 December 18, 2014 @ 18:00
Google 39701 bytes 48eeee3bd2b189eb98b3d33e561ad614 September 17, 2014 @ 01:03
Yandex 39698 bytes 48eeee3bd2b189eb98b3d33e561ad614 June 11, 2015 @ 14:17
jsdelivr 39698 bytes 48eeee3bd2b189eb98b3d33e561ad614 October 1, 2014 @ 18:50

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
38409 bytes -2 bytes zopfli --i100000 --mls4096 --bsr7 --lazy --ohh November 30, 2015 @ 10:44
38411 bytes -1 byte zopfli --i100000 --mls1024 --bsr8 --lazy --ohh November 27, 2015 @ 23:43
38412 bytes -1 byte zopfli --i100000 --mls8192 --bsr6 --lazy --ohh November 27, 2015 @ 23:04
38413 bytes -1 byte zopfli --i10000 --mls1024 --bsr8 --lazy --ohh September 9, 2015 @ 12:31
38414 bytes -1 byte zopfli --i10000 --mls8192 --bsr14 --lazy --ohh September 9, 2015 @ 12:12
38415 bytes -1 byte zopfli --i10000 --mls512 --bsr13 --lazy --ohh September 9, 2015 @ 11:58
38416 bytes -2 bytes zopfli --i1000 --mls1024 --bsr13 --lazy --ohh September 7, 2015 @ 19:35
38418 bytes -2 bytes zopfli --i1000 --mls1024 --bsr8 --lazy --ohh September 7, 2015 @ 19:34
38420 bytes zopfli --i100 --mls2048 --bsr9 --lazy --ohh September 7, 2015 @ 16: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 @ 12:54.

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
38415 38414 38414 38414 38416 38416 38417 38417 38418 38418 38429 38417 38416 38413 38414
38423 38423 38423 38420 38423 38423 38422 38423 38422 38419 38427 38419 38416 38413 38424
38426 38427 38424 38418 38424 38419 38422 38415 38421 38423 38427 38418 38412 38414 38423
38419 38420 38421 38419 38423 38416 38422 38420 38420 38421 38420 38409 38416 38419 38421
38419 38414 38420 38419 38419 38415 38422 38419 38427 38411 38419 38418 38416 38419 38419
38424 38424 38422 38419 38420 38416 38432 38429 38420 38429 38414 38415 38430 38414 38423
38423 38422 38419 38420 38419 38418 38422 38420 38419 38420 38428 38431 38416 38419 38421
38415 38416 38419 38419 38423 38415 38422 38420 38428 38416 38428 38436 38416 38413 38422
38419 38415 38418 38419 38421 38417 38424 38420 38419 38421 38419 38426 38415 38413 38421
38419 38414 38423 38418 38419 38419 38421 38419 38415 38415 38424 38418 38415 38414 38420
38421 38422 38420 38420 38423 38415 38420 38420 38422 38420 38425 38424 38414 38419 38420
38424 38424 38422 38419 38424 38415 38419 38420 38420 38421 38419 38416 38420 38413 38424
38423 38423 38426 38430 38424 38435 38428 38429 38429 38420 38419 38419 38415 38419 38419
38414 38415 38421 38419 38419 38418 38422 38428 38435 38433 38435 38431 38416 38419 38420
38422 38420 38420 38419 38411 38419 38422 38420 38426 38420 38419 38420 38417 38419 38420
38415 38414 38415 38419 38423 38419 38420 38419 38419 38420 38419 38420 38415 38419 38420
38415 38415 38415 38419 38419 38419 38420 38416 38420 38419 38418 38417 38416 38414 38420
38415 38415 38422 38418 38419 38415 38416 38415 38420 38424 38415 38425 38415 38414 38419
38422 38422 38421 38419 38419 38418 38420 38416 38419 38427 38426 38425 38420 38419 38420
38419 38414 38421 38421 38420 38414 38421 38419 38419 38419 38420 38416 38416 38414 38423
38415 38414 38420 38421 38420 38421 38421 38419 38419 38418 38426 38419 38415 38412 38422
38422 38415 38425 38418 38418 38418 38422 38423 38415 38421 38419 38425 38416 38413 38420
38418 38420 38416 38420 38419 38419 38423 38415 38419 38415 38425 38417 38416 38419 38421

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 38420 bytes 100%
1,000 38414 bytes -6 bytes 100%
10,000 38413 bytes -1 byte 100%
100,000 38409 bytes -4 bytes 3.19%
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
38480 bytes +71 bytes (+0.18%)
38484 bytes +75 bytes (+0.20%) +4 bytes
38502 bytes +93 bytes (+0.24%) +22 bytes
38534 bytes +125 bytes (+0.33%) +54 bytes
38574 bytes +165 bytes (+0.43%) +94 bytes
38566 bytes +157 bytes (+0.41%) +86 bytes
38577 bytes +168 bytes (+0.44%) +97 bytes
38616 bytes +207 bytes (+0.54%) +136 bytes
38657 bytes +248 bytes (+0.65%) +177 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 31112 bytes -7297 bytes (-19.00%)
RAR (proprietary) RAR rar a -m5 -md64m -mc63:128t -mt1 32323 bytes -6086 bytes (-15.85%)
PPMd (Wikipedia) 7zip 7za a -mx=9 -m0=ppmd 33868 bytes -4541 bytes (-11.82%)
Brotli (Wikipedia) brotli brotli -q 11 35275 bytes -3134 bytes (-8.16%)
Burrows-Wheeler transform (Wikipedia) bzip2 bzip2 -9 36247 bytes -2162 bytes (-5.63%)
LZMA2 (Wikipedia) xz xz -9 36672 bytes -1737 bytes (-4.52%)
Zstandard (Wikipedia) zstd zstd -19 37607 bytes -802 bytes (-2.09%)

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.