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

After GZIP compression these minified files vary in size:
unpkg
  108991 bytes (106.4k)
CDN
Boot
  89314 bytes (87.2k)
CDN
cdnjs
  89314 bytes (87.2k)
CDN
gzip -6 (default)
  88807 bytes (86.7k)
local copy
gzip -9
  88523 bytes (86.4k)
local copy
libdeflate -12
  84945 bytes (83.0k)
local copy
7zip -mx=9 -tgzip
  84636 bytes (82.7k)
local copy
kzip -s0 -rn -b7
  84478 bytes (82.5k)
local copy
zultra
  84264 bytes (82.3k)
local copy
pigz -11 -n
  84144 bytes (82.2k)
local copy
Zopfli
  84043 bytes (82.1k)
local copy
Zopfli (defluff)
  84040 bytes (82.1k)
local copy

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

You will automatically get the smallest D3 6.7.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 5271 bytes by using my D3 6.7.0 Zopfli version instead of the best available CDN (6.27% smaller than cdnjs, 84043 vs. 89314 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 --bsr14 --lazy --ohh

(found April 21, 2021)
Description Value Parameter
iterations 1000000  --i1000000
maximum blocks 8  --mb8
maximum length score 16384  --mls16384
block splitting recursion 14  --bsr14
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 (84040 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.7.0/d3.zip --location | md5sum
5fa4aade6937f0a39534e52332561c1e  -
curl --silent --compressed https://minime.stephan-brumme.com/files/d3/d3-6.7.0.min.zopfli.js.gz | md5sum
5fa4aade6937f0a39534e52332561c1e  -

SHA1:
curl --silent --compressed https://raw.githubusercontent.com/mbostock/d3/v6.7.0/d3.zip --location | sha1sum
53feca8536c5b8bd78cb93ae3b9c3a24009199f6  -
curl --silent --compressed https://minime.stephan-brumme.com/files/d3/d3-6.7.0.min.zopfli.js.gz | sha1sum
53feca8536c5b8bd78cb93ae3b9c3a24009199f6  -

All listed CDNs deliver identical contents:
CDN Size (compressed) MD5 (uncompressed) Timestamp
unpkg 108991 bytes 5fa4aade6937f0a39534e52332561c1e (invalid)
Boot 89314 bytes 5fa4aade6937f0a39534e52332561c1e April 16, 2021 @ 15:49
cdnjs 89314 bytes 5fa4aade6937f0a39534e52332561c1e April 16, 2021 @ 15:49

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
84043 bytes -7 bytes zopfli --i1000000 --mls16384 --bsr14 --lazy --ohh April 21, 2021 @ 01:17
84050 bytes -1 byte zopfli --i100000 --mls16384 --bsr14 --lazy --ohh April 20, 2021 @ 14:49
84051 bytes -3 bytes zopfli --i100000 --mls16384 --bsr12 --lazy --ohh April 20, 2021 @ 13:38
84054 bytes -10 bytes zopfli --i10000 --mls16384 --bsr14 --lazy --ohh April 19, 2021 @ 20:14
84064 bytes -1 byte zopfli --i1000 --mls8192 --bsr19 --lazy --ohh April 19, 2021 @ 19:12
84065 bytes -5 bytes zopfli --i1000 --mls8192 --bsr6 --lazy --ohh April 19, 2021 @ 19:11
84070 bytes -18 bytes zopfli --i1000 --mls8192 --bsr4 --lazy --ohh April 19, 2021 @ 19:11
84088 bytes -9 bytes zopfli --i1000 --mls32768 --bsr6 --lazy --ohh April 19, 2021 @ 19:11
84097 bytes zopfli --i100 --mls8192 --bsr6 --lazy --ohh April 19, 2021 @ 19:07

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

Most recent activity on April 21, 2021 @ 11:09.

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
84354 84537 84711 84676 84716 84717 84666 84484 84480 84517 84284 84340 84243 84313 84355
84334 84326 84719 84716 84328 84325 84354 84325 84730 84144 84149 84350 84057 84079 84195
84172 84165 84313 84333 84122 84290 84111 84091 84102 84103 84120 84094 84051 84110 84080
84319 84325 84451 84363 84290 84329 84288 84296 84307 84143 84088 84091 84301 84069 84244
84478 84468 84437 84424 84234 84219 84229 84099 84194 84108 84140 84087 84116 84089 84129
84480 84324 84333 84316 84097 84110 84106 84092 84188 84104 84132 84097 84225 84060 84100
84318 84325 84321 84311 84097 84287 84087 84086 84188 84086 84108 84087 84217 84078 84161
84337 84339 84292 84315 84087 84298 84291 84091 84162 84127 84112 84090 84220 84056 84104
84553 84389 84330 84310 84295 84286 84093 84093 84295 84086 84083 84110 84226 84051 84104
84319 84327 84444 84311 84090 84297 84084 84087 84187 84088 84089 84103 84223 84086 84252
84320 84330 84328 84309 84319 84080 84091 84086 84287 84102 84117 84238 84226 84043 84253
84319 84312 84314 84313 84281 84290 84082 84087 84304 84094 84101 84089 84208 84240 84252
84320 84327 84321 84316 84105 84309 84085 84086 84188 84082 84118 84219 84213 84181 84486
84330 84341 84325 84316 84290 84323 84102 84085 84191 84084 84099 84285 84215 84179 84250
84321 84329 84448 84314 84309 84281 84097 84090 84087 84085 84118 84289 84213 84179 84481
84319 84314 84309 84320 84281 84281 84092 84098 84079 84084 84087 84282 84055 84178 84251
84319 84323 84315 84313 84303 84089 84093 84090 84189 84093 84093 84283 84216 84189 84253
84319 84326 84313 84314 84090 84303 84277 84094 84188 84092 84091 84104 84223 84199 84255
84318 84342 84327 84312 84305 84280 84274 84092 84358 84089 84093 84093 84217 84213 84252
84320 84329 84329 84313 84292 84282 84087 84087 84299 84087 84096 84285 84217 84179 84254
84320 84327 84331 84307 84288 84279 84279 84097 84095 84086 84088 84288 84216 84217 84252
84322 84328 84312 84318 84091 84289 84085 84092 84188 84090 84092 84290 84222 84184 84278
84306 84414 84321 84309 84306 84280 84281 84092 84190 84089 84094 84283 84326 84188 84483

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 84097 bytes 100%
1,000 84064 bytes -33 bytes 100%
10,000 84054 bytes -10 bytes 100%
100,000 84050 bytes -4 bytes 0.87%
1,000,000 84043 bytes -7 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
84504 bytes +461 bytes (+0.55%) +26 bytes
85892 bytes +1849 bytes (+2.20%) +1414 bytes
85728 bytes +1685 bytes (+2.00%) +1250 bytes
84497 bytes +454 bytes (+0.54%) +19 bytes
84512 bytes +469 bytes (+0.56%) +34 bytes
84500 bytes +457 bytes (+0.54%) +22 bytes
84507 bytes +464 bytes (+0.55%) +29 bytes
84478 bytes +435 bytes (+0.52%)
84489 bytes +446 bytes (+0.53%) +11 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 65738 bytes -18305 bytes (-21.78%)
RAR (proprietary) RAR rar a -m5 -md64m -mc63:128t -mt1 73142 bytes -10901 bytes (-12.97%)
LZMA2 (Wikipedia) xz xz -9 74304 bytes -9739 bytes (-11.59%)
Brotli (Wikipedia) brotli brotli -q 11 74521 bytes -9522 bytes (-11.33%)
PPMd (Wikipedia) 7zip 7za a -mx=9 -m0=ppmd 75026 bytes -9017 bytes (-10.73%)
Zstandard (Wikipedia) zstd zstd -19 80187 bytes -3856 bytes (-4.59%)
Burrows-Wheeler transform (Wikipedia) bzip2 bzip2 -9 82985 bytes -1058 bytes (-1.26%)

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.