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

After GZIP compression these minified files vary in size:
unpkg
  102343 bytes (99.9k)
CDN
cdnjs
  89332 bytes (87.2k)
CDN
Boot
  89227 bytes (87.1k)
CDN
gzip -6 (default)
  88710 bytes (86.6k)
local copy
gzip -9
  88422 bytes (86.3k)
local copy
libdeflate -12
  84901 bytes (82.9k)
local copy
7zip -mx=9 -tgzip
  84515 bytes (82.5k)
local copy
kzip -s0 -rn -b7
  84394 bytes (82.4k)
local copy
zultra
  84182 bytes (82.2k)
local copy
pigz -11 -n
  84059 bytes (82.1k)
local copy
Zopfli
  83933 bytes (82.0k)
local copy
Zopfli (defluff)
  83931 bytes (82.0k)
local copy

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

You will automatically get the smallest D3 6.6.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 5294 bytes by using my D3 6.6.2 Zopfli version instead of the best available CDN (6.31% smaller than Boot, 83933 vs. 89227 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 --bsr9 --lazy --ohh

(found April 9, 2021)
Description Value Parameter
iterations 1000000  --i1000000
maximum blocks 8  --mb8
maximum length score 16384  --mls16384
block splitting recursion 9  --bsr9
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 (83931 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.6.2/d3.zip --location | md5sum
911ba346ff133608e2842d1f896ca8c8  -
curl --silent --compressed https://minime.stephan-brumme.com/files/d3/d3-6.6.2.min.zopfli.js.gz | md5sum
911ba346ff133608e2842d1f896ca8c8  -

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

All listed CDNs deliver identical contents:
CDN Size (compressed) MD5 (uncompressed) Timestamp
unpkg 102343 bytes 911ba346ff133608e2842d1f896ca8c8 (invalid)
cdnjs 89332 bytes 911ba346ff133608e2842d1f896ca8c8 March 29, 2021 @ 21:46
Boot 89227 bytes 911ba346ff133608e2842d1f896ca8c8 March 29, 2021 @ 21:35

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
83933 bytes -2 bytes zopfli --i1000000 --mls16384 --bsr9 --lazy --ohh April 9, 2021 @ 02:28
83935 bytes -7 bytes zopfli --i100000 --mls16384 --bsr9 --lazy --ohh April 8, 2021 @ 12:51
83942 bytes -12 bytes zopfli --i10000 --mls16384 --bsr9 --lazy --ohh April 6, 2021 @ 21:14
83954 bytes -30 bytes zopfli --i1000 --mls8192 --bsr22 --lazy --ohh April 6, 2021 @ 17:26
83984 bytes zopfli --i100 --mls16384 --bsr9 --lazy --ohh April 6, 2021 @ 16:59

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

Most recent activity on April 9, 2021 @ 07:01.

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
84262 84256 84360 84359 84362 84276 84415 84301 84402 84385 84205 84240 84179 84231 84302
84586 84578 84256 84243 84236 84231 84636 84062 84268 84056 84071 84260 84073 84003 84113
84090 84081 84288 84009 84036 84204 84030 84038 84211 84026 84051 84008 83993 83996 83985
84221 84223 84266 84247 84216 84244 84245 84243 84080 84042 84061 84089 84204 84006 84080
84337 84331 84370 84115 84157 84508 84094 84011 84118 84017 84058 84007 84017 84021 84021
84206 84243 84233 84222 84009 84231 83998 84123 84108 84002 83996 84031 83964 83933 84060
84214 84255 84243 84424 84012 84213 84200 84110 84107 84000 84055 84009 83968 83998 84058
84211 84218 84238 84419 84024 84220 84000 84009 84351 84003 84012 84010 84104 84094 84061
84061 84314 84244 84150 84011 84200 84197 84207 84208 84002 84138 84052 83968 84126 84218
84210 84220 84246 84206 84022 84207 84200 84203 84112 84003 84058 84011 84010 84037 84213
84200 84225 84246 84152 84005 84198 84005 84002 84211 84016 84115 84146 83974 84165 84216
84209 84207 84248 84216 84005 84205 84197 84207 84210 84031 84058 84088 83972 84162 84211
84210 84220 84414 84407 84227 84138 84002 84205 84115 83990 84023 84159 84136 84386 84219
84223 84222 84246 84215 84350 84217 83999 84122 84115 84020 84050 84199 84000 84091 84215
84205 84252 84223 84228 84214 84221 84209 84233 84110 84010 84052 84199 84326 84143 84211
84208 84221 84242 84220 84004 84221 83998 84205 84206 84037 83997 84194 84168 84095 84335
84233 84233 84227 84147 84355 84215 83999 84206 84110 84003 84003 84196 84104 84141 84095
84210 84209 84244 84213 84226 84207 84209 84112 84110 84006 84005 84012 83955 83947 84208
84212 84221 84244 84150 84024 84196 84003 84212 84278 84004 84007 84198 83939 84390 84159
84369 84217 84247 84431 84012 84205 84000 84202 84213 84007 84061 84196 84104 84094 84212
84364 84221 84245 84236 84011 84200 84003 84002 84215 84003 84116 84203 84119 84159 84208
84368 84225 84247 84229 84019 84213 84205 84205 84108 84008 84049 84208 84102 84098 84211
84351 84314 84329 84409 84227 84198 84001 84207 84210 84044 84005 84191 84096 84101 84209

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 83984 bytes 100%
1,000 83954 bytes -30 bytes 100%
10,000 83942 bytes -12 bytes 100%
100,000 83935 bytes -7 bytes 0.58%
1,000,000 83933 bytes -2 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
84418 bytes +485 bytes (+0.58%) +24 bytes
85798 bytes +1865 bytes (+2.22%) +1404 bytes
85638 bytes +1705 bytes (+2.03%) +1244 bytes
84417 bytes +484 bytes (+0.58%) +23 bytes
84423 bytes +490 bytes (+0.58%) +29 bytes
84416 bytes +483 bytes (+0.58%) +22 bytes
84424 bytes +491 bytes (+0.58%) +30 bytes
84394 bytes +461 bytes (+0.55%)
84410 bytes +477 bytes (+0.57%) +16 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 65604 bytes -18329 bytes (-21.84%)
RAR (proprietary) RAR rar a -m5 -md64m -mc63:128t -mt1 73055 bytes -10878 bytes (-12.96%)
LZMA2 (Wikipedia) xz xz -9 74196 bytes -9737 bytes (-11.60%)
Brotli (Wikipedia) brotli brotli -q 11 74353 bytes -9580 bytes (-11.41%)
PPMd (Wikipedia) 7zip 7za a -mx=9 -m0=ppmd 74946 bytes -8987 bytes (-10.71%)
Zstandard (Wikipedia) zstd zstd -19 80110 bytes -3823 bytes (-4.55%)
Burrows-Wheeler transform (Wikipedia) bzip2 bzip2 -9 82888 bytes -1045 bytes (-1.25%)

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.