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

After GZIP compression these minified files vary in size:
unpkg
  100600 bytes (98.2k)
CDN
Boot
  87816 bytes (85.8k)
CDN
cdnjs
  87816 bytes (85.8k)
CDN
gzip -6 (default)
  87235 bytes (85.2k)
local copy
gzip -9
  86963 bytes (84.9k)
local copy
libdeflate -12
  83471 bytes (81.5k)
local copy
7zip -mx=9 -tgzip
  83156 bytes (81.2k)
local copy
kzip -s0 -rn -b7
  82981 bytes (81.0k)
local copy
zultra
  82816 bytes (80.9k)
local copy
pigz -11 -n
  82662 bytes (80.7k)
local copy
Zopfli
  82523 bytes (80.6k)
local copy
Zopfli (defluff)
  82520 bytes (80.6k)
local copy

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

You will automatically get the smallest D3 6.0.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 5293 bytes by using my D3 6.0.0 Zopfli version instead of the best available CDN (6.41% smaller than cdnjs, 82523 vs. 87816 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 --bsr20 --lazy --ohh

(found August 28, 2020)
Description Value Parameter
iterations 1000000  --i1000000
maximum blocks 8  --mb8
maximum length score 32768  --mls32768
block splitting recursion 20  --bsr20
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 (82520 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.0.0/d3.zip --location | md5sum
bcd0c00d23aa51e0c5cd115acf1f9388  -
curl --silent --compressed https://minime.stephan-brumme.com/files/d3/d3-6.0.0.min.zopfli.js.gz | md5sum
bcd0c00d23aa51e0c5cd115acf1f9388  -

SHA1:
curl --silent --compressed https://raw.githubusercontent.com/mbostock/d3/v6.0.0/d3.zip --location | sha1sum
df9e6080c9f5068881da81cc23bee2a13eb6e822  -
curl --silent --compressed https://minime.stephan-brumme.com/files/d3/d3-6.0.0.min.zopfli.js.gz | sha1sum
df9e6080c9f5068881da81cc23bee2a13eb6e822  -

All listed CDNs deliver identical contents:
CDN Size (compressed) MD5 (uncompressed) Timestamp
unpkg 100600 bytes bcd0c00d23aa51e0c5cd115acf1f9388 August 27, 2020 @ 00:25
Boot 87816 bytes bcd0c00d23aa51e0c5cd115acf1f9388 August 27, 2020 @ 00:45
cdnjs 87816 bytes bcd0c00d23aa51e0c5cd115acf1f9388 August 27, 2020 @ 00:45

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
82523 bytes -3 bytes zopfli --i1000000 --mls32768 --bsr20 --lazy --ohh August 28, 2020 @ 20:48
82526 bytes -6 bytes zopfli --i100000 --mls32768 --bsr20 --lazy --ohh August 27, 2020 @ 19:26
82532 bytes -10 bytes zopfli --i10000 --mls32768 --bsr20 --lazy --ohh August 27, 2020 @ 17:39
82542 bytes -30 bytes zopfli --i1000 --mls32768 --bsr20 --lazy --ohh August 27, 2020 @ 16:13
82572 bytes zopfli --i100 --mls32768 --bsr20 --lazy --ohh August 27, 2020 @ 14:34

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

Most recent activity on August 31, 2020 @ 11:24.

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
82798 82803 83193 82948 83012 83171 83168 82937 82930 82916 82835 82922 83029 82865 82862
82781 82769 82695 82896 82860 82846 82657 82681 82866 82656 82699 82643 82823 82639 82672
82854 82853 82808 82812 82774 82624 82795 82629 82810 82637 82630 82610 82733 82607 82561
82831 82798 82910 82814 82799 82629 82788 82808 82827 82832 82649 82746 82836 82714 82786
82843 82815 82693 82593 82800 82948 82697 82620 82888 82620 82779 82621 82789 82894 82856
82842 82771 82741 82772 82791 82606 82790 82809 82798 82631 82636 82596 82796 82654 82876
82837 82805 82795 82938 82785 82601 82625 82807 82870 82588 82586 82605 82831 82651 82601
82896 82619 82773 82794 82791 82795 82890 82915 82786 82639 82920 82595 82685 82595 82832
82891 82886 82784 82937 82786 82592 82593 82784 82792 82704 82722 82600 82690 82612 82596
82821 82793 82799 82797 82777 82593 82794 82802 82797 82612 82594 82589 82680 82753 82989
82836 82831 82799 82947 82818 82797 82627 82805 82783 82845 82630 82616 82685 82972 82744
82822 82838 82909 82936 82903 82830 82798 82607 82797 82833 82595 82619 82802 82687 82988
82826 82795 82972 82777 82899 82697 82720 82800 82802 82792 82773 82776 82683 82975 82755
82920 82900 82897 82934 82899 82779 82617 82824 82802 82637 82594 82598 82916 82589 83029
82974 82794 82975 82939 82798 82715 82710 82807 82904 82612 82634 82606 82683 82720 83028
82841 82794 82799 82930 82798 82790 82617 82799 82787 82782 82845 82593 82692 82964 82849
82817 82794 82772 82927 82779 82801 82796 82807 82790 82597 82594 82592 82753 82528 82523
82838 82802 82801 82933 82779 82804 82824 82799 82904 82620 82592 82775 82753 82745 82977
82819 82800 82814 82593 82778 82782 82592 82804 82791 82596 82846 82591 82713 82743 82624
82819 82799 82769 82775 82778 82781 82616 82800 82802 82592 82844 82585 82695 82974 82634
82836 82793 82733 82797 82902 82783 82776 82783 82901 82786 82781 82792 82794 82973 83026
82818 82914 82910 82934 82902 82595 82755 82911 82789 82623 82632 82596 82792 82965 83025
82936 82755 82913 82914 82917 82909 82914 82920 82912 82632 82779 82779 82755 82875 82776

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 82572 bytes 100%
1,000 82542 bytes -30 bytes 100%
10,000 82532 bytes -10 bytes 100%
100,000 82526 bytes -6 bytes 0.58%
1,000,000 82523 bytes -3 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
83012 bytes +489 bytes (+0.59%) +31 bytes
84370 bytes +1847 bytes (+2.24%) +1389 bytes
84200 bytes +1677 bytes (+2.03%) +1219 bytes
83002 bytes +479 bytes (+0.58%) +21 bytes
83010 bytes +487 bytes (+0.59%) +29 bytes
83013 bytes +490 bytes (+0.59%) +32 bytes
83001 bytes +478 bytes (+0.58%) +20 bytes
82981 bytes +458 bytes (+0.55%)
82998 bytes +475 bytes (+0.58%) +17 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 64554 bytes -17969 bytes (-21.77%)
RAR (proprietary) RAR rar a -m5 -md64m -mc63:128t -mt1 72000 bytes -10523 bytes (-12.75%)
LZMA2 (Wikipedia) xz xz -9 73008 bytes -9515 bytes (-11.53%)
Brotli (Wikipedia) brotli brotli -q 11 73194 bytes -9329 bytes (-11.30%)
PPMd (Wikipedia) 7zip 7za a -mx=9 -m0=ppmd 73763 bytes -8760 bytes (-10.62%)
Zstandard (Wikipedia) zstd zstd -19 78858 bytes -3665 bytes (-4.44%)
Burrows-Wheeler transform (Wikipedia) bzip2 bzip2 -9 81677 bytes -846 bytes (-1.03%)

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.