diff --git a/lib/modules/manager/bazel/extract.ts b/lib/modules/manager/bazel/extract.ts
index aca6894f1936304fbaa4aa9cbc93b7c3a4f43d86..7fa7c4d41dc89b11eb9b595bb11a2187a1841038 100644
--- a/lib/modules/manager/bazel/extract.ts
+++ b/lib/modules/manager/bazel/extract.ts
@@ -1,6 +1,6 @@
 import type { PackageDependency, PackageFile } from '../types';
 import { parse } from './parser';
-import { extractDepFromFragment } from './rules';
+import { extractDepsFromFragment } from './rules';
 import type { RecordFragment } from './types';
 
 export function extractPackageFile(
@@ -16,15 +16,11 @@ export function extractPackageFile(
 
   for (let idx = 0; idx < fragments.length; idx += 1) {
     const fragment = fragments[idx];
-
-    const dep = extractDepFromFragment(fragment);
-    if (!dep) {
-      continue;
+    for (const dep of extractDepsFromFragment(fragment)) {
+      dep.replaceString = fragment.value;
+      dep.managerData = { idx };
+      deps.push(dep);
     }
-
-    dep.replaceString = fragment.value;
-    dep.managerData = { idx };
-    deps.push(dep);
   }
 
   return deps.length ? { deps } : null;
diff --git a/lib/modules/manager/bazel/rules/docker.ts b/lib/modules/manager/bazel/rules/docker.ts
index 233487c5e8091156f19a7ceedcb5fbee3ae7e229..4ccc83d62694c69d1e1312cc988d7068d5720147 100644
--- a/lib/modules/manager/bazel/rules/docker.ts
+++ b/lib/modules/manager/bazel/rules/docker.ts
@@ -15,14 +15,23 @@ export const DockerTarget = z
     registry: z.string(),
   })
   .transform(
-    ({ rule, name, repository, tag, digest, registry }): PackageDependency => ({
-      datasource: DockerDatasource.id,
-      versioning: dockerVersioning,
-      depType: rule,
-      depName: name,
-      packageName: repository,
-      currentValue: tag,
-      currentDigest: digest,
-      registryUrls: [registry],
-    })
+    ({
+      rule,
+      name,
+      repository,
+      tag,
+      digest,
+      registry,
+    }): PackageDependency[] => [
+      {
+        datasource: DockerDatasource.id,
+        versioning: dockerVersioning,
+        depType: rule,
+        depName: name,
+        packageName: repository,
+        currentValue: tag,
+        currentDigest: digest,
+        registryUrls: [registry],
+      },
+    ]
   );
diff --git a/lib/modules/manager/bazel/rules/git.ts b/lib/modules/manager/bazel/rules/git.ts
index bdf52e6f5b91be9f8ad835ec1e87d460a0d29620..5f215932583471586c4c035e8437faa633909117 100644
--- a/lib/modules/manager/bazel/rules/git.ts
+++ b/lib/modules/manager/bazel/rules/git.ts
@@ -23,7 +23,7 @@ export const GitTarget = z
     remote: z.string(),
   })
   .refine(({ tag, commit }) => !!tag || !!commit)
-  .transform(({ rule, name, tag, commit, remote }): PackageDependency => {
+  .transform(({ rule, name, tag, commit, remote }): PackageDependency[] => {
     const dep: PackageDependency = {
       depType: rule,
       depName: name,
@@ -47,5 +47,5 @@ export const GitTarget = z
       dep.skipReason = 'unsupported-datasource';
     }
 
-    return dep;
+    return [dep];
   });
diff --git a/lib/modules/manager/bazel/rules/go.ts b/lib/modules/manager/bazel/rules/go.ts
index ef68c1c93194f019af9e1ad35d48c00427906c35..5bbf35302e2896163ceab2391f876978298dd69f 100644
--- a/lib/modules/manager/bazel/rules/go.ts
+++ b/lib/modules/manager/bazel/rules/go.ts
@@ -16,7 +16,7 @@ export const GoTarget = z
   })
   .refine(({ tag, commit }) => !!tag || !!commit)
   .transform(
-    ({ rule, name, tag, commit, importpath, remote }): PackageDependency => {
+    ({ rule, name, tag, commit, importpath, remote }): PackageDependency[] => {
       const dep: PackageDependency = {
         datasource: GoDatasource.id,
         depType: rule,
@@ -46,6 +46,6 @@ export const GoTarget = z
         }
       }
 
-      return dep;
+      return [dep];
     }
   );
diff --git a/lib/modules/manager/bazel/rules/http.ts b/lib/modules/manager/bazel/rules/http.ts
index 4fc3e4bc9b14d61e4e3376b8e9d3620b5218edff..7f773b97fabb350dc8fe4d6f0170081e788f76f4 100644
--- a/lib/modules/manager/bazel/rules/http.ts
+++ b/lib/modules/manager/bazel/rules/http.ts
@@ -62,10 +62,10 @@ export const HttpTarget = z
     sha256: z.string(),
   })
   .refine(({ url, urls }) => !!url || !!urls)
-  .transform(({ rule, name, url, urls = [] }): PackageDependency | null => {
+  .transform(({ rule, name, url, urls = [] }): PackageDependency[] => {
     const parsedUrl = [url, ...urls].map(parseArchiveUrl).find(is.truthy);
     if (!parsedUrl) {
-      return null;
+      return [];
     }
 
     const dep: PackageDependency = {
@@ -81,5 +81,5 @@ export const HttpTarget = z
       dep.currentValue = parsedUrl.currentValue;
     }
 
-    return dep;
+    return [dep];
   });
diff --git a/lib/modules/manager/bazel/rules/index.spec.ts b/lib/modules/manager/bazel/rules/index.spec.ts
index df3043127b550e6ace4405934a46ea6577d05932..c133e7a4f869eca633cb3276a68fd620757a63b5 100644
--- a/lib/modules/manager/bazel/rules/index.spec.ts
+++ b/lib/modules/manager/bazel/rules/index.spec.ts
@@ -1,5 +1,5 @@
 import { parseArchiveUrl } from './http';
-import { extractDepFromFragmentData } from '.';
+import { extractDepsFromFragmentData } from '.';
 
 describe('modules/manager/bazel/rules/index', () => {
   it('parses archiveUrl', () => {
@@ -46,186 +46,202 @@ describe('modules/manager/bazel/rules/index', () => {
   describe('git', () => {
     it('extracts git dependencies', () => {
       expect(
-        extractDepFromFragmentData({ rule: 'foo_bar', name: 'foo_bar' })
-      ).toBeNull();
+        extractDepsFromFragmentData({ rule: 'foo_bar', name: 'foo_bar' })
+      ).toBeEmptyArray();
 
       expect(
-        extractDepFromFragmentData({ rule: 'git_repository', name: 'foo_bar' })
-      ).toBeNull();
+        extractDepsFromFragmentData({ rule: 'git_repository', name: 'foo_bar' })
+      ).toBeEmptyArray();
 
       expect(
-        extractDepFromFragmentData({
+        extractDepsFromFragmentData({
           rule: 'git_repository',
           name: 'foo_bar',
           tag: '1.2.3',
         })
-      ).toBeNull();
+      ).toBeEmptyArray();
 
       expect(
-        extractDepFromFragmentData({
+        extractDepsFromFragmentData({
           rule: 'git_repository',
           name: 'foo_bar',
           tag: '1.2.3',
           remote: 'https://github.com/foo/bar',
         })
-      ).toEqual({
-        datasource: 'github-releases',
-        depType: 'git_repository',
-        depName: 'foo_bar',
-        packageName: 'foo/bar',
-        currentValue: '1.2.3',
-      });
+      ).toEqual([
+        {
+          datasource: 'github-releases',
+          depType: 'git_repository',
+          depName: 'foo_bar',
+          packageName: 'foo/bar',
+          currentValue: '1.2.3',
+        },
+      ]);
 
       expect(
-        extractDepFromFragmentData({
+        extractDepsFromFragmentData({
           rule: 'git_repository',
           name: 'foo_bar',
           commit: 'abcdef0123abcdef0123abcdef0123abcdef0123',
           remote: 'https://github.com/foo/bar',
         })
-      ).toEqual({
-        datasource: 'github-releases',
-        depType: 'git_repository',
-        depName: 'foo_bar',
-        packageName: 'foo/bar',
-        currentDigest: 'abcdef0123abcdef0123abcdef0123abcdef0123',
-      });
+      ).toEqual([
+        {
+          datasource: 'github-releases',
+          depType: 'git_repository',
+          depName: 'foo_bar',
+          packageName: 'foo/bar',
+          currentDigest: 'abcdef0123abcdef0123abcdef0123abcdef0123',
+        },
+      ]);
 
       expect(
-        extractDepFromFragmentData({
+        extractDepsFromFragmentData({
           rule: 'git_repository',
           name: 'foo_bar',
           tag: '1.2.3',
           remote: 'https://gitlab.com/foo/bar',
         })
-      ).toMatchObject({
-        currentValue: '1.2.3',
-        depName: 'foo_bar',
-        depType: 'git_repository',
-        skipReason: 'unsupported-datasource',
-      });
+      ).toMatchObject([
+        {
+          currentValue: '1.2.3',
+          depName: 'foo_bar',
+          depType: 'git_repository',
+          skipReason: 'unsupported-datasource',
+        },
+      ]);
     });
   });
 
   describe('go', () => {
     it('extracts go dependencies', () => {
       expect(
-        extractDepFromFragmentData({ rule: 'foo_bar', name: 'foo_bar' })
-      ).toBeNull();
+        extractDepsFromFragmentData({ rule: 'foo_bar', name: 'foo_bar' })
+      ).toBeEmptyArray();
 
       expect(
-        extractDepFromFragmentData({ rule: 'go_repository', name: 'foo_bar' })
-      ).toBeNull();
+        extractDepsFromFragmentData({ rule: 'go_repository', name: 'foo_bar' })
+      ).toBeEmptyArray();
 
       expect(
-        extractDepFromFragmentData({
+        extractDepsFromFragmentData({
           rule: 'go_repository',
           name: 'foo_bar',
           tag: '1.2.3',
         })
-      ).toBeNull();
+      ).toBeEmptyArray();
 
       expect(
-        extractDepFromFragmentData({
+        extractDepsFromFragmentData({
           rule: 'go_repository',
           name: 'foo_bar',
           tag: '1.2.3',
           importpath: 'foo/bar/baz',
         })
-      ).toEqual({
-        datasource: 'go',
-        depType: 'go_repository',
-        depName: 'foo_bar',
-        packageName: 'foo/bar/baz',
-        currentValue: '1.2.3',
-      });
+      ).toEqual([
+        {
+          datasource: 'go',
+          depType: 'go_repository',
+          depName: 'foo_bar',
+          packageName: 'foo/bar/baz',
+          currentValue: '1.2.3',
+        },
+      ]);
 
       expect(
-        extractDepFromFragmentData({
+        extractDepsFromFragmentData({
           rule: 'go_repository',
           name: 'foo_bar',
           commit: 'abcdef0123abcdef0123abcdef0123abcdef0123',
           importpath: 'foo/bar/baz',
         })
-      ).toEqual({
-        datasource: 'go',
-        depType: 'go_repository',
-        depName: 'foo_bar',
-        packageName: 'foo/bar/baz',
-        currentDigest: 'abcdef0123abcdef0123abcdef0123abcdef0123',
-        digestOneAndOnly: true,
-      });
+      ).toEqual([
+        {
+          datasource: 'go',
+          depType: 'go_repository',
+          depName: 'foo_bar',
+          packageName: 'foo/bar/baz',
+          currentDigest: 'abcdef0123abcdef0123abcdef0123abcdef0123',
+          digestOneAndOnly: true,
+        },
+      ]);
 
       expect(
-        extractDepFromFragmentData({
+        extractDepsFromFragmentData({
           rule: 'go_repository',
           name: 'foo_bar',
           tag: '1.2.3',
           importpath: 'foo/bar/baz',
           remote: 'https://github.com/foo/bar',
         })
-      ).toEqual({
-        datasource: 'go',
-        depType: 'go_repository',
-        depName: 'foo_bar',
-        packageName: 'github.com/foo/bar',
-        currentValue: '1.2.3',
-      });
+      ).toEqual([
+        {
+          datasource: 'go',
+          depType: 'go_repository',
+          depName: 'foo_bar',
+          packageName: 'github.com/foo/bar',
+          currentValue: '1.2.3',
+        },
+      ]);
 
       expect(
-        extractDepFromFragmentData({
+        extractDepsFromFragmentData({
           rule: 'go_repository',
           name: 'foo_bar',
           tag: '1.2.3',
           importpath: 'foo/bar/baz',
           remote: 'https://example.com/foo/bar',
         })
-      ).toEqual({
-        datasource: 'go',
-        depType: 'go_repository',
-        depName: 'foo_bar',
-        packageName: 'foo/bar/baz',
-        currentValue: '1.2.3',
-        skipReason: 'unsupported-remote',
-      });
+      ).toEqual([
+        {
+          datasource: 'go',
+          depType: 'go_repository',
+          depName: 'foo_bar',
+          packageName: 'foo/bar/baz',
+          currentValue: '1.2.3',
+          skipReason: 'unsupported-remote',
+        },
+      ]);
     });
   });
 
   describe('http', () => {
     it('extracts http dependencies', () => {
       expect(
-        extractDepFromFragmentData({ rule: 'foo_bar', name: 'foo_bar' })
-      ).toBeNull();
+        extractDepsFromFragmentData({ rule: 'foo_bar', name: 'foo_bar' })
+      ).toBeEmptyArray();
 
       expect(
-        extractDepFromFragmentData({ rule: 'http_archive', name: 'foo_bar' })
-      ).toBeNull();
+        extractDepsFromFragmentData({ rule: 'http_archive', name: 'foo_bar' })
+      ).toBeEmptyArray();
 
       expect(
-        extractDepFromFragmentData({
+        extractDepsFromFragmentData({
           rule: 'http_archive',
           name: 'foo_bar',
           sha256: 'abcdef0123abcdef0123abcdef0123abcdef0123',
         })
-      ).toBeNull();
+      ).toBeEmptyArray();
 
       expect(
-        extractDepFromFragmentData({
+        extractDepsFromFragmentData({
           rule: 'http_archive',
           name: 'foo_bar',
           sha256: 'abcdef0123abcdef0123abcdef0123abcdef0123',
           url: 'https://github.com/foo/bar/archive/abcdef0123abcdef0123abcdef0123abcdef0123.tar.gz',
         })
-      ).toEqual({
-        currentDigest: 'abcdef0123abcdef0123abcdef0123abcdef0123',
-        datasource: 'github-tags',
-        depName: 'foo_bar',
-        depType: 'http_archive',
-        packageName: 'foo/bar',
-      });
+      ).toEqual([
+        {
+          currentDigest: 'abcdef0123abcdef0123abcdef0123abcdef0123',
+          datasource: 'github-tags',
+          depName: 'foo_bar',
+          depType: 'http_archive',
+          packageName: 'foo/bar',
+        },
+      ]);
 
       expect(
-        extractDepFromFragmentData({
+        extractDepsFromFragmentData({
           rule: 'http_archive',
           name: 'foo_bar',
           sha256: 'abcdef0123abcdef0123abcdef0123abcdef0123',
@@ -234,31 +250,35 @@ describe('modules/manager/bazel/rules/index', () => {
             'https://github.com/foo/bar/archive/abcdef0123abcdef0123abcdef0123abcdef0123.tar.gz',
           ],
         })
-      ).toEqual({
-        currentDigest: 'abcdef0123abcdef0123abcdef0123abcdef0123',
-        datasource: 'github-tags',
-        depName: 'foo_bar',
-        depType: 'http_archive',
-        packageName: 'foo/bar',
-      });
+      ).toEqual([
+        {
+          currentDigest: 'abcdef0123abcdef0123abcdef0123abcdef0123',
+          datasource: 'github-tags',
+          depName: 'foo_bar',
+          depType: 'http_archive',
+          packageName: 'foo/bar',
+        },
+      ]);
 
       expect(
-        extractDepFromFragmentData({
+        extractDepsFromFragmentData({
           rule: 'http_archive',
           name: 'foo_bar',
           sha256: 'abcdef0123abcdef0123abcdef0123abcdef0123',
           url: 'https://github.com/foo/bar/releases/download/1.2.3/foobar-1.2.3.tar.gz',
         })
-      ).toEqual({
-        currentValue: '1.2.3',
-        datasource: 'github-releases',
-        depName: 'foo_bar',
-        depType: 'http_archive',
-        packageName: 'foo/bar',
-      });
+      ).toEqual([
+        {
+          currentValue: '1.2.3',
+          datasource: 'github-releases',
+          depName: 'foo_bar',
+          depType: 'http_archive',
+          packageName: 'foo/bar',
+        },
+      ]);
 
       expect(
-        extractDepFromFragmentData({
+        extractDepsFromFragmentData({
           rule: 'http_archive',
           name: 'foo_bar',
           sha256: 'abcdef0123abcdef0123abcdef0123abcdef0123',
@@ -267,16 +287,18 @@ describe('modules/manager/bazel/rules/index', () => {
             'https://github.com/foo/bar/releases/download/1.2.3/foobar-1.2.3.tar.gz',
           ],
         })
-      ).toEqual({
-        currentValue: '1.2.3',
-        datasource: 'github-releases',
-        depName: 'foo_bar',
-        depType: 'http_archive',
-        packageName: 'foo/bar',
-      });
+      ).toEqual([
+        {
+          currentValue: '1.2.3',
+          datasource: 'github-releases',
+          depName: 'foo_bar',
+          depType: 'http_archive',
+          packageName: 'foo/bar',
+        },
+      ]);
 
       expect(
-        extractDepFromFragmentData({
+        extractDepsFromFragmentData({
           rule: 'http_archive',
           name: 'aspect_rules_js',
           sha256:
@@ -285,24 +307,26 @@ describe('modules/manager/bazel/rules/index', () => {
             'https://github.com/aspect-build/rules_js/archive/refs/tags/v1.1.2.tar.gz',
           ],
         })
-      ).toEqual({
-        currentValue: 'v1.1.2',
-        datasource: 'github-tags',
-        depName: 'aspect_rules_js',
-        depType: 'http_archive',
-        packageName: 'aspect-build/rules_js',
-      });
+      ).toEqual([
+        {
+          currentValue: 'v1.1.2',
+          datasource: 'github-tags',
+          depName: 'aspect_rules_js',
+          depType: 'http_archive',
+          packageName: 'aspect-build/rules_js',
+        },
+      ]);
     });
   });
 
   describe('docker', () => {
     it('extracts docker dependencies', () => {
       expect(
-        extractDepFromFragmentData({ rule: 'foo_bar', name: 'foo_bar' })
-      ).toBeNull();
+        extractDepsFromFragmentData({ rule: 'foo_bar', name: 'foo_bar' })
+      ).toBeEmptyArray();
 
       expect(
-        extractDepFromFragmentData({
+        extractDepsFromFragmentData({
           rule: 'container_pull',
           name: 'foo_bar',
           tag: '1.2.3',
@@ -310,16 +334,18 @@ describe('modules/manager/bazel/rules/index', () => {
           repository: 'example.com/foo/bar',
           registry: 'https://example.com',
         })
-      ).toEqual({
-        currentDigest: 'abcdef0123abcdef0123abcdef0123abcdef0123',
-        currentValue: '1.2.3',
-        datasource: 'docker',
-        depName: 'foo_bar',
-        depType: 'container_pull',
-        packageName: 'example.com/foo/bar',
-        registryUrls: ['https://example.com'],
-        versioning: 'docker',
-      });
+      ).toEqual([
+        {
+          currentDigest: 'abcdef0123abcdef0123abcdef0123abcdef0123',
+          currentValue: '1.2.3',
+          datasource: 'docker',
+          depName: 'foo_bar',
+          depType: 'container_pull',
+          packageName: 'example.com/foo/bar',
+          registryUrls: ['https://example.com'],
+          versioning: 'docker',
+        },
+      ]);
     });
   });
 });
diff --git a/lib/modules/manager/bazel/rules/index.ts b/lib/modules/manager/bazel/rules/index.ts
index deafa4d077048c8fe308324aa4d97cd7a7074f97..149ff09e742ce57672609bb24ba70f685204f178 100644
--- a/lib/modules/manager/bazel/rules/index.ts
+++ b/lib/modules/manager/bazel/rules/index.ts
@@ -16,21 +16,21 @@ const Target = z.union([DockerTarget, GitTarget, GoTarget, HttpTarget]);
 const supportedRules = [...dockerRules, ...gitRules, ...goRules, ...httpRules];
 export const supportedRulesRegex = regEx(`^${supportedRules.join('|')}$`);
 
-export function extractDepFromFragmentData(
+export function extractDepsFromFragmentData(
   fragmentData: FragmentData
-): PackageDependency | null {
+): PackageDependency[] {
   const res = Target.safeParse(fragmentData);
   if (!res.success) {
-    return null;
+    return [];
   }
   return res.data;
 }
 
-export function extractDepFromFragment(
+export function extractDepsFromFragment(
   fragment: Fragment
-): PackageDependency | null {
+): PackageDependency[] {
   const fragmentData = extract(fragment);
-  return extractDepFromFragmentData(fragmentData);
+  return extractDepsFromFragmentData(fragmentData);
 }
 
 export function extract(fragment: Fragment): FragmentData {