diff --git a/lib/workers/repository/updates/branch-name.spec.ts b/lib/workers/repository/updates/branch-name.spec.ts
index ff816d07f18c6fe1afb0fb18e3e4865b0faecf75..115b60c7b1263cf31e08ba141a809348c8537f11 100644
--- a/lib/workers/repository/updates/branch-name.spec.ts
+++ b/lib/workers/repository/updates/branch-name.spec.ts
@@ -225,11 +225,11 @@ describe(getName(), () => {
         },
         {
           upgrade: { branchName: 'renovate/bad-branch-^-name3' },
-          expectedBranchName: 'renovate/bad-branch---name3',
+          expectedBranchName: 'renovate/bad-branch-name3',
         },
         {
           upgrade: { branchName: 'renovate/bad-branch-name : 4' },
-          expectedBranchName: 'renovate/bad-branch-name---4',
+          expectedBranchName: 'renovate/bad-branch-name-4',
         },
         {
           upgrade: { branchName: 'renovate/bad-branch-name5/' },
@@ -251,6 +251,14 @@ describe(getName(), () => {
           upgrade: { branchName: 'renovate/bad-branch-name9.' },
           expectedBranchName: 'renovate/bad-branch-name9',
         },
+        {
+          upgrade: { branchName: 'renovate/bad-branch--name10' },
+          expectedBranchName: 'renovate/bad-branch-name10',
+        },
+        {
+          upgrade: { branchName: 'renovate/bad--branch---name11' },
+          expectedBranchName: 'renovate/bad-branch-name11',
+        },
       ];
       fixtures.forEach((fixture) => {
         generateBranchName(fixture.upgrade);
diff --git a/lib/workers/repository/updates/branch-name.ts b/lib/workers/repository/updates/branch-name.ts
index 78454f101fa26395ca05ce08cef2166d1e611564..e56e2da710fee664638ba40c2b368cd58e563a66 100644
--- a/lib/workers/repository/updates/branch-name.ts
+++ b/lib/workers/repository/updates/branch-name.ts
@@ -7,6 +7,7 @@ import * as template from '../../../util/template';
 
 const MIN_HASH_LENGTH = 6;
 
+const RE_MULTIPLE_DASH = /--+/g;
 /**
  * Clean git branch name
  *
@@ -14,12 +15,14 @@ const MIN_HASH_LENGTH = 6;
  * - leading dot/leading dot after slash
  * - trailing dot
  * - whitespace
+ * - chained dashes(breaks markdown comments) are replaced by single dash
  */
 function cleanBranchName(branchName: string): string {
   return cleanGitRef(branchName)
     .replace(/^\.|\.$/, '') // leading or trailing dot
     .replace(/\/\./g, '/') // leading dot after slash
-    .replace(/\s/g, ''); // whitespace
+    .replace(/\s/g, '') // whitespace
+    .replace(RE_MULTIPLE_DASH, '-'); // chained dashes
 }
 
 /* eslint-disable no-param-reassign */