diff --git a/Makefile b/Makefile
index bf8ef2ca08e4a7e8f930c9be65d6bbff9a5d6a63..2c3c7bd91684a67ade4c913eb86518d4c266603e 100644
--- a/Makefile
+++ b/Makefile
@@ -8,10 +8,7 @@ FRONTEND_TMP=${TMPDIR}shields-frontend-deploy
 # pushing secrets to GitHub, this branch is configured to reject pushes.
 WORKING_BRANCH=server-deploy-working-branch
 
-all: website test
-
-website:
-	npm run build
+all: test
 
 deploy: deploy-s0 deploy-s1 deploy-s2 clean-server-deploy deploy-gh-pages deploy-gh-pages-clean
 
@@ -19,9 +16,11 @@ deploy-s0: prepare-server-deploy push-s0
 deploy-s1: prepare-server-deploy push-s1
 deploy-s2: prepare-server-deploy push-s2
 
-prepare-server-deploy: website
+prepare-server-deploy:
 	# Ship a copy of the front end to each server for debugging.
 	# https://github.com/badges/shields/issues/1220
+	INCLUDE_DEV_PAGES=false \
+		npm run build
 	rm -rf ${SERVER_TMP}
 	git worktree prune
 	git worktree add -B ${WORKING_BRANCH} ${SERVER_TMP}
@@ -49,6 +48,7 @@ deploy-gh-pages:
 	rm -rf ${FRONTEND_TMP}
 	git worktree prune
 	GATSBY_BASE_URL=https://img.shields.io \
+		INCLUDE_DEV_PAGES=false \
 		npm run build
 	git worktree add -B gh-pages ${FRONTEND_TMP}
 	git -C ${FRONTEND_TMP} ls-files | xargs git -C ${FRONTEND_TMP} rm
@@ -67,4 +67,4 @@ deploy-gh-pages-clean:
 test:
 	npm test
 
-.PHONY: all website deploy prepare-server-deploy clean-server-deploy deploy-s0 deploy-s1 deploy-s2 push-s0 push-s1 push-s2 deploy-gh-pages deploy-gh-pages-clean deploy-heroku setup redis test
+.PHONY: all deploy prepare-server-deploy clean-server-deploy deploy-s0 deploy-s1 deploy-s2 push-s0 push-s1 push-s2 deploy-gh-pages deploy-gh-pages-clean deploy-heroku setup redis test
diff --git a/frontend/components/development/logo-page.js b/frontend/components/development/logo-page.js
new file mode 100644
index 0000000000000000000000000000000000000000..44894dad1132a07a690defd07d251e298a79eb38
--- /dev/null
+++ b/frontend/components/development/logo-page.js
@@ -0,0 +1,69 @@
+import React from 'react'
+import PropTypes from 'prop-types'
+import styled from 'styled-components'
+import { staticBadgeUrl } from '../../lib/badge-url'
+import { baseUrl } from '../../constants'
+import Meta from '../meta'
+import Header from '../header'
+import { H3, Badge } from '../common'
+import { shieldsLogos, simpleIcons } from '../../../supported-features.json'
+
+const StyledTable = styled.table`
+  border: 1px solid #ccc;
+  border-collapse: collapse;
+
+  td {
+    border: 1px solid #ccc;
+    padding: 3px;
+    text-align: left;
+  }
+`
+
+const NamedLogoTable = ({ logoNames }) => (
+  <StyledTable>
+    <thead>
+      <tr>
+        <td>Flat</td>
+        <td>Social</td>
+      </tr>
+    </thead>
+    <tbody>
+      {logoNames.map(name => (
+        <tr key={name}>
+          <td>
+            <Badge
+              src={staticBadgeUrl(baseUrl, 'named logo', name, 'blue', {
+                logo: name,
+              })}
+              alt={`logo: ${name}`}
+            />
+          </td>
+          <td>
+            <Badge
+              src={staticBadgeUrl(baseUrl, 'Named Logo', name, 'blue', {
+                logo: name,
+                style: 'social',
+              })}
+              alt={`logo: ${name}`}
+            />
+          </td>
+        </tr>
+      ))}
+    </tbody>
+  </StyledTable>
+)
+NamedLogoTable.propTypes = {
+  logoNames: PropTypes.arrayOf(PropTypes.string).isRequired,
+}
+
+const LogoPage = () => (
+  <div>
+    <Meta />
+    <Header />
+    <H3>Named logos</H3>
+    <NamedLogoTable logoNames={shieldsLogos} />
+    <H3>Simple-icons</H3>
+    <NamedLogoTable logoNames={simpleIcons} />
+  </div>
+)
+export default LogoPage
diff --git a/frontend/components/usage.js b/frontend/components/usage.js
index 313c0231f2547054c67da624d8edd1cb1ba824a8..7a88c2fef0f23bb1dadab267c1370fa21a2b3f46 100644
--- a/frontend/components/usage.js
+++ b/frontend/components/usage.js
@@ -3,7 +3,7 @@ import { Link } from 'gatsby'
 import PropTypes from 'prop-types'
 import styled from 'styled-components'
 import { staticBadgeUrl } from '../lib/badge-url'
