diff --git a/Node/clusterpi.js b/Node/clusterpi.js
new file mode 100644
index 0000000000000000000000000000000000000000..61b49af5ce9c5ccaf873149d5b0fdaf1b316da70
--- /dev/null
+++ b/Node/clusterpi.js
@@ -0,0 +1,57 @@
+//
+// clusterpi.js
+// Neil Gershenfeld 11/23/18
+// pi calculation benchmark
+// pi = 3.14159265358979323846
+//
+const cluster = require('cluster')
+const points = 1e8
+if (cluster.isMaster) 
+   master()
+else
+   child()
+function master() {
+   var processes = require('os').cpus().length
+   var tstart = Date.now()/1000
+   for (var i = 0; i < processes; i++)
+      cluster.fork()
+   var index = 0
+   var pi = 0
+   var results = 0
+   for (const id in cluster.workers) {
+      var worker = cluster.workers[id]
+      worker.on('message',(result) => {
+         pi += result
+         results += 1
+         if (results == processes) {
+            var tend = Date.now()/1000
+            var mflops = (processes*points)*5.0*1e-6/(tend-tstart);
+            console.log('pi: '+pi)
+            console.log('time: '+(tend-tstart).toFixed(1)+'s')
+            console.log('processes: '+processes)
+            console.log('estimated MFlops: '+mflops.toFixed(1))
+            process.exit()
+            }
+         })
+      function send(index) {
+         return function() {
+            worker.send(index)
+            }
+         }
+      worker.on('online',send(index))
+      index += 1
+      }
+   }
+function child() { 
+   process.on('message',(index) => {
+      var a = 0.5
+      var b = 0.75
+      var c = 0.25
+      var sum = 0
+      var start = 1+points*index
+      var end = points*(index+1)
+      for (var i = start; i <= end; ++i)
+         sum += a/((i-b)*(i-c))
+      process.send(sum)
+      })
+   }
diff --git a/README.md b/README.md
index 7a90a824684b949c56502357c1eab63536d249e0..edfb9ebdf86209a69911982cef8cdb1aa6cacc5b 100644
--- a/README.md
+++ b/README.md
@@ -9,6 +9,7 @@
 |9.371|[pi.c](C/pi.c)|C<br>gcc pi.c -o pi -lm -O3 -ffast-math|Intel i7-8700T|Nov 17, 2018|
 |3.734|[pi.html](https://pub.pages.cba.mit.edu/pi/JavaScript/pi.html)|JavaScript, 1 worker|Intel i7-8700T|Nov 17, 2018|
 |3.472|[pi.html](https://pub.pages.cba.mit.edu/pi/JavaScript/pi.html)|JavaScript, 1 worker|Intel 2x E5-2680|Nov 19, 2018|
+|3.007|[clusterpi.js](Node/clusterpi.js)|Node, 12 processes|Intel 2x E5-2680|Nov 24, 2018|
 |0.573|[pi.c](C/pi.c)|C<br>gcc pi.c -o pi -lm|Intel i7-8700T|Nov 17, 2018|
 |0.470|[numpi.py](Python/numpi.py)|Python, NumPy|Intel i7-8700T|Nov 17, 2018|
 |0.029|[pi.py](Python/pi.py)|Python|Intel i7-8700T|Nov 17, 2018|