diff --git a/package-lock.json b/package-lock.json
index e634ee3cad10fa24fd8667f83fd20db358edb5f4..b358844154e359dba2b32d7288d449b6b896e233 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -8503,6 +8503,38 @@
         }
       }
     },
+    "compression-webpack-plugin": {
+      "version": "7.1.2",
+      "resolved": "https://registry.npmjs.org/compression-webpack-plugin/-/compression-webpack-plugin-7.1.2.tgz",
+      "integrity": "sha512-9DKNW6ILLjx+bNBoviHDgLx6swBhWWH9ApClC9sTH2NoFfQM47BapQfovCm9zjD9v1uZwInF5a925FB9ErGQeQ==",
+      "dev": true,
+      "requires": {
+        "schema-utils": "^3.0.0",
+        "serialize-javascript": "^5.0.1"
+      },
+      "dependencies": {
+        "schema-utils": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz",
+          "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==",
+          "dev": true,
+          "requires": {
+            "@types/json-schema": "^7.0.6",
+            "ajv": "^6.12.5",
+            "ajv-keywords": "^3.5.2"
+          }
+        },
+        "serialize-javascript": {
+          "version": "5.0.1",
+          "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz",
+          "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==",
+          "dev": true,
+          "requires": {
+            "randombytes": "^2.1.0"
+          }
+        }
+      }
+    },
     "compute-scroll-into-view": {
       "version": "1.0.17",
       "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.17.tgz",
@@ -11357,6 +11389,14 @@
         }
       }
     },
+    "express-static-gzip": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/express-static-gzip/-/express-static-gzip-2.1.1.tgz",
+      "integrity": "sha512-J+xSzdr5lj1cIuZey0ac6nUv22VE7GrdwTERqE8DsrqSXLm1zjeYWTVbK37t8exGwobxBXeWU2bM7eSMjBR4YA==",
+      "requires": {
+        "serve-static": "^1.14.1"
+      }
+    },
     "expression-eval": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/expression-eval/-/expression-eval-2.1.0.tgz",
diff --git a/package.json b/package.json
index f8aaa0c092791eff75f674d480adcce18fce834a..66cdc9ee695b398a5a72632f870b636ea0410885 100644
--- a/package.json
+++ b/package.json
@@ -45,6 +45,7 @@
     "dotenv": "^8.2.0",
     "express": "^4.16.4",
     "express-openapi-validator": "^3.12.7",
+    "express-static-gzip": "^2.1.1",
     "flat": "^5.0.2",
     "googleapis": "^71.0.0",
     "immutable": "^4.0.0-rc.12",
@@ -98,6 +99,7 @@
     "babel-jest": "^25.1.0",
     "babel-loader": "^8.2.2",
     "clean-webpack-plugin": "^3.0.0",
+    "compression-webpack-plugin": "^7.1.2",
     "concurrently": "^5.3.0",
     "copy-webpack-plugin": "^7.0.0",
     "cross-env": "^7.0.0",
diff --git a/src/server/index.js b/src/server/index.js
index 574503310e958bc42bfbddf8a559975b82e3c430..f0eb438158f3208d04fdd425b14ee23de56cbbbc 100644
--- a/src/server/index.js
+++ b/src/server/index.js
@@ -5,6 +5,7 @@ import path from 'path'
 import bodyParser from 'body-parser'
 import axios from 'axios'
 import { has, castArray } from 'lodash'
+import expressStaticGzip from 'express-static-gzip'
 import {
   getResultCount,
   getPaginatedResults,
@@ -45,7 +46,8 @@ let publicPath = null
 if (!isDevelopment) {
   // The root directory from which to serve static assets
   publicPath = path.join(__dirname, './../public/')
-  app.use(express.static(publicPath))
+  // app.use(express.static(publicPath))
+  app.use('/', expressStaticGzip(publicPath))
 }
 
 // React app makes requests to these api urls
diff --git a/webpack.client.prod.js b/webpack.client.prod.js
index c6e5e909962320ba414807936eb0c06f366f6b73..b5533d686b3743e4b4e67f7bf6cb5d81017e82d8 100644
--- a/webpack.client.prod.js
+++ b/webpack.client.prod.js
@@ -1,6 +1,7 @@
 const webpack = require('webpack')
 const { merge } = require('webpack-merge')
 const CopyPlugin = require('copy-webpack-plugin')
+const CompressionPlugin = require('compression-webpack-plugin')
 const common = require('./webpack.client.common.js')
 
 module.exports = merge(common, {
@@ -26,6 +27,9 @@ module.exports = merge(common, {
           to: `${common.output.path}`
         }
       ]
+    }),
+    new CompressionPlugin({
+      test: /\.js(\?.*)?$/i
     })
   ]
 })