Choose a version:
48% The original file has 550355 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 265491 bytes (259.3k, 48%).

After GZIP compression these minified files vary in size:
unpkg
  100638 bytes (98.3k)
CDN
Boot
  87854 bytes (85.8k)
CDN
cdnjs
  87854 bytes (85.8k)
CDN
gzip -6 (default)
  87298 bytes (85.3k)
local copy
gzip -9
  87021 bytes (85.0k)
local copy
libdeflate -12
  83623 bytes (81.7k)
local copy
7zip -mx=9 -tgzip
  83228 bytes (81.3k)
local copy
kzip -s0 -rn -b0
  83011 bytes (81.1k)
local copy
zultra
  82810 bytes (80.9k)
local copy
pigz -11 -n
  82721 bytes (80.8k)
local copy
Zopfli
  82564 bytes (80.6k)
local copy
Zopfli (defluff)
  82562 bytes (80.6k)
local copy

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

You will automatically get the smallest D3 6.1.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 5290 bytes by using my D3 6.1.1 Zopfli version instead of the best available CDN (6.41% smaller than cdnjs, 82564 vs. 87854 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 --bsr21 --lazy --ohh

(found September 3, 2020)
Description Value Parameter
iterations 1000000  --i1000000
maximum blocks 8  --mb8
maximum length score 32768  --mls32768
block splitting recursion 21  --bsr21
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 2 more bytes (82562 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.1/d3.zip --location | md5sum
0b67fea7cfcf2a37c5a8a78219f7eed3  -
curl --silent --compressed https://minime.stephan-brumme.com/files/d3/d3-6.1.1.min.zopfli.js.gz | md5sum
0b67fea7cfcf2a37c5a8a78219f7eed3  -

SHA1:
curl --silent --compressed https://raw.githubusercontent.com/mbostock/d3/v6.1.1/d3.zip --location | sha1sum
7f0e798f682feec4564f8a7521e08ee26dd6cf2e  -
curl --silent --compressed https://minime.stephan-brumme.com/files/d3/d3-6.1.1.min.zopfli.js.gz | sha1sum
7f0e798f682feec4564f8a7521e08ee26dd6cf2e  -

All listed CDNs deliver identical contents:
CDN Size (compressed) MD5 (uncompressed) Timestamp
unpkg 100638 bytes 0b67fea7cfcf2a37c5a8a78219f7eed3 (invalid)
Boot 87854 bytes 0b67fea7cfcf2a37c5a8a78219f7eed3 August 31, 2020 @ 17:38
cdnjs 87854 bytes 0b67fea7cfcf2a37c5a8a78219f7eed3 August 31, 2020 @ 17:38

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

Other Versions

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

6.7.0, 6.6.2, 6.6.1, 6.6.0, 6.5.0, 6.4.0, 6.3.1, 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
82564 bytes -6 bytes zopfli --i1000000 --mls32768 --bsr21 --lazy --ohh September 3, 2020 @ 22:31
82570 bytes -5 bytes zopfli --i100000 --mls32768 --bsr21 --lazy --ohh September 2, 2020 @ 12:01
82575 bytes -1 byte zopfli --i10000 --mls32768 --bsr21 --lazy --ohh September 1, 2020 @ 20:53
82576 bytes -10 bytes zopfli --i10000 --mls32768 --bsr10 --lazy --ohh September 1, 2020 @ 20:28
82586 bytes -31 bytes zopfli --i1000 --mls32768 --bsr10 --lazy --ohh September 1, 2020 @ 18:15
82617 bytes zopfli --i100 --mls32768 --bsr10 --lazy --ohh September 1, 2020 @ 17:59

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
82838 82826 83025 83029 83025 82996 82878 82988 82999 82970 82913 82994 83097 82930 82973
83168 83299 83264 83258 82715 82708 82703 82728 82706 82697 82722 82660 82837 82690 82691
82721 82884 82987 82979 82638 82637 82642 82688 82846 82647 82635 82646 82748 82615 82618
82695 82680 82678 82696 82637 82680 82652 82825 82873 82684 82768 82770 82788 82619 82675
82880 82869 82984 82755 82854 82735 82649 82654 82643 82661 82751 82636 82835 82651 82791
82853 82812 82982 82983 82822 82789 82640 82647 82840 82736 82656 82633 82779 82931 82573
82983 82849 82977 82842 82635 82647 82642 82723 82733 82644 82638 82648 82842 82935 82571
83006 82924 82967 82836 82844 82851 82634 82829 82847 82768 82640 82638 82735 82791 82734
82936 82930 82983 82976 82645 82637 82637 82827 82841 82745 82764 82647 82735 82664 82590
83030 82848 82981 82979 82853 82839 82645 82824 82838 82837 82639 82635 82730 82787 82770
82869 82848 83001 82854 82833 82836 82655 82826 82841 82635 82638 82636 82767 83024 82967
82674 82856 82983 82979 82943 82839 82640 82652 82838 82872 82745 82636 82780 83026 83013
83007 82851 82978 82857 83026 82742 82652 82739 82835 82648 82639 82636 82728 83016 82730
82678 82871 82965 82981 82946 82849 82656 82657 82838 82636 82636 82772 82765 83013 82724
83153 83015 82970 82794 82944 82845 82635 82652 82836 82646 82638 82650 82725 82621 82834
82676 82669 82824 82975 82838 82830 82635 82843 82831 82734 82634 82640 82785 82795 82841
83001 82859 82985 82990 82950 82834 82848 82820 82842 82839 82639 82830 82795 83031 82757
82678 82846 82979 82981 82850 82836 82638 82827 82834 82636 82637 82827 82733 83015 82564
82676 82852 82804 82839 82634 82823 82637 82851 82837 82841 82638 82639 82764 83030 82734
82675 82849 82983 82836 82848 82836 82641 82828 82849 82731 82635 82834 82923 83025 82729
82991 82846 82977 82977 82636 82832 82643 82857 82835 82636 82637 82649 82792 83019 82917
83000 82846 82979 82980 82846 82834 82640 82803 82802 82840 82640 82832 82792 83036 82838
82825 82830 82960 82796 82958 82877 82796 82765 82796 82776 82660 82834 82781 83024 82732

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 82617 bytes 100%
1,000 82586 bytes -31 bytes 100%
10,000 82575 bytes -11 bytes 100%
100,000 82570 bytes -5 bytes 1.16%
1,000,000 82564 bytes -6 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
83011 bytes +447 bytes (+0.54%)
84419 bytes +1855 bytes (+2.25%) +1408 bytes
84254 bytes +1690 bytes (+2.05%) +1243 bytes
83058 bytes +494 bytes (+0.60%) +47 bytes
83060 bytes +496 bytes (+0.60%) +49 bytes
83038 bytes +474 bytes (+0.57%) +27 bytes
83017 bytes +453 bytes (+0.55%) +6 bytes
83041 bytes +477 bytes (+0.58%) +30 bytes
83057 bytes +493 bytes (+0.60%) +46 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 64693 bytes -17871 bytes (-21.65%)
RAR (proprietary) RAR rar a -m5 -md64m -mc63:128t -mt1 72033 bytes -10531 bytes (-12.75%)
LZMA2 (Wikipedia) xz xz -9 73036 bytes -9528 bytes (-11.54%)
Brotli (Wikipedia) brotli brotli -q 11 73230 bytes -9334 bytes (-11.31%)
PPMd (Wikipedia) 7zip 7za a -mx=9 -m0=ppmd 73795 bytes -8769 bytes (-10.62%)
Zstandard (Wikipedia) zstd zstd -19 78922 bytes -3642 bytes (-4.41%)
Burrows-Wheeler transform (Wikipedia) bzip2 bzip2 -9 81732 bytes -832 bytes (-1.01%)

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.