Choose a version:
53% The original file has 157825 bytes (154.1k) and is available from the project website.
There you can find the official minified version, too, which brings down the size to 82873 bytes (80.9k, 53%).

After GZIP compression these minified files vary in size:
Boot
  25863 bytes (25.3k)
CDN
cdnjs
  21651 bytes (21.1k)
CDN
gzip -6 (default)
  21459 bytes (21.0k)
local copy
gzip -9
  21386 bytes (20.9k)
local copy
7zip -mx=9 -tgzip
  20618 bytes (20.1k)
local copy
libdeflate -12
  20611 bytes (20.1k)
local copy
zultra
  20597 bytes (20.1k)
local copy
kzip -s0 -rn -b0
  20561 bytes (20.1k)
local copy
pigz -11 -n
  20557 bytes (20.1k)
local copy
Zopfli
  20539 bytes (20.1k)
local copy

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

You will automatically get the smallest Socket.IO 1.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

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 --bsr40 --lazy --ohh

(found July 1, 2016)
Description Value Parameter
iterations 100000  --i100000
maximum blocks 8  --mb8
maximum length score 4096  --mls4096
block splitting recursion 40  --bsr40
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/socketio/socket.io-client/1.2.0/socket.io.min.js --location | md5sum
cc24aba0f6074ebab843731623e8622b  -
curl --silent --compressed https://minime.stephan-brumme.com/files/socket.io/socket.io-1.2.0.min.zopfli.js.gz | md5sum
cc24aba0f6074ebab843731623e8622b  -

SHA1:
curl --silent --compressed https://raw.githubusercontent.com/socketio/socket.io-client/1.2.0/socket.io.min.js --location | sha1sum
52be8318cde973a7dfca7aecef76673119481bac  -
curl --silent --compressed https://minime.stephan-brumme.com/files/socket.io/socket.io-1.2.0.min.zopfli.js.gz | sha1sum
52be8318cde973a7dfca7aecef76673119481bac  -

All listed CDNs deliver identical contents:
CDN Size (compressed) MD5 (uncompressed) Timestamp
Boot 25863 bytes cc24aba0f6074ebab843731623e8622b (invalid)
cdnjs 21651 bytes cc24aba0f6074ebab843731623e8622b (invalid)

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

Other Versions

Available Socket.IO versions at minime.stephan-brumme.com:

4.5.4, 4.5.3, 4.5.2, 4.5.1, 4.5.0, 4.4.1, 4.4.0, 4.3.2, 4.3.1, 4.3.0, 4.2.0, 4.1.3, 4.1.2, 4.1.1, 4.1.0, 4.0.2, 4.0.1, 4.0.0,
3.1.2, 3.1.1, 3.1.0, 3.0.5, 3.0.4, 3.0.3, 3.0.2, 3.0.1, 3.0.0,
2.4.0, 2.3.1, 2.3.0, 2.2.0, 2.1.1, 2.1.0, 2.0.4, 2.0.3, 2.0.2, 2.0.1, 2.0.0,
1.7.4, 1.7.2, 1.7.1, 1.7.0, 1.6.0, 1.5.0, 1.4.5, 1.4.4, 1.4.3, 1.4.2, 1.4.1, 1.4.0, 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.1, 1.2.0, 1.1.0, 1.0.6, 1.0.5, 1.0.4, 1.0.3, 1.0.2, 1.0.1, 1.0.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, ThreeJS, UnderscoreJS and Vue.

Changelog

