Choose a version:
52% The original file has 60681 bytes (59.3k) and is available from the project website.
There you can find the official minified version, too, which brings down the size to 31819 bytes (31.1k, 52%).

After GZIP compression these minified files vary in size:
Microsoft
  11046 bytes (10.8k)
CDN
Boot
  10258 bytes (10.0k)
CDN
MaxCDN
  10258 bytes (10.0k)
CDN
Baidu
  8602 bytes (8.4k)
CDN
cdnjs
  8597 bytes (8.4k)
CDN
gzip -6 (default)
  8559 bytes (8.4k)
local copy
gzip -9
  8530 bytes (8.3k)
local copy
unpkg
  8525 bytes (8.3k)
CDN
Yandex
  8512 bytes (8.3k)
CDN
jsdelivr
  8512 bytes (8.3k)
CDN
libdeflate -12
  8253 bytes (8.1k)
local copy
kzip -s0 -rn -b0
  8244 bytes (8.1k)
local copy
7zip -mx=9 -tgzip
  8241 bytes (8.0k)
local copy
zultra
  8224 bytes (8.0k)
local copy
pigz -11 -n
  8205 bytes (8.0k)
local copy
Zopfli
  8197 bytes (8.0k)
local copy

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

You will automatically get the smallest Bootstrap 3.2.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 315 bytes by using my Bootstrap 3.2.0 Zopfli version instead of the best available CDN (3.84% smaller than jsdelivr, 8197 vs. 8512 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 --i1000 --mb8 --mls1024 --bsr13 --lazy --ohh

(found September 10, 2015)
Description Value Parameter
iterations 1000  --i1000
maximum blocks 8  --mb8
maximum length score 1024  --mls1024
block splitting recursion 13  --bsr13
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://raw.githubusercontent.com/twbs/bootstrap/v3.2.0/dist/js/bootstrap.min.js --location | md5sum
abda843684d022f3bc22bc83927fe05f  -
curl --silent --compressed https://minime.stephan-brumme.com/files/bootstrap/bootstrap-3.2.0.min.zopfli.js.gz | md5sum
abda843684d022f3bc22bc83927fe05f  -

SHA1:
curl --silent --compressed https://raw.githubusercontent.com/twbs/bootstrap/v3.2.0/dist/js/bootstrap.min.js --location | sha1sum
26908395e7a9a4eab607d80aa50a81d65f3017cb  -
curl --silent --compressed https://minime.stephan-brumme.com/files/bootstrap/bootstrap-3.2.0.min.zopfli.js.gz | sha1sum
26908395e7a9a4eab607d80aa50a81d65f3017cb  -

These CDNs send you the original file:
CDN Size (compressed) MD5 (uncompressed) Timestamp
Microsoft 11046 bytes abda843684d022f3bc22bc83927fe05f (invalid)
Boot 10258 bytes abda843684d022f3bc22bc83927fe05f (invalid)
MaxCDN 10258 bytes abda843684d022f3bc22bc83927fe05f (invalid)
cdnjs 8597 bytes abda843684d022f3bc22bc83927fe05f (invalid)
unpkg 8525 bytes abda843684d022f3bc22bc83927fe05f July 11, 2016 @ 16:21
Yandex 8512 bytes abda843684d022f3bc22bc83927fe05f (invalid)
jsdelivr 8512 bytes abda843684d022f3bc22bc83927fe05f (invalid)

And some CDNs send you a different file:
CDN Size (compressed) MD5 (uncompressed) Comment / Diff Timestamp
Baidu 8602 bytes 987facf80adec365394402f2026b943d only whitespaces differ (invalid)

Note: only the MD5 hashes are shown to keep things simple.

Other Versions

Available Bootstrap versions at minime.stephan-brumme.com:

5.2.3, 5.2.2, 5.2.1, 5.2.0,
5.1.3, 5.1.2, 5.1.1, 5.1.0,
5.0.2, 5.0.1, 5.0.0,
4.6.0,
4.5.3, 4.5.2, 4.5.1, 4.5.0,
4.4.1, 4.4.0,
4.3.1, 4.3.0,
4.2.1, 4.2.0,
4.1.3, 4.1.2, 4.1.1, 4.1.0, 4.0.0,
3.4.1, 3.4.0,
3.3.7, 3.3.6, 3.3.5, 3.3.4, 3.3.2, 3.3.1, 3.3.0,
3.2.0,
3.1.1, 3.1.0,
3.0.3, 3.0.2, 3.0.1, 3.0.0

The project site contains an overview how well these versions were compressed.
Other interesting projects are AngularJS, BackboneJS, D3, Dojo, Ember, jQuery, Knockout, lodash, React, Socket.IO, ThreeJS, UnderscoreJS and Vue.

Changelog

Best Zopfli parameters so far:
Size Improvement Parameters Found
8197 bytes -1 byte zopfli --i1000 --mls1024 --bsr13 --lazy --ohh September 10, 2015 @ 16:48
8198 bytes -1 byte zopfli --i1000 --mls512 --bsr9 --lazy --ohh September 10, 2015 @ 16:47
8199 bytes -2 bytes zopfli --i1000 --mls512 --bsr4 --lazy --ohh September 10, 2015 @ 16:47
8201 bytes zopfli --i100 --mls2048 --bsr6 --lazy --ohh September 10, 2015 @ 16:27

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:53.

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
8207 8208 8201 8207 8199 8203 8200 8201 8198 8211 8203 8201 8202 8201 8200
8198 8198 8199 8198 8198 8202 8201 8198 8198 8198 8198 8202 8201 8218 8201
8198 8198 8203 8198 8198 8200 8201 8202 8198 8198 8199 8202 8199 8198 8200
8198 8198 8198 8198 8198 8202 8198 8198 8198 8198 8199 8201 8202 8221 8201
8198 8198 8198 8198 8198 8198 8198 8202 8198 8198 8198 8202 8202 8201 8201
8199 8198 8198 8198 8198 8202 8198 8198 8198 8198 8198 8202 8199 8201 8200
8198 8199 8202 8198 8198 8200 8198 8198 8199 8198 8198 8203 8201 8201 8215
8198 8198 8198 8198 8198 8201 8202 8198 8198 8198 8198 8201 8199 8198 8200
8198 8198 8198 8198 8198 8199 8202 8198 8198 8198 8198 8201 8199 8198 8200
8198 8198 8198 8198 8198 8199 8202 8202 8198 8197 8198 8202 8201 8201 8201
8197 8198 8198 8198 8198 8201 8202 8198 8198 8198 8198 8201 8200 8199 8200
8200 8199 8198 8198 8198 8202 8201 8199 8198 8198 8202 8201 8203 8220 8200
8198 8199 8198 8198 8198 8198 8198 8198 8198 8198 8202 8201 8199 8201 8200
8198 8198 8198 8198 8198 8202 8198 8198 8198 8198 8198 8201 8201 8200 8200
8198 8199 8198 8198 8198 8198 8198 8202 8198 8198 8198 8201 8201 8198 8200
8198 8199 8198 8198 8198 8202 8198 8198 8199 8198 8198 8201 8203 8198 8199
8198 8198 8198 8198 8198 8202 8202 8198 8199 8198 8202 8202 8199 8201 8217
8198 8198 8198 8198 8198 8201 8202 8202 8198 8198 8200 8202 8200 8198 8200
8198 8200 8201 8198 8198 8201 8202 8198 8198 8198 8198 8201 8199 8201 8201
8198 8198 8198 8198 8198 8201 8199 8198 8198 8198 8198 8201 8201 8197 8200
8198 8198 8201 8198 8198 8201 8202 8198 8198 8198 8198 8201 8200 8221 8216
8198 8199 8198 8198 8199 8201 8198 8198 8198 8198 8198 8200 8200 8200 8200
8198 8198 8198 8198 8198 8202 8198 8201 8198 8198 8198 8201 8201 8219 8200

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 8201 bytes 100%
1,000 8197 bytes -4 bytes 100%
10,000 8197 bytes 100%
100,000 8197 bytes 2.61%
1,000,000 8197 bytes 0.87%
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
8244 bytes +47 bytes (+0.57%)
8245 bytes +48 bytes (+0.59%) +1 byte
8247 bytes +50 bytes (+0.61%) +3 bytes
8256 bytes +59 bytes (+0.72%) +12 bytes
8289 bytes +92 bytes (+1.12%) +45 bytes
8329 bytes +132 bytes (+1.61%) +85 bytes
8369 bytes +172 bytes (+2.10%) +125 bytes
8399 bytes +202 bytes (+2.46%) +155 bytes
8434 bytes +237 bytes (+2.89%) +190 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 - for example, your browser actually supports it !
Algorithm Program Parameters Size Compared To Best Zopfli
RAR (proprietary) RAR rar a -m5 -md64m -mc63:128t -mt1 6875 bytes -1322 bytes (-16.13%)
Brotli (Wikipedia) brotli brotli -q 11 7540 bytes -657 bytes (-8.02%)
ZPAQ (Wikipedia) zpaq zpaq -method 69 7638 bytes -559 bytes (-6.82%)
Burrows-Wheeler transform (Wikipedia) bzip2 bzip2 -9 7989 bytes -208 bytes (-2.54%)
LZMA2 (Wikipedia) xz xz -9 8176 bytes -21 bytes (-0.26%)
Zstandard (Wikipedia) zstd zstd -19 8215 bytes +18 bytes (+0.22%)
PPMd (Wikipedia) 7zip 7za a -mx=9 -m0=ppmd 8395 bytes +198 bytes (+2.42%)

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.