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

After GZIP compression these minified files vary in size:
unpkg
  93230 bytes (91.0k)
CDN
Boot
  81696 bytes (79.8k)
CDN
cdnjs
  81696 bytes (79.8k)
CDN
gzip -6 (default)
  81051 bytes (79.2k)
local copy
gzip -9
  80738 bytes (78.8k)
local copy
libdeflate -12
  77584 bytes (75.8k)
local copy
7zip -mx=9 -tgzip
  77033 bytes (75.2k)
local copy
kzip -s0 -rn -b8
  76791 bytes (75.0k)
local copy
zultra
  76791 bytes (75.0k)
local copy
pigz -11 -n
  76579 bytes (74.8k)
local copy
Zopfli
  76533 bytes (74.7k)
local copy
Zopfli (defluff)
  76532 bytes (74.7k)
local copy

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

You will automatically get the smallest D3 5.13.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 5163 bytes by using my D3 5.13.0 Zopfli version instead of the best available CDN (6.75% smaller than cdnjs, 76533 vs. 81696 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 --mls16384 --bsr17 --lazy --ohh

(found November 19, 2019)
Description Value Parameter
iterations 1000000  --i1000000
maximum blocks 8  --mb8
maximum length score 16384  --mls16384
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 1 more byte (76532 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.13.0/d3.zip --location | md5sum
2e5429cea4efc5f598a2d00168c2f4f3  -
curl --silent --compressed https://minime.stephan-brumme.com/files/d3/d3-5.13.0.min.zopfli.js.gz | md5sum
2e5429cea4efc5f598a2d00168c2f4f3  -

SHA1:
curl --silent --compressed https://raw.githubusercontent.com/mbostock/d3/v5.13.0/d3.zip --location | sha1sum
aeb7903a379a8bcd1c082850c35c7f34fbf6406c  -
curl --silent --compressed https://minime.stephan-brumme.com/files/d3/d3-5.13.0.min.zopfli.js.gz | sha1sum
aeb7903a379a8bcd1c082850c35c7f34fbf6406c  -

All listed CDNs deliver identical contents:
CDN Size (compressed) MD5 (uncompressed) Timestamp
unpkg 93230 bytes 2e5429cea4efc5f598a2d00168c2f4f3 (invalid)
Boot 81696 bytes 2e5429cea4efc5f598a2d00168c2f4f3 November 27, 2019 @ 19:31
cdnjs 81696 bytes 2e5429cea4efc5f598a2d00168c2f4f3 November 27, 2019 @ 19:31

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
76533 bytes -4 bytes zopfli --i1000000 --mls16384 --bsr17 --lazy --ohh November 19, 2019 @ 06:24
76537 bytes -12 bytes zopfli --i100000 --mls16384 --bsr17 --lazy --ohh November 18, 2019 @ 14:31
76549 bytes -4 bytes zopfli --i10000 --mls2 --bsr14 --lazy --ohh November 18, 2019 @ 12:46
76553 bytes -1 byte zopfli --i10000 --mls2048 --bsr11 --lazy --ohh November 18, 2019 @ 12:35
76554 bytes -2 bytes zopfli --i10000 --mls2 --bsr40 --lazy --ohh November 18, 2019 @ 12:23
76556 bytes -5 bytes zopfli --i1000 --mls16384 --bsr17 --lazy --ohh November 18, 2019 @ 10:18
76561 bytes -2 bytes zopfli --i1000 --mls2 --bsr14 --lazy --ohh November 18, 2019 @ 10:17
76563 bytes -18 bytes zopfli --i1000 --mls2 --bsr9 --lazy --ohh November 18, 2019 @ 10:15
76581 bytes zopfli --i100 --mls16384 --bsr17 --lazy --ohh November 18, 2019 @ 10:07

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

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
76929 76920 76995 76980 76985 76990 76998 76978 77103 77114 77115 77120 76937 76921 76953
76620 76902 76831 76836 76625 76651 76650 76826 77029 76645 76793 76687 76714 76896 76770
76648 76998 76776 76566 76568 76574 76579 76766 76595 76789 76793 76582 76730 76730 76714
76713 76598 76779 76787 76783 76577 76803 76790 76769 76761 76581 76644 76588 76833 76737
76577 76891 76876 76633 76629 76637 76858 76853 76866 76890 76937 76684 76576 76834 76748
76553 76833 76781 76559 76892 76573 76773 76772 76770 76572 76747 76563 76576 76726 76771
76605 76761 76758 76754 76894 76563 76773 76768 76769 76789 76574 76571 76573 76774 76738
76834 76764 76877 76893 76889 76568 76766 76767 76766 76626 76553 76578 76727 76633 76643
76558 76576 76759 76563 76568 76570 76768 76772 76565 76771 76785 76599 76575 76907 76739
76570 76878 76895 76557 76893 76566 76768 76775 76770 76747 76791 76592 76575 76747 76737
76543 76572 76775 76566 76896 76571 76772 76767 76771 76806 76783 76580 76744 76616 76804
76885 76762 76866 76870 76777 76573 76765 76775 76766 76749 76810 76609 76574 76747 76741
76595 76558 76897 76753 76777 76569 76767 76768 76771 76749 76780 76569 76571 76775 76737
76566 76558 76775 76563 76971 76685 76775 76853 76859 76783 76798 76599 76575 76533 76741
76566 76559 76775 76564 76776 76569 76769 76772 76767 76787 76786 76581 76781 76816 76746
76554 76879 76879 76557 76873 76865 76767 76576 76769 76786 76781 76609 76571 76725 76616
76590 76566 76895 76771 76893 76570 76768 76767 76759 76758 76780 76574 76574 76703 76719
76602 76572 76775 76763 76896 76568 76768 76769 76767 76789 76575 76605 76574 76776 76743
76603 76782 76902 76860 76764 76573 76771 76768 76771 76751 76787 76611 76578 76770 76742
76598 76882 76780 76872 76570 76571 76770 76768 76768 76746 76783 76583 76579 76774 76620
76593 76573 76778 76562 76778 76568 76770 76767 76771 76747 76789 76576 76573 76770 76622
76763 76892 76878 76563 76893 76570 76768 76768 76768 76748 76786 76585 76739 76560 76743
76554 76893 76881 76769 76891 76573 76768 76772 76771 76780 76780 76587 76575 76767 76742

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 76581 bytes 100%
1,000 76556 bytes -25 bytes 100%
10,000 76544 bytes -12 bytes 100%
100,000 76537 bytes -7 bytes 0.58%
1,000,000 76533 bytes -4 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
76967 bytes +434 bytes (+0.57%) +176 bytes
78339 bytes +1806 bytes (+2.36%) +1548 bytes
78217 bytes +1684 bytes (+2.20%) +1426 bytes
76978 bytes +445 bytes (+0.58%) +187 bytes
76977 bytes +444 bytes (+0.58%) +186 bytes
76960 bytes +427 bytes (+0.56%) +169 bytes
76933 bytes +400 bytes (+0.52%) +142 bytes
76883 bytes +350 bytes (+0.46%) +92 bytes
76791 bytes +258 bytes (+0.34%)

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 60239 bytes -16294 bytes (-21.29%)
RAR (proprietary) RAR rar a -m5 -md64m -mc63:128t -mt1 67056 bytes -9477 bytes (-12.38%)
LZMA2 (Wikipedia) xz xz -9 67948 bytes -8585 bytes (-11.22%)
Brotli (Wikipedia) brotli brotli -q 11 68140 bytes -8393 bytes (-10.97%)
PPMd (Wikipedia) 7zip 7za a -mx=9 -m0=ppmd 70100 bytes -6433 bytes (-8.41%)
Zstandard (Wikipedia) zstd zstd -19 73390 bytes -3143 bytes (-4.11%)
Burrows-Wheeler transform (Wikipedia) bzip2 bzip2 -9 76084 bytes -449 bytes (-0.59%)

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.