Best Zopfli parameters so far:
Size Improvement Parameters Found
20539 bytes -1 byte zopfli --i100000 --mls4096 --bsr40 --lazy --ohh July 1, 2016 @ 11:46
20540 bytes -1 byte zopfli --i100000 --mls32 --bsr15 --lazy --ohh June 30, 2016 @ 15:50
20541 bytes -1 byte zopfli --i10000 --mls32 --bsr30 --lazy --ohh June 29, 2016 @ 16:53
20542 bytes -1 byte zopfli --i1000 --mls32 --bsr30 --lazy --ohh June 29, 2016 @ 16:41
20543 bytes -1 byte zopfli --i1000 --mls256 --bsr16 --lazy --ohh June 29, 2016 @ 16:12
20544 bytes zopfli --i100 --mls32 --bsr30 --lazy --ohh June 29, 2016 @ 13:31

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

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
20551 20550 20551 20546 20542 20550 20551 20551 20544 20567 20562 20564 20561 20564 20563
20563 20573 20548 20549 20554 20550 20543 20550 20549 20563 20572 20562 20560 20562 20561
20550 20548 20548 20547 20549 20544 20544 20544 20547 20548 20565 20548 20562 20564 20543
20542 20549 20553 20542 20548 20549 20545 20545 20551 20545 20543 20544 20563 20563 20560
20549 20542 20545 20542 20540 20544 20544 20544 20547 20543 20563 20544 20561 20560 20562
20544 20542 20545 20547 20540 20545 20544 20542 20548 20542 20564 20545 20560 20561 20561
20542 20542 20549 20549 20549 20550 20545 20544 20548 20563 20542 20561 20544 20561 20560
20548 20552 20553 20549 20550 20545 20545 20548 20549 20543 20562 20543 20562 20563 20561
20550 20542 20553 20548 20542 20550 20544 20544 20542 20550 20574 20544 20562 20561 20560
20545 20544 20542 20542 20548 20550 20550 20549 20542 20544 20566 20548 20563 20563 20543
20542 20542 20544 20542 20545 20544 20546 20545 20547 20544 20544 20539 20563 20562 20561
20542 20554 20553 20542 20540 20545 20544 20544 20542 20543 20542 20543 20563 20562 20560
20542 20542 20548 20542 20543 20544 20544 20543 20542 20544 20544 20545 20561 20561 20546
20544 20542 20544 20542 20542 20543 20550 20544 20543 20543 20562 20543 20561 20562 20545
20543 20543 20544 20540 20549 20544 20545 20543 20550 20543 20544 20544 20560 20562 20561
20549 20549 20549 20542 20542 20544 20544 20544 20547 20544 20544 20563 20560 20561 20545
20545 20544 20543 20549 20550 20550 20544 20544 20548 20545 20543 20563 20560 20562 20562
20544 20542 20544 20542 20542 20548 20544 20548 20549 20544 20543 20563 20562 20561 20544
20542 20542 20542 20544 20542 20543 20545 20544 20549 20543 20542 20543 20564 20563 20561
20544 20548 20548 20548 20542 20545 20542 20545 20548 20544 20562 20543 20560 20561 20560
20548 20542 20543 20543 20544 20545 20544 20545 20547 20544 20543 20543 20563 20561 20543
20543 20542 20544 20543 20540 20544 20545 20544 20543 20544 20562 20562 20544 20562 20560
20545 20543 20553 20549 20543 20544 20544 20542 20548 20544 20544 20539 20561 20564 20543

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 20544 bytes 100%
1,000 20542 bytes -2 bytes 100%
10,000 20541 bytes -1 byte 100%
100,000 20539 bytes -2 bytes 2.03%
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
20561 bytes +22 bytes (+0.11%)
20585 bytes +46 bytes (+0.22%) +24 bytes
20565 bytes +26 bytes (+0.13%) +4 bytes
20607 bytes +68 bytes (+0.33%) +46 bytes
20638 bytes +99 bytes (+0.48%) +77 bytes
20670 bytes +131 bytes (+0.64%) +109 bytes
20707 bytes +168 bytes (+0.82%) +146 bytes
20711 bytes +172 bytes (+0.84%) +150 bytes
20739 bytes +200 bytes (+0.97%) +178 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 16690 bytes -3849 bytes (-18.74%)
RAR (proprietary) RAR rar a -m5 -md64m -mc63:128t -mt1 17484 bytes -3055 bytes (-14.87%)
PPMd (Wikipedia) 7zip 7za a -mx=9 -m0=ppmd 18194 bytes -2345 bytes (-11.42%)
Brotli (Wikipedia) brotli brotli -q 11 19444 bytes -1095 bytes (-5.33%)
LZMA2 (Wikipedia) xz xz -9 20116 bytes -423 bytes (-2.06%)
Burrows-Wheeler transform (Wikipedia) bzip2 bzip2 -9 20237 bytes -302 bytes (-1.47%)
Zstandard (Wikipedia) zstd zstd -19 20408 bytes -131 bytes (-0.64%)

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.