Choose a version:
48% The original file has 514016 bytes (502.0k) and is available from the project website.
There you can find the official minified version, too, which brings down the size to 247516 bytes (241.7k, 48%).

After GZIP compression these minified files vary in size:
unpkg
  93490 bytes (91.3k)
CDN
Boot
  81802 bytes (79.9k)
CDN
cdnjs
  81802 bytes (79.9k)
CDN
gzip -6 (default)
  81153 bytes (79.3k)
local copy
gzip -9
  80841 bytes (78.9k)
local copy
libdeflate -12
  77519 bytes (75.7k)
local copy
7zip -mx=9 -tgzip
  77229 bytes (75.4k)
local copy
kzip -s0 -rn -b8
  76904 bytes (75.1k)
local copy
pigz -11 -n
  76687 bytes (74.9k)
local copy
Zopfli
  76654 bytes (74.9k)
local copy
Zopfli (defluff)
  76650 bytes (74.9k)
local copy

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

You will automatically get the smallest D3 5.14.2 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 5148 bytes by using my D3 5.14.2 Zopfli version instead of the best available CDN (6.72% smaller than cdnjs, 76654 vs. 81802 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 --mls4096 --bsr18 --lazy --ohh

(found November 23, 2019)
Description Value Parameter
iterations 1000000  --i1000000
maximum blocks 8  --mb8
maximum length score 4096  --mls4096
block splitting recursion 18  --bsr18
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 4 more bytes (76650 bytes).

Verify file integrity

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

MD5:
curl --silent --compressed https://raw.githubusercontent.com/mbostock/d3/v5.14.2/d3.zip --location | md5sum
b44cc78e7e2ca89980d95b9b970186c6  -
curl --silent --compressed https://minime.stephan-brumme.com/files/d3/d3-5.14.2.min.zopfli.js.gz | md5sum
b44cc78e7e2ca89980d95b9b970186c6  -

SHA1:
curl --silent --compressed https://raw.githubusercontent.com/mbostock/d3/v5.14.2/d3.zip --location | sha1sum
66e305c9ca6eced569a89fe1f1346e33ca509616  -
curl --silent --compressed https://minime.stephan-brumme.com/files/d3/d3-5.14.2.min.zopfli.js.gz | sha1sum
66e305c9ca6eced569a89fe1f1346e33ca509616  -

All listed CDNs deliver identical contents:
CDN Size (compressed) MD5 (uncompressed) Timestamp
unpkg 93490 bytes b44cc78e7e2ca89980d95b9b970186c6 (invalid)
Boot 81802 bytes b44cc78e7e2ca89980d95b9b970186c6 November 27, 2019 @ 15:46
cdnjs 81802 bytes b44cc78e7e2ca89980d95b9b970186c6 November 27, 2019 @ 15:46

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

Other Versions

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

5.14.2, 5.14.1, 5.14.0, 5.13.1, 5.13.0, 5.12.0, 5.11.0, 5.10.1, 5.10.0,
5.9.7, 5.9.6, 5.9.5, 5.9.4, 5.9.3, 5.9.2, 5.9.1, 5.9.0, 5.8.2, 5.8.1, 5.8.0, 5.7.0, 5.6.0, 5.5.0, 5.4.0, 5.3.0, 5.2.0, 5.1.0, 5.0.1, 5.0.0,
4.13.0, 4.12.2, 4.12.1, 4.12.0, 4.11.0, 4.10.2, 4.10.1, 4.10.0,
4.9.1, 4.9.0, 4.8.0, 4.7.4, 4.7.3, 4.7.2, 4.7.1, 4.7.0, 4.6.0, 4.5.0, 4.4.4, 4.4.3, 4.4.2, 4.4.1, 4.4.0, 4.3.0, 4.2.8, 4.2.7, 4.2.6, 4.2.5, 4.2.4, 4.2.3, 4.2.2, 4.2.1, 4.2.0, 4.1.1, 4.1.0, 4.0.0,
3.5.17, 3.5.16, 3.5.15, 3.5.14, 3.5.13, 3.5.12, 3.5.11, 3.5.10, 3.5.9, 3.5.8, 3.5.7, 3.5.6, 3.5.5, 3.5.4, 3.5.3, 3.5.2, 3.5.1, 3.5.0, 3.4.13, 3.4.12, 3.4.11, 3.4.10, 3.4.9, 3.4.8, 3.4.6, 3.4.5, 3.4.4, 3.4.3, 3.4.2, 3.4.1, 3.4.0, 3.3.13, 3.3.12, 3.3.11, 3.3.10, 3.3.9, 3.3.8, 3.3.7, 3.3.6, 3.3.5, 3.3.4, 3.3.3, 3.3.2, 3.3.1, 3.3.0, 3.2.8, 3.2.7, 3.2.6, 3.2.5, 3.2.4, 3.2.3, 3.2.2, 3.2.1, 3.2.0, 3.1.10, 3.1.9, 3.1.8, 3.1.7, 3.1.6, 3.1.5, 3.1.4, 3.1.3, 3.1.2, 3.1.1, 3.1.0, 3.0.8, 3.0.7, 3.0.6, 3.0.5, 3.0.4, 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, Bootstrap, Dojo, Ember, jQuery, Knockout, lodash, React, Socket.IO, ThreeJS, UnderscoreJS and Vue.

Changelog

Best Zopfli parameters so far:
Size Improvement Parameters Found
76654 bytes -5 bytes zopfli --i1000000 --mls4096 --bsr18 --lazy --ohh November 23, 2019 @ 22:41
76659 bytes -7 bytes zopfli --i100000 --mls4096 --bsr18 --lazy --ohh November 23, 2019 @ 10:18
76666 bytes -3 bytes zopfli --i10000 --mls4096 --bsr18 --lazy --ohh November 23, 2019 @ 01:18
76669 bytes -6 bytes zopfli --i10000 --mls4096 --bsr16 --lazy --ohh November 23, 2019 @ 01:18
76675 bytes -4 bytes zopfli --i1000 --mls4096 --bsr18 --lazy --ohh November 23, 2019 @ 00:15
76679 bytes -2 bytes zopfli --i1000 --mls4096 --bsr20 --lazy --ohh November 23, 2019 @ 00:14
76681 bytes -19 bytes zopfli --i1000 --mls4096 --bsr30 --lazy --ohh November 23, 2019 @ 00:14
76700 bytes zopfli --i100 --mls1024 --bsr25 --lazy --ohh November 22, 2019 @ 19:15

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

Most recent activity on November 27, 2019 @ 15:46.

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
77049 77043 77120 77105 77115 77121 77131 77109 77231 77242 77241 77034 77041 77059 77088
76730 76890 76952 76920 76748 76752 76755 76938 77153 76938 76898 76795 76853 77029 76881
76685 77003 76991 76987 76875 76690 76694 76882 76882 76861 76901 76692 76833 76841 76851
77097 77109 76898 76898 77013 76689 76916 76884 76881 76900 76896 76709 76820 76896 76909
76897 76694 76991 76752 76749 76750 76982 76975 76986 77023 77058 76691 76679 76898 76871
77023 76871 76872 76688 76880 76688 76887 76879 76880 76900 76896 76720 76902 76931 76857
76684 76688 76861 76865 76875 76684 76887 76880 76878 76898 76869 76687 76681 76892 76883
76992 76994 77009 77004 76892 76682 76883 76880 76894 76861 76863 76809 76684 76880 76855
77019 76679 77010 77002 76890 76685 76879 76880 76887 76902 76867 76698 76823 76761 76854
77018 77004 76893 76688 76892 76683 76879 76885 76880 76897 76897 76706 76826 76830 76844
77014 76684 76863 76873 76890 76687 76880 76883 76883 76909 76889 76697 76695 76895 76855
76873 76891 76976 76897 76681 76684 76880 76881 76881 76899 76872 76689 76829 76848 76856
77008 76674 76870 76880 77001 76891 76875 76879 76886 76904 76890 76669 76826 76910 76856
76681 77005 77007 76989 76688 76797 76878 76973 76884 76896 76908 76687 76825 76835 76860
76675 77011 77011 76884 76894 76689 76879 76883 76879 76897 76894 76654 76836 76906 76863
77014 77007 76881 76674 76878 76981 76879 76977 76884 76897 76868 76687 76826 76826 76853
77006 76684 76886 76883 77003 76681 76879 76876 76864 76900 76894 76660 76821 76825 76846
77015 76989 77007 77010 76886 76683 76883 76880 76880 76692 76892 76685 76829 76901 76857
77018 77008 76985 77000 77005 76684 76883 76879 76888 76860 76877 76686 76832 76843 76860
77000 76994 76887 76980 77004 76688 76881 76875 76881 76897 76896 76696 76819 76895 76858
76876 76892 77009 77002 77007 76687 76878 76878 76883 76670 76868 76703 76824 76903 76852
76977 76990 76993 77002 77007 76891 76882 76882 76885 76896 76941 76676 76824 76684 76855
77009 76986 77005 76864 76875 76891 76871 76884 76878 76894 76889 76670 76820 76849 76829

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 76700 bytes 100%
1,000 76675 bytes -25 bytes 100%
10,000 76666 bytes -9 bytes 100%
100,000 76659 bytes -7 bytes 0.58%
1,000,000 76654 bytes -5 bytes 0.29%
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
77075 bytes +421 bytes (+0.55%) +171 bytes
78447 bytes +1793 bytes (+2.34%) +1543 bytes
78321 bytes +1667 bytes (+2.17%) +1417 bytes
77088 bytes +434 bytes (+0.57%) +184 bytes
77085 bytes +431 bytes (+0.56%) +181 bytes
77071 bytes +417 bytes (+0.54%) +167 bytes
77048 bytes +394 bytes (+0.51%) +144 bytes
77003 bytes +349 bytes (+0.46%) +99 bytes
76904 bytes +250 bytes (+0.33%)

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 60293 bytes -16361 bytes (-21.34%)
RAR (proprietary) RAR rar a -m5 -md64m -mc63:128t -mt1 67110 bytes -9544 bytes (-12.45%)
LZMA2 (Wikipedia) xz xz -9 68004 bytes -8650 bytes (-11.28%)
Brotli (Wikipedia) brotli brotli -q 11 68183 bytes -8471 bytes (-11.05%)
PPMd (Wikipedia) 7zip 7za a -mx=9 -m0=ppmd 70159 bytes -6495 bytes (-8.47%)
Zstandard (Wikipedia) zstd zstd -19 73468 bytes -3186 bytes (-4.16%)
Burrows-Wheeler transform (Wikipedia) bzip2 bzip2 -9 76165 bytes -489 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 2019.
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.