-import { advertisedStyles, logos } from '../../supported-features.json'
+import { advertisedStyles, shieldsLogos } from '../../supported-features.json'
 import StaticBadgeMaker from './static-badge-maker'
 import DynamicBadgeMaker from './dynamic-badge-maker'
 import { H2, H3, Badge, VerticalSpace } from './common'
@@ -110,7 +110,7 @@ export default class Usage extends React.PureComponent {
 
   static renderNamedLogos() {
     const renderLogo = logo => <LogoName key={logo}>{logo}</LogoName>
-    const [first, ...rest] = logos
+    const [first, ...rest] = shieldsLogos
     return [renderLogo(first)].concat(
       rest.reduce((result, logo) => result.concat([', ', renderLogo(logo)]), [])
     )
diff --git a/gatsby-node.js b/gatsby-node.js
index 68e575a682fd304577517310ad24cbe12baa5465..929e2e6a7783703ea8b0b06d5224baeb0058b468 100644
--- a/gatsby-node.js
+++ b/gatsby-node.js
@@ -8,6 +8,9 @@
 
 const fs = require('fs')
 const yaml = require('js-yaml')
+const envFlag = require('node-env-flag')
+
+const includeDevPages = envFlag(process.env.INCLUDE_DEV_PAGES, true)
 
 const { categories } = yaml.safeLoad(
   fs.readFileSync('./service-definitions.yml', 'utf8')
@@ -17,6 +20,13 @@ const { categories } = yaml.safeLoad(
 // unnecessary complexity here, so this uses the programmatic API.
 // https://www.gatsbyjs.org/docs/using-gatsby-without-graphql/#the-approach-fetch-data-and-use-gatsbys-createpages-api
 async function createPages({ actions: { createPage } }) {
+  if (includeDevPages) {
+    createPage({
+      path: '/dev/logos',
+      component: require.resolve('./frontend/components/development/logo-page'),
+    })
+  }
+
   categories.forEach(category => {
     const { id } = category
     createPage({
diff --git a/scripts/export-supported-features-cli.js b/scripts/export-supported-features-cli.js
index 19fd67d5276729ae8622b39bda9d1dc3f927b83e..40a93e0af110e395feb3dc10cfe0d4fb7c70afe4 100644
--- a/scripts/export-supported-features-cli.js
+++ b/scripts/export-supported-features-cli.js
@@ -1,12 +1,17 @@
 'use strict'
 
-const path = require('path')
-const glob = require('glob')
+const logos = require('../lib/load-logos')()
+const simpleIcons = require('../lib/load-simple-icons')()
+
+const shieldsLogos = Object.keys(logos)
+
+const simpleIconSet = new Set(Object.keys(simpleIcons))
+shieldsLogos.forEach(logo => simpleIconSet.delete(logo))
+const simpleIconNames = Array.from(simpleIconSet)
 
 const supportedFeatures = {
-  logos: glob
-    .sync(`${__dirname}/../logo/*.svg`)
-    .map(filename => path.basename(filename, '.svg')),
+  shieldsLogos,
+  simpleIcons: simpleIconNames,
   advertisedStyles: [
     'plastic',
     'flat',