Choose a version:
45% The original file has 336396 bytes (328.5k) and is available from the project website.
There you can find the official minified version, too, which brings down the size to 151125 bytes (147.6k, 45%).

After GZIP compression these minified files vary in size:
Boot
  60914 bytes (59.5k)
CDN
jsdelivr
  60914 bytes (59.5k)
CDN
cdnjs
  53777 bytes (52.5k)
CDN
unpkg
  53491 bytes (52.2k)
CDN
gzip -6 (default)
  53359 bytes (52.1k)
local copy
gzip -9
  53204 bytes (52.0k)
local copy
libdeflate -12
  51520 bytes (50.3k)
local copy
7zip -mx=9 -tgzip
  51482 bytes (50.3k)
local copy
zultra
  51482 bytes (50.3k)
local copy
pigz -11 -n
  51172 bytes (50.0k)
local copy
kzip -s0 -rn -b7
  51167 bytes (50.0k)
local copy
Zopfli
  51109 bytes (49.9k)
local copy
Zopfli (defluff)
  51106 bytes (49.9k)
local copy

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

You will automatically get the smallest D3 3.5.5 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 2382 bytes by using my D3 3.5.5 Zopfli version instead of the best available CDN (4.66% smaller than unpkg, 51109 vs. 53491 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 --i100000 --mb8 --mls32768 --bsr40 --lazy --ohh

(found December 22, 2015)
Description Value Parameter
iterations 100000  --i100000
maximum blocks 8  --mb8
maximum length score 32768  --mls32768
block splitting recursion 40  --bsr40
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 (51106 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/v3.5.5/d3.min.js --location | md5sum
5936da7688d010c60aaf8374f90fcc2b  -
curl --silent --compressed https://minime.stephan-brumme.com/files/d3/d3-3.5.5.min.zopfli.js.gz | md5sum
5936da7688d010c60aaf8374f90fcc2b  -

SHA1:
curl --silent --compressed https://raw.githubusercontent.com/mbostock/d3/v3.5.5/d3.min.js --location | sha1sum
751927cc0f71697c6b6f680192ac84a6d7ff3787  -
curl --silent --compressed https://minime.stephan-brumme.com/files/d3/d3-3.5.5.min.zopfli.js.gz | sha1sum
751927cc0f71697c6b6f680192ac84a6d7ff3787  -

All listed CDNs deliver identical contents:
CDN Size (compressed) MD5 (uncompressed) Timestamp
Boot 60914 bytes 5936da7688d010c60aaf8374f90fcc2b (invalid)
jsdelivr 60914 bytes 5936da7688d010c60aaf8374f90fcc2b (invalid)
cdnjs 53777 bytes 5936da7688d010c60aaf8374f90fcc2b (invalid)
unpkg 53491 bytes 5936da7688d010c60aaf8374f90fcc2b July 11, 2016 @ 16:30

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
51109 bytes -2 bytes zopfli --i100000 --mls32768 --bsr40 --lazy --ohh December 22, 2015 @ 17:51
51111 bytes -6 bytes zopfli --i10000 --mls32768 --bsr40 --lazy --ohh October 14, 2015 @ 01:12
51117 bytes -7 bytes zopfli --i1000 --mls32768 --bsr40 --lazy --ohh October 13, 2015 @ 18:37
51124 bytes -7 bytes zopfli --i10000 --mls256 --bsr16 --lazy --ohh September 21, 2015 @ 08:56
51131 bytes -13 bytes zopfli --i1000 --mls256 --bsr16 --lazy --ohh September 19, 2015 @ 00:06
51144 bytes -5 bytes zopfli --i1000 --mls256 --bsr12 --lazy --ohh September 19, 2015 @ 00:04
51149 bytes zopfli --i100 --mls32768 --bsr16 --lazy --ohh September 18, 2015 @ 20:49

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 @ 13:07.

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 or 100,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
51259 51265 51295 51269 51299 51339 51281 51300 51241 51379 51381 51274 51397 51269 51393
51137 51186 51188 51196 51182 51169 51206 51180 51234 51168 51391 51275 51248 51155 51384
51187 51206 51213 51248 51238 51175 51256 51196 51149 51143 51226 51262 51230 51155 51387
51178 51245 51175 51154 51227 51201 51167 51166 51157 51143 51238 51245 51260 51156 51146
51184 51154 51226 51214 51234 51162 51179 51219 51139 51394 51392 51260 51397 51136 51139
51197 51230 51225 51318 51231 51154 51216 51161 51252 51166 51230 51246 51383 51136 51166
51205 51222 51226 51234 51160 51164 51215 51213 51145 51229 51222 51256 51383 51145 51152
51198 51157 51226 51322 51221 51182 51324 51151 51151 51151 51240 51250 51220 51141 51138
51200 51224 51147 51325 51237 51173 51241 51140 51154 51149 51239 51260 51236 51157 51136
51176 51221 51224 51186 51229 51219 51179 51216 51147 51136 51236 51245 51220 51154 51140
51199 51216 51206 51324 51232 51188 51148 51205 51145 51146 51248 51228 51243 51139 51177
51182 51219 51163 51213 51235 51149 51166 51203 51153 51153 51233 51253 51396 51149 51135
51202 51202 51230 51199 51232 51233 51326 51124 51158 51143 51252 51246 51243 51149 51132
51226 51151 51226 51323 51232 51241 51326 51138 51142 51153 51249 51246 51236 51141 51148
51198 51225 51210 51220 51237 51242 51319 51202 51157 51150 51249 51254 51234 51141 51384
51223 51214 51210 51323 51234 51165 51323 51233 51160 51154 51249 51256 51238 51137 51153
51225 51222 51225 51323 51232 51238 51233 51163 51154 51148 51249 51251 51242 51136 51142
51196 51223 51227 51324 51232 51155 51324 51164 51154 51148 51250 51253 51245 51139 51153
51198 51198 51206 51322 51209 51169 51324 51174 51152 51152 51224 51252 51236 51140 51153
51206 51211 51215 51151 51237 51242 51200 51165 51153 51145 51248 51248 51243 51142 51139
51198 51220 51200 51211 51233 51167 51199 51163 51155 51156 51249 51245 51236 51139 51150
51200 51222 51201 51221 51235 51200 51211 51233 51150 51151 51251 51261 51243 51142 51146
51184 51223 51211 51233 51231 51242 51324 51123 51155 51151 51253 51250 51385 51142 51109

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 51126 bytes 100%
1,000 51117 bytes -9 bytes 100%
10,000 51111 bytes -6 bytes 100%
100,000 51109 bytes -2 bytes 0.29%
1,000,000
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
51424 bytes +315 bytes (+0.62%) +257 bytes
51423 bytes +314 bytes (+0.61%) +256 bytes
51433 bytes +324 bytes (+0.63%) +266 bytes
51370 bytes +261 bytes (+0.51%) +203 bytes
51312 bytes +203 bytes (+0.40%) +145 bytes
51312 bytes +203 bytes (+0.40%) +145 bytes
51214 bytes +105 bytes (+0.21%) +47 bytes
51167 bytes +58 bytes (+0.11%)
51187 bytes +78 bytes (+0.15%) +20 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 40774 bytes -10335 bytes (-20.22%)
RAR (proprietary) RAR rar a -m5 -md64m -mc63:128t -mt1 43401 bytes -7708 bytes (-15.08%)
PPMd (Wikipedia) 7zip 7za a -mx=9 -m0=ppmd 44444 bytes -6665 bytes (-13.04%)
Brotli (Wikipedia) brotli brotli -q 11 46143 bytes -4966 bytes (-9.72%)
LZMA2 (Wikipedia) xz xz -9 46880 bytes -4229 bytes (-8.27%)
Burrows-Wheeler transform (Wikipedia) bzip2 bzip2 -9 48833 bytes -2276 bytes (-4.45%)
Zstandard (Wikipedia) zstd zstd -19 49427 bytes -1682 bytes (-3.29%)

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.