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

After GZIP compression these minified files vary in size:
Boot
  52509 bytes (51.3k)
CDN
Baidu
  46215 bytes (45.1k)
CDN
cdnjs
  46079 bytes (45.0k)
CDN
unpkg
  45813 bytes (44.7k)
CDN
gzip -6 (default)
  45788 bytes (44.7k)
local copy
Google
  45729 bytes (44.7k)
CDN
Yandex
  45697 bytes (44.6k)
CDN
jsdelivr
  45697 bytes (44.6k)
CDN
gzip -9
  45690 bytes (44.6k)
local copy
7zip -mx=9 -tgzip
  44334 bytes (43.3k)
local copy
libdeflate -12
  44320 bytes (43.3k)
local copy
zultra
  44314 bytes (43.3k)
local copy
kzip -s0 -rn -b0
  44303 bytes (43.3k)
local copy
pigz -11 -n
  44230 bytes (43.2k)
local copy
Zopfli
  44208 bytes (43.2k)
local copy
Zopfli (defluff)
  44207 bytes (43.2k)
local copy

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

You will automatically get the smallest AngularJS 1.3.5 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 1489 bytes by using my AngularJS 1.3.5 Zopfli version instead of the best available CDN (3.37% smaller than jsdelivr, 44208 vs. 45697 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 --bsr21 --lazy --ohh

(found November 30, 2015)
Description Value Parameter
iterations 100000  --i100000
maximum blocks 8  --mb8
maximum length score 256  --mls256
block splitting recursion 21  --bsr21
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 (44207 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.5/angular.min.js --location | md5sum
eeefd310d11dfd032621c06917e7d7fa  -
curl --silent --compressed https://minime.stephan-brumme.com/files/angularjs/angular-1.3.5.min.zopfli.js.gz | md5sum
eeefd310d11dfd032621c06917e7d7fa  -

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

These CDNs send you the original file:
CDN Size (compressed) MD5 (uncompressed) Timestamp
Boot 52509 bytes eeefd310d11dfd032621c06917e7d7fa March 18, 2015 @ 11:04
cdnjs 46079 bytes eeefd310d11dfd032621c06917e7d7fa December 18, 2014 @ 18:00
unpkg 45813 bytes eeefd310d11dfd032621c06917e7d7fa July 11, 2016 @ 15:53
Google 45729 bytes eeefd310d11dfd032621c06917e7d7fa December 2, 2014 @ 07:49
Yandex 45697 bytes eeefd310d11dfd032621c06917e7d7fa June 11, 2015 @ 14:17
jsdelivr 45697 bytes eeefd310d11dfd032621c06917e7d7fa December 7, 2014 @ 10:01

And some CDNs send you a different file:
CDN Size (compressed) MD5 (uncompressed) Comment / Diff Timestamp
Baidu 46215 bytes beb3b86afd6a3445e8ea7ea59966d73c only whitespaces differ April 3, 2015 @ 04:57

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
44208 bytes -1 byte zopfli --i100000 --mls256 --bsr21 --lazy --ohh November 30, 2015 @ 10:17
44209 bytes -1 byte zopfli --i10000 --mls256 --bsr21 --lazy --ohh October 13, 2015 @ 20:52
44210 bytes -1 byte zopfli --i10000 --mls128 --bsr13 --lazy --ohh October 13, 2015 @ 20:49
44211 bytes -1 byte zopfli --i10000 --mls4096 --bsr15 --lazy --ohh October 13, 2015 @ 20:39
44212 bytes -1 byte zopfli --i1000 --mls256 --bsr21 --lazy --ohh September 22, 2015 @ 20:28
44213 bytes -1 byte zopfli --i10000 --mls512 --bsr16 --lazy --ohh September 8, 2015 @ 08:17
44214 bytes -3 bytes zopfli --i10000 --mls512 --bsr8 --lazy --ohh September 8, 2015 @ 08:13
44217 bytes -1 byte zopfli --i1000 --mls1024 --bsr13 --lazy --ohh September 7, 2015 @ 17:57
44218 bytes -2 bytes zopfli --i1000 --mls512 --bsr8 --lazy --ohh September 7, 2015 @ 17:54
44220 bytes zopfli --i100 --mls1024 --bsr13 --lazy --ohh September 7, 2015 @ 16: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: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
44251 44242 44240 44230 44230 44243 44237 44242 44243 44249 44235 44232 44232 44225 44233
44231 44245 44257 44257 44242 44234 44234 44230 44236 44237 44235 44218 44220 44218 44249
44234 44245 44227 44218 44220 44219 44219 44218 44216 44215 44216 44213 44219 44220 44226
44229 44223 44222 44221 44221 44221 44218 44216 44218 44217 44216 44215 44219 44221 44223
44235 44223 44222 44218 44217 44239 44218 44216 44214 44216 44214 44218 44220 44219 44217
44244 44222 44222 44219 44218 44218 44214 44212 44217 44216 44217 44214 44219 44220 44230
44233 44237 44224 44219 44221 44216 44212 44233 44238 44215 44220 44220 44220 44219 44236
44230 44222 44226 44245 44221 44237 44232 44235 44216 44215 44215 44216 44220 44218 44218
44229 44229 44225 44242 44236 44242 44234 44226 44218 44215 44216 44214 44220 44218 44218
44231 44241 44225 44245 44249 44245 44209 44211 44216 44215 44214 44213 44220 44220 44223
44229 44226 44223 44219 44220 44237 44218 44211 44219 44217 44214 44216 44219 44218 44230
44230 44223 44222 44221 44221 44218 44219 44214 44217 44216 44216 44211 44219 44221 44224
44234 44223 44220 44219 44220 44215 44218 44218 44213 44215 44216 44216 44221 44220 44218
44231 44231 44239 44229 44245 44235 44234 44217 44216 44215 44216 44213 44220 44219 44220
44230 44252 44244 44237 44237 44235 44228 44227 44216 44215 44220 44211 44220 44220 44245
44221 44228 44222 44246 44248 44231 44229 44228 44215 44218 44237 44214 44220 44218 44229
44230 44234 44226 44248 44234 44234 44218 44216 44216 44215 44216 44214 44220 44218 44218
44230 44223 44227 44218 44221 44215 44210 44208 44214 44214 44216 44213 44220 44220 44214
44229 44230 44224 44216 44218 44216 44214 44215 44217 44216 44214 44216 44219 44219 44224
44236 44223 44226 44219 44220 44213 44219 44216 44220 44218 44216 44213 44220 44220 44214
44242 44251 44249 44241 44239 44243 44218 44213 44214 44217 44216 44213 44220 44220 44214
44230 44225 44226 44220 44218 44213 44216 44216 44218 44216 44216 44213 44219 44218 44215
44234 44243 44220 44212 44221 44217 44218 44211 44216 44215 44215 44214 44220 44220 44223

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 44215 bytes 100%
1,000 44212 bytes -3 bytes 100%
10,000 44209 bytes -3 bytes 100%
100,000 44208 bytes -1 byte 0.58%
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
44303 bytes +95 bytes (+0.21%)
44303 bytes +95 bytes (+0.21%)
44323 bytes +115 bytes (+0.26%) +20 bytes
44348 bytes +140 bytes (+0.32%) +45 bytes
44364 bytes +156 bytes (+0.35%) +61 bytes
44389 bytes +181 bytes (+0.41%) +86 bytes
44374 bytes +166 bytes (+0.38%) +71 bytes
44386 bytes +178 bytes (+0.40%) +83 bytes
44425 bytes +217 bytes (+0.49%) +122 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 35302 bytes -8906 bytes (-20.15%)
RAR (proprietary) RAR rar a -m5 -md64m -mc63:128t -mt1 36918 bytes -7290 bytes (-16.49%)
PPMd (Wikipedia) 7zip 7za a -mx=9 -m0=ppmd 38675 bytes -5533 bytes (-12.52%)
Brotli (Wikipedia) brotli brotli -q 11 40640 bytes -3568 bytes (-8.07%)
Burrows-Wheeler transform (Wikipedia) bzip2 bzip2 -9 41421 bytes -2787 bytes (-6.30%)
LZMA2 (Wikipedia) xz xz -9 42068 bytes -2140 bytes (-4.84%)
Zstandard (Wikipedia) zstd zstd -19 43193 bytes -1015 bytes (-2.30%)

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.