diff --git a/lib/modules/platform/bitbucket/index.spec.ts b/lib/modules/platform/bitbucket/index.spec.ts
index 92ca09c7817f292c217ee2fb235bef0f35d00db9..19546256ec0d0e16b472ce4577b0a199d0217390 100644
--- a/lib/modules/platform/bitbucket/index.spec.ts
+++ b/lib/modules/platform/bitbucket/index.spec.ts
@@ -1656,6 +1656,14 @@ describe('modules/platform/bitbucket/index', () => {
 
       expect(bitbucket.massageMarkdown(prBody)).toMatchSnapshot();
     });
+
+    it('converts source links', () => {
+      const prBody = '[source](https://bitbucket.org/foo/bar/tree/HEAD)';
+
+      expect(bitbucket.massageMarkdown(prBody)).toBe(
+        '[source](https://bitbucket.org/foo/bar/src/HEAD)',
+      );
+    });
   });
 
   describe('updatePr()', () => {
diff --git a/lib/modules/platform/bitbucket/index.ts b/lib/modules/platform/bitbucket/index.ts
index 9678aa2443b45ec317e5c5963e4b2513cd3fbdfb..97915bcefa686ab1ca7c6d15a6cd7e7162cd4799 100644
--- a/lib/modules/platform/bitbucket/index.ts
+++ b/lib/modules/platform/bitbucket/index.ts
@@ -583,6 +583,7 @@ export function massageMarkdown(input: string): string {
     .replace(regEx(/<\/?(details|blockquote)>/g), '')
     .replace(regEx(`\n---\n\n.*?<!-- rebase-check -->.*?\n`), '')
     .replace(regEx(/\]\(\.\.\/pull\//g), '](../../pull-requests/')
+    .replace(regEx(/\/tree\/HEAD/g), '/src/HEAD')
     .replace(regEx(/<!--renovate-(?:debug|config-hash):.*?-->/g), '');
 }