diff --git a/lib/workers/repository/update/pr/code-owners.spec.ts b/lib/workers/repository/update/pr/code-owners.spec.ts
index 5e5874c964bc7a970e74cb92fe39adb40e6738ac..9b57c3fa17c87ad51ab205a9c3564e452ec6e720 100644
--- a/lib/workers/repository/update/pr/code-owners.spec.ts
+++ b/lib/workers/repository/update/pr/code-owners.spec.ts
@@ -219,9 +219,9 @@ describe('workers/repository/update/pr/code-owners', () => {
         [
           '# comment line',
           '    \t    ',
-          '   * @jimmy     ',
+          '   * @jimmy     # inline comment     ',
           '        # comment line with leading whitespace',
-          ' package.json @john @maria  ',
+          ' package.json @john @maria#inline comment without leading whitespace  ',
         ].join('\n')
       );
       git.getBranchFiles.mockResolvedValueOnce(['package.json']);
diff --git a/lib/workers/repository/update/pr/code-owners.ts b/lib/workers/repository/update/pr/code-owners.ts
index 59d6d643c4f29405eabd157714e09de8df86f710..93886333f4cb12f3a6bb3fbfafb86805ce857c16 100644
--- a/lib/workers/repository/update/pr/code-owners.ts
+++ b/lib/workers/repository/update/pr/code-owners.ts
@@ -1,3 +1,4 @@
+import is from '@sindresorhus/is';
 import ignore from 'ignore';
 import { logger } from '../../../../logger';
 import type { Pr } from '../../../../modules/platform';
@@ -102,9 +103,11 @@ export async function codeOwnersForPr(pr: Pr): Promise<string[]> {
     // Convert CODEOWNERS file into list of matching rules
     const fileOwnerRules = codeOwnersFile
       .split(newlineRegex)
-      // Remove empty and commented lines
+      // Remove comments
+      .map((line) => line.split('#')[0])
+      // Remove empty lines
       .map((line) => line.trim())
-      .filter((line) => line && !line.startsWith('#'))
+      .filter(is.nonEmptyString)
       // Extract pattern & usernames
       .map(extractOwnersFromLine);