diff --git a/core/base-service/base.js b/core/base-service/base.js
index fc1f881aac76237e6c0ef582eb9c160c75870001..6904a113422cb05626ec230beece5860d37799fe 100644
--- a/core/base-service/base.js
+++ b/core/base-service/base.js
@@ -47,10 +47,6 @@ const optionalStringWhenNamedLogoPresent = Joi.alternatives().conditional(
   },
 )
 
-const optionalNumberWhenAnyLogoPresent = Joi.alternatives()
-  .conditional('namedLogo', { is: Joi.string().required(), then: Joi.number() })
-  .conditional('logoSvg', { is: Joi.string().required(), then: Joi.number() })
-
 const serviceDataSchema = Joi.object({
   isError: Joi.boolean(),
   label: Joi.string().allow(''),
@@ -66,7 +62,6 @@ const serviceDataSchema = Joi.object({
   logoSvg: Joi.string(),
   logoColor: optionalStringWhenNamedLogoPresent,
   logoSize: optionalStringWhenNamedLogoPresent,
-  logoWidth: optionalNumberWhenAnyLogoPresent,
   cacheSeconds: Joi.number().integer().min(0),
   style: Joi.string(),
 })
diff --git a/core/base-service/coalesce-badge.js b/core/base-service/coalesce-badge.js
index 09803310b290f7fe512f4cd81021091360437b70..b988231f4262ccbdaa442ae941a8771db141314e 100644
--- a/core/base-service/coalesce-badge.js
+++ b/core/base-service/coalesce-badge.js
@@ -20,7 +20,7 @@ import toArray from './to-array.js'
 // 1. When `?logo=` contains a simple-icons logo or contains a base64-encoded
 //    SVG, that logo is used. When a `&logoColor=` is specified, that color is
 //    used (except for the base64-encoded logos). Otherwise the default color
-//    is used. The appearance of the logo can be customized using `logoWidth`,
+//    is used.
 //    When `?logo=` is specified, any logo-related parameters specified
 //    dynamically by the service, or by default in the service, are ignored.
 // 2. The second precedence is the dynamic logo returned by a service. This is
@@ -52,11 +52,7 @@ export default function coalesceBadge(
     colorB: legacyOverrideColor,
     colorA: legacyOverrideLabelColor,
   } = overrides
-  let {
-    logoWidth: overrideLogoWidth,
-    color: overrideColor,
-    labelColor: overrideLabelColor,
-  } = overrides
+  let { color: overrideColor, labelColor: overrideLabelColor } = overrides
 
   // Only use the legacy properties if the new ones are not provided
   if (typeof overrideColor === 'undefined') {
@@ -73,7 +69,6 @@ export default function coalesceBadge(
   if (typeof overrideLabelColor === 'number') {
     overrideLabelColor = `${overrideLabelColor}`
   }
-  overrideLogoWidth = +overrideLogoWidth || undefined
 
   const {
     isError,
@@ -85,7 +80,6 @@ export default function coalesceBadge(
     namedLogo: serviceNamedLogo,
     logoColor: serviceLogoColor,
     logoSize: serviceLogoSize,
-    logoWidth: serviceLogoWidth,
     link: serviceLink,
     cacheSeconds: serviceCacheSeconds,
     style: serviceStyle,
@@ -131,7 +125,6 @@ export default function coalesceBadge(
     // If the logo has been overridden it does not make sense to inherit the
     // original width or position.
     logoSize = overrideLogoSize
-    logoWidth = overrideLogoWidth
   } else {
     if (serviceLogoSvg) {
       logoSvgBase64 = svg2base64(serviceLogoSvg)
@@ -143,12 +136,11 @@ export default function coalesceBadge(
       namedLogoColor = coalesce(overrideLogoColor, serviceLogoColor)
     }
     logoSize = coalesce(overrideLogoSize, serviceLogoSize)
-    logoWidth = coalesce(overrideLogoWidth, serviceLogoWidth)
   }
   if (namedLogo) {
     const iconSize = getIconSize(String(namedLogo).toLowerCase())
 
-    if (!logoWidth && iconSize && logoSize === 'auto') {
+    if (iconSize && logoSize === 'auto') {
       logoWidth = (iconSize.width / iconSize.height) * DEFAULT_LOGO_HEIGHT
     }
 
diff --git a/core/base-service/coalesce-badge.spec.js b/core/base-service/coalesce-badge.spec.js
index a98f05debd24f6aac2e3287ca5f43abcb81e61ad..425e45aff0c2dc26560f5e10e6bc243aed66f4c4 100644
--- a/core/base-service/coalesce-badge.spec.js
+++ b/core/base-service/coalesce-badge.spec.js
@@ -185,7 +185,6 @@ describe('coalesceBadge', function () {
           {
             namedLogo: 'appveyor',
             logoColor: 'red',
-            logoWidth: 100,
           },
           {},
         ).logo,
@@ -246,20 +245,6 @@ describe('coalesceBadge', function () {
     })
   })
 
-  describe('Logo width', function () {
-    it('overrides the logoWidth', function () {
-      expect(coalesceBadge({ logoWidth: 20 }, {}, {})).to.include({
-        logoWidth: 20,
-      })
-    })
-
-    it('applies the logo width', function () {
-      expect(
-        coalesceBadge({}, { namedLogo: 'npm', logoWidth: 275 }, {}),
-      ).to.include({ logoWidth: 275 })
-    })
-  })
-
   describe('Links', function () {
     it('overrides the links', function () {
       expect(
diff --git a/core/base-service/legacy-request-handler.js b/core/base-service/legacy-request-handler.js
index 83a78fd3fa6e37e4b280001f9c02f66e2ba6dffc..3a44642c1240ccbe3f67d5db33a254500a1a5d9c 100644
--- a/core/base-service/legacy-request-handler.js
+++ b/core/base-service/legacy-request-handler.js
@@ -12,7 +12,6 @@ const globalQueryParams = new Set([
   'logo',
   'logoColor',
   'logoSize',
-  'logoWidth',
   'link',
   'colorA',
   'colorB',
diff --git a/services/endpoint-common.js b/services/endpoint-common.js
index 919667655e2f29b1bf9e323d6e4f148f9204277e..1cc0d7c1d0fe2009ae6e6776739905f4738745d4 100644
--- a/services/endpoint-common.js
+++ b/services/endpoint-common.js
@@ -36,7 +36,6 @@ const endpointSchema = Joi.object({
   logoSvg: Joi.string(),
   logoColor: optionalStringWhenNamedLogoPresent,
   logoSize: optionalStringWhenNamedLogoPresent,
-  logoWidth: optionalNumberWhenAnyLogoPresent,
   style: Joi.string(),
   cacheSeconds: Joi.number().integer().min(0),
   /*
@@ -45,6 +44,7 @@ const endpointSchema = Joi.object({
   passing it should not throw an error
   */
   logoPosition: optionalNumberWhenAnyLogoPresent,
+  logoWidth: optionalNumberWhenAnyLogoPresent,
 })
   // `namedLogo` or `logoSvg`; not both.
   .oxor('namedLogo', 'logoSvg')
diff --git a/services/endpoint/endpoint.service.js b/services/endpoint/endpoint.service.js
index ba7bdfdcfdf3924bdc0298f9707cb8c5838e93c7..45860c6ccdc4ffa3ee28ccde8d0733d947eaf80b 100644
--- a/services/endpoint/endpoint.service.js
+++ b/services/endpoint/endpoint.service.js
@@ -101,13 +101,6 @@ The endpoint badge takes a single required query param: <code>url</code>, which
         Supported for simple-icons logos only.
       </td>
     </tr>
-      <tr>
-        <td><code>logoWidth</code></td>
-        <td>
-          Default: none. Same meaning as the query string. Can be overridden by
-          the query string.
-        </td>
-      </tr>
       <tr>
         <td><code>style</code></td>
         <td>
@@ -156,7 +149,6 @@ export default class Endpoint extends BaseJsonService {
     logoSvg,
     logoColor,
     logoSize,
-    logoWidth,
     style,
     cacheSeconds,
   }) {
@@ -170,7 +162,6 @@ export default class Endpoint extends BaseJsonService {
       logoSvg,
       logoColor,
       logoSize,
-      logoWidth,
       style,
       // don't allow the user to set cacheSeconds any shorter than this._cacheLength
       cacheSeconds: Math.max(
diff --git a/services/endpoint/endpoint.tester.js b/services/endpoint/endpoint.tester.js
index 4cbaf2747aa7febae253deb464f2bc5fdd079c0a..464833fafb9b42aece356cb78e07314e321f55e0 100644
--- a/services/endpoint/endpoint.tester.js
+++ b/services/endpoint/endpoint.tester.js
@@ -118,6 +118,8 @@ t.create('custom svg logo')
     expect(body).to.include(getSimpleIcon({ name: 'npm' }))
   })
 
+// The logoWidth param was removed, but passing it should not
+// throw a validation error. It should just do nothing.
 t.create('logoWidth')
   .get('.json?url=https://example.com/badge')
   .intercept(nock =>
@@ -132,7 +134,6 @@ t.create('logoWidth')
   .expectBadge({
     label: 'hey',
     message: 'yo',
-    logoWidth: 30,
   })
 
 // The logoPosition param was removed, but passing it should not