Choose a version:
31% The original file has 264100 bytes (257.9k) and is available from the project website.
There you can find the official minified version, too, which brings down the size to 81626 bytes (79.7k, 31%).

After GZIP compression these minified files vary in size:
Boot
  33976 bytes (33.2k)
CDN
cdnjs
  29871 bytes (29.2k)
CDN
gzip -6 (default)
  29669 bytes (29.0k)
local copy
unpkg
  29651 bytes (29.0k)
CDN
gzip -9
  29635 bytes (28.9k)
local copy
libdeflate -12
  28734 bytes (28.1k)
local copy
7zip -mx=9 -tgzip
  28685 bytes (28.0k)
local copy
kzip -s0 -rn -b0
  28672 bytes (28.0k)
local copy
pigz -11 -n
  28623 bytes (28.0k)
local copy
Zopfli
  28595 bytes (27.9k)
local copy

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

You will automatically get the smallest Vue 2.4.1 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 1056 bytes by using my Vue 2.4.1 Zopfli version instead of the best available CDN (3.69% smaller than unpkg, 28595 vs. 29651 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 --mls8192 --bsr11 --lazy --ohh

(found July 18, 2017)
Description Value Parameter
iterations 1000000  --i1000000
maximum blocks 8  --mb8
maximum length score 8192  --mls8192
block splitting recursion 11  --bsr11
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/vuejs/vue/vue-2.4.1.min.js --location | md5sum
807a5d77fb2f341e03d4d1faa0e78f38  -
curl --silent --compressed https://minime.stephan-brumme.com/files/vue/vue-2.4.1.min.zopfli.js.gz | md5sum
807a5d77fb2f341e03d4d1faa0e78f38  -

SHA1:
curl --silent --compressed https://raw.githubusercontent.com/vuejs/vue/vue-2.4.1.min.js --location | sha1sum
0e01b421c05bf159d9e09aa7360311649278f3b0  -
curl --silent --compressed https://minime.stephan-brumme.com/files/vue/vue-2.4.1.min.zopfli.js.gz | sha1sum
0e01b421c05bf159d9e09aa7360311649278f3b0  -

All listed CDNs deliver identical contents:
CDN Size (compressed) MD5 (uncompressed) Timestamp
Boot 33976 bytes 807a5d77fb2f341e03d4d1faa0e78f38 (invalid)
cdnjs 29871 bytes 807a5d77fb2f341e03d4d1faa0e78f38 (invalid)
unpkg 29651 bytes 807a5d77fb2f341e03d4d1faa0e78f38 July 17, 2017 @ 17:59

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

Other Versions

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

2.5.17, 2.5.16, 2.5.15, 2.5.14, 2.5.13, 2.5.12, 2.5.11, 2.5.10, 2.5.9, 2.5.8, 2.5.7, 2.5.6, 2.5.5, 2.5.4, 2.5.3, 2.5.2, 2.5.1, 2.5.0, 2.4.4, 2.4.3, 2.4.2, 2.4.1, 2.4.0, 2.3.4, 2.3.3, 2.3.2, 2.3.1, 2.3.0, 2.2.6, 2.2.5, 2.2.4, 2.2.3, 2.2.2, 2.2.1, 2.2.0, 2.1.10, 2.1.9, 2.1.8, 2.1.7, 2.1.6, 2.1.5, 2.1.4, 2.1.3, 2.1.2, 2.1.1, 2.1.0, 2.0.8, 2.0.7, 2.0.6, 2.0.5, 2.0.4, 2.0.3, 2.0.2, 2.0.1, 2.0.0,
1.0.28, 1.0.27, 1.0.26, 1.0.25, 1.0.24, 1.0.23, 1.0.22, 1.0.21, 1.0.20, 1.0.19, 1.0.18, 1.0.17, 1.0.16, 1.0.15, 1.0.14, 1.0.13, 1.0.12, 1.0.11, 1.0.10, 1.0.9,
0.10.6, 0.10.5, 0.10.4, 0.10.3, 0.10.2, 0.10.1, 0.10.0,
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 AngularJS, BackboneJS, Bootstrap, D3, Dojo, Ember, jQuery, Knockout, lodash, React, Socket.IO, ThreeJS and UnderscoreJS.

Changelog

Best Zopfli parameters so far:
Size Improvement Parameters Found
28595 bytes -2 bytes zopfli --i1000000 --mls8192 --bsr11 --lazy --ohh July 18, 2017 @ 14:36
28597 bytes -2 bytes zopfli --i100000 --mls8192 --bsr11 --lazy --ohh July 17, 2017 @ 22:32
28599 bytes -1 byte zopfli --i10000 --mls8192 --bsr11 --lazy --ohh July 17, 2017 @ 20:29
28600 bytes -2 bytes zopfli --i10000 --mls16384 --bsr9 --lazy --ohh July 17, 2017 @ 20:07
28602 bytes -1 byte zopfli --i1000 --mls16384 --bsr19 --lazy --ohh July 17, 2017 @ 18:44
28603 bytes -1 byte zopfli --i1000 --mls16384 --bsr9 --lazy --ohh July 17, 2017 @ 18:42
28604 bytes -1 byte zopfli --i1000 --mls64 --bsr12 --lazy --ohh July 17, 2017 @ 18:32
28605 bytes -2 bytes zopfli --i1000 --mls1024 --bsr6 --lazy --ohh July 17, 2017 @ 18:30
28607 bytes -1 byte zopfli --i1000 --mls2048 --bsr8 --lazy --ohh July 17, 2017 @ 18:29
28608 bytes -2 bytes zopfli --i1000 --mls2048 --bsr10 --lazy --ohh July 17, 2017 @ 18:29
28610 bytes zopfli --i100 --mls2048 --bsr12 --lazy --ohh July 17, 2017 @ 18:04

If there are multiple parameter sets yielding the same compressed size, only the first one found is shown.

Most recent activity on July 19, 2017 @ 07:29.

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
28628 28629 28628 28628 28628 28628 28630 28629 28629 28615 28604 28621 28604 28601 28620
28606 28606 28623 28621 28622 28621 28621 28603 28607 28604 28600 28618 28616 28619 28614
28609 28613 28614 28616 28622 28607 28622 28604 28615 28602 28601 28618 28616 28602 28603
28618 28626 28616 28615 28622 28625 28622 28609 28607 28602 28606 28619 28618 28608 28612
28625 28628 28626 28627 28627 28607 28608 28609 28609 28598 28601 28618 28599 28609 28612
28611 28612 28625 28625 28625 28607 28616 28616 28616 28598 28616 28618 28604 28598 28610
28617 28627 28619 28626 28615 28611 28614 28616 28616 28618 28599 28619 28618 28608 28612
28612 28612 28615 28616 28606 28607 28617 28609 28610 28601 28601 28619 28595 28604 28611
28612 28613 28616 28623 28615 28602 28612 28610 28604 28598 28598 28603 28595 28603 28610
28612 28613 28614 28617 28617 28615 28617 28609 28612 28602 28605 28618 28618 28606 28608
28618 28626 28617 28616 28606 28616 28616 28609 28601 28605 28599 28618 28595 28608 28611
28618 28626 28614 28616 28622 28624 28617 28621 28602 28602 28602 28618 28616 28613 28611
28617 28611 28615 28617 28609 28615 28624 28609 28603 28602 28604 28618 28616 28605 28604
28617 28612 28615 28615 28614 28616 28622 28604 28604 28602 28603 28618 28598 28609 28606
28611 28613 28614 28616 28607 28607 28617 28610 28604 28601 28603 28618 28616 28613 28609
28618 28626 28615 28623 28623 28614 28614 28609 28612 28602 28601 28618 28619 28596 28607
28620 28625 28616 28617 28623 28616 28617 28610 28612 28602 28599 28619 28619 28614 28608
28611 28611 28616 28615 28614 28607 28607 28608 28611 28602 28602 28619 28596 28612 28609
28613 28613 28616 28617 28610 28606 28616 28609 28612 28598 28599 28619 28618 28605 28610
28619 28611 28615 28615 28614 28615 28617 28621 28610 28603 28598 28619 28595 28604 28605
28611 28627 28614 28617 28609 28608 28613 28609 28613 28601 28599 28618 28616 28608 28609
28613 28612 28616 28617 28608 28606 28616 28608 28610 28602 28598 28619 28616 28613 28611
28611 28627 28616 28617 28606 28606 28608 28607 28610 28603 28601 28618 28618 28613 28609

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 28610 bytes 100%
1,000 28602 bytes -8 bytes 100%
10,000 28599 bytes -3 bytes 100%
100,000 28597 bytes -2 bytes 6.38%
1,000,000 28595 bytes -2 bytes 1.74%
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
28672 bytes +77 bytes (+0.27%)
28674 bytes +79 bytes (+0.28%) +2 bytes
28684 bytes +89 bytes (+0.31%) +12 bytes
28677 bytes +82 bytes (+0.29%) +5 bytes
28676 bytes +81 bytes (+0.28%) +4 bytes
28698 bytes +103 bytes (+0.36%) +26 bytes
28730 bytes +135 bytes (+0.47%) +58 bytes
28766 bytes +171 bytes (+0.60%) +94 bytes
28774 bytes +179 bytes (+0.63%) +102 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 23630 bytes -4965 bytes (-17.36%)
RAR (proprietary) RAR rar a -m5 -md64m -mc63:128t -mt1 24258 bytes -4337 bytes (-15.17%)
PPMd (Wikipedia) 7zip 7za a -mx=9 -m0=ppmd 25188 bytes -3407 bytes (-11.91%)
Brotli (Wikipedia) brotli brotli -q 11 26617 bytes -1978 bytes (-6.92%)
Burrows-Wheeler transform (Wikipedia) bzip2 bzip2 -9 27206 bytes -1389 bytes (-4.86%)
LZMA2 (Wikipedia) xz xz -9 27308 bytes -1287 bytes (-4.50%)
Zstandard (Wikipedia) zstd zstd -19 28051 bytes -544 bytes (-1.90%)

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 2018.
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