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

After GZIP compression these minified files vary in size:
unpkg
  100654 bytes (98.3k)
CDN
cdnjs
  87856 bytes (85.8k)
CDN
gzip -6 (default)
  87307 bytes (85.3k)
local copy
gzip -9
  87030 bytes (85.0k)
local copy
libdeflate -12
  83620 bytes (81.7k)
local copy
7zip -mx=9 -tgzip
  83225 bytes (81.3k)
local copy
kzip -s0 -rn -b6
  83018 bytes (81.1k)
local copy
zultra
  82833 bytes (80.9k)
local copy
pigz -11 -n
  82739 bytes (80.8k)
local copy
Zopfli
  82567 bytes (80.6k)
local copy
Zopfli (defluff)
  82564 bytes (80.6k)
local copy

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

You will automatically get the smallest D3 6.1.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 5289 bytes by using my D3 6.1.0 Zopfli version instead of the best available CDN (6.41% smaller than cdnjs, 82567 vs. 87856 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 --mls32768 --bsr17 --lazy --ohh

(found September 3, 2020)
Description Value Parameter
iterations 1000000  --i1000000
maximum blocks 8  --mb8
maximum length score 32768  --mls32768
block splitting recursion 17  --bsr17
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 3 more bytes (82564 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/v6.1.0/d3.zip --location | md5sum
9ca78ce7089170dff6d2e26a97bdc8b5  -
curl --silent --compressed https://minime.stephan-brumme.com/files/d3/d3-6.1.0.min.zopfli.js.gz | md5sum
9ca78ce7089170dff6d2e26a97bdc8b5  -

SHA1:
curl --silent --compressed https://raw.githubusercontent.com/mbostock/d3/v6.1.0/d3.zip --location | sha1sum
371d7fdc5466108ae2d1cfbe070d5fc61830f029  -
curl --silent --compressed https://minime.stephan-brumme.com/files/d3/d3-6.1.0.min.zopfli.js.gz | sha1sum
371d7fdc5466108ae2d1cfbe070d5fc61830f029  -

All listed CDNs deliver identical contents:
CDN Size (compressed) MD5 (uncompressed) Timestamp
unpkg 100654 bytes 9ca78ce7089170dff6d2e26a97bdc8b5 (invalid)
cdnjs 87856 bytes 9ca78ce7089170dff6d2e26a97bdc8b5 August 29, 2020 @ 22:49

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

Other Versions

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

6.2.0, 6.1.1, 6.1.0, 6.0.0,
5.16.0, 5.15.1, 5.15.0, 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
82567 bytes -5 bytes zopfli --i1000000 --mls32768 --bsr17 --lazy --ohh September 3, 2020 @ 22:23
82572 bytes -6 bytes zopfli --i100000 --mls32768 --bsr17 --lazy --ohh September 2, 2020 @ 13:37
82578 bytes -4 bytes zopfli --i10000 --mls32768 --bsr17 --lazy --ohh September 1, 2020 @ 19:27
82582 bytes -8 bytes zopfli --i10000 --mls32768 --bsr10 --lazy --ohh September 1, 2020 @ 19:20
82590 bytes -1 byte zopfli --i10000 --mls32768 --bsr9 --lazy --ohh September 1, 2020 @ 19:07
82591 bytes -2 bytes zopfli --i1000 --mls32768 --bsr17 --lazy --ohh September 1, 2020 @ 16:22
82593 bytes -27 bytes zopfli --i1000 --mls32768 --bsr10 --lazy --ohh September 1, 2020 @ 16:20
82620 bytes zopfli --i100 --mls32768 --bsr17 --lazy --ohh September 1, 2020 @ 15:43

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

Most recent activity on September 4, 2020 @ 10:39.

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
82841 82847 83031 83036 83028 83229 82884 82991 82997 82976 82911 83000 83102 82936 82973
83182 83308 83262 83277 83274 82896 82710 82728 82708 82681 82683 82660 82850 82688 82684
83028 82894 82995 82875 82648 82647 82652 82688 82852 82874 82647 82650 82756 82615 82631
82674 82684 82985 82975 82684 82875 82644 82863 82848 82873 82727 82780 82740 82817 83020
82980 82933 82960 82652 82859 82835 82656 82658 82850 82665 82661 82643 82905 82588 82793
83000 82817 82845 82837 82655 82640 82811 82824 82842 82746 82647 82636 82796 82745 82590
82985 82847 82982 82982 82646 82652 82645 82729 82738 82666 82639 82657 82773 82799 82576
82980 82922 82642 82844 82844 82824 82648 82837 82852 82774 82641 82643 82742 82794 82710
83076 82937 82982 82974 82640 82646 82653 82833 82841 82745 82766 82788 82744 82731 82605
82667 82850 82860 82985 82859 82643 82656 82825 82842 82734 82647 82646 82754 82646 82610
82987 82854 82979 83005 82868 82838 82664 82845 82841 82885 82643 82639 82774 83008 82971
82670 82871 82981 82987 82849 82644 82649 82832 82842 82875 82749 82636 82759 83030 82793
82984 82849 82978 83005 82856 82750 82745 82755 82845 82681 82748 82641 82743 82932 82736
82984 82972 82979 83008 82852 82849 82662 82824 82842 82644 82646 82641 82777 82931 82567
82847 82849 82806 83147 82841 83029 82659 82837 82836 82640 82644 82659 82738 82631 82783
82852 82848 82977 82979 82841 82838 82645 82869 82835 82736 82636 82639 82743 83026 82980
82869 82865 82984 82996 82855 82850 82659 82827 82843 82667 82633 82833 82832 83021 82643
82986 82850 82982 82987 82854 82641 82649 82829 82839 82641 82640 82640 82743 82932 82736
82984 82852 82800 82841 82644 82824 82649 82827 82841 82840 82644 82646 82739 82932 82741
82984 82852 82862 82843 82852 82642 82646 82642 82851 82737 82641 82840 82927 82932 82832
82977 82845 82975 82980 82648 82826 82649 82849 82838 82639 82643 82795 82793 83032 82924
82982 82846 82981 82982 82849 82847 82646 82779 82800 82668 82643 82837 82794 82796 82769
82982 82819 82968 82840 82966 82851 82822 82792 82837 82821 82640 82837 82884 83028 82733

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 82620 bytes 100%
1,000 82591 bytes -29 bytes 100%
10,000 82578 bytes -13 bytes 100%
100,000 82572 bytes -6 bytes 0.58%
1,000,000 82567 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
83019 bytes +452 bytes (+0.55%) +1 byte
84419 bytes +1852 bytes (+2.24%) +1401 bytes
84252 bytes +1685 bytes (+2.04%) +1234 bytes
83050 bytes +483 bytes (+0.58%) +32 bytes
83066 bytes +499 bytes (+0.60%) +48 bytes
83035 bytes +468 bytes (+0.57%) +17 bytes
83018 bytes +451 bytes (+0.55%)
83047 bytes +480 bytes (+0.58%) +29 bytes
83060 bytes +493 bytes (+0.60%) +42 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
ZPAQ (Wikipedia) zpaq zpaq -method 69 64692 bytes -17875 bytes (-21.65%)
RAR (proprietary) RAR rar a -m5 -md64m -mc63:128t -mt1 72017 bytes -10550 bytes (-12.78%)
LZMA2 (Wikipedia) xz xz -9 73040 bytes -9527 bytes (-11.54%)
Brotli (Wikipedia) brotli brotli -q 11 73284 bytes -9283 bytes (-11.24%)
PPMd (Wikipedia) 7zip 7za a -mx=9 -m0=ppmd 73788 bytes -8779 bytes (-10.63%)
Zstandard (Wikipedia) zstd zstd -19 78930 bytes -3637 bytes (-4.40%)
Burrows-Wheeler transform (Wikipedia) bzip2 bzip2 -9 81712 bytes -855 bytes (-1.04%)

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