diff --git a/lib/util/url.spec.ts b/lib/util/url.spec.ts
index 0ed4143cb69c55a7715345c0505e2c8d9c515986..e1ed216102e3be2602453dd433e47d1abc0535b8 100644
--- a/lib/util/url.spec.ts
+++ b/lib/util/url.spec.ts
@@ -116,6 +116,7 @@ describe('util/url', () => {
     expect(url?.protocol).toBe('https:');
     expect(url?.host).toBe('github.com');
     expect(url?.pathname).toBe('/renovatebot/renovate');
+    expect(parseUrl(url)).toBe(url);
   });
 
   it('trimTrailingSlash', () => {
diff --git a/lib/util/url.ts b/lib/util/url.ts
index 49d92dc0de91a8c3a948abe2515de4385946966f..d9886939dc1dd3f67ed5a4869a9c7330e867051f 100644
--- a/lib/util/url.ts
+++ b/lib/util/url.ts
@@ -97,11 +97,15 @@ export function isHttpUrl(url: unknown): boolean {
   }
 }
 
-export function parseUrl(url: string | undefined | null): URL | null {
+export function parseUrl(url: URL | string | undefined | null): URL | null {
   if (!url) {
     return null;
   }
 
+  if (url instanceof URL) {
+    return url;
+  }
+
   try {
     return new URL(url);
   } catch {