diff --git a/lib/datasource/nuget/common.ts b/lib/datasource/nuget/common.ts
index 10d4073b13c230be5f5a93839f870a40dbe1b65c..ace325849e4b259f0ff7c972c0513ea5ddf82478 100644
--- a/lib/datasource/nuget/common.ts
+++ b/lib/datasource/nuget/common.ts
@@ -9,6 +9,18 @@ export function removeBuildMeta(version: string): string {
   return version?.replace(buildMetaRe, '');
 }
 
+const urlWhitespaceRe = regEx(/\s/g);
+
+export function massageUrl(url: string): string {
+  let resultUrl = url;
+
+  // During `dotnet pack` certain URLs are being URL decoded which may introduce whitespaces
+  // and causes Markdown link generation problems.
+  resultUrl = resultUrl?.replace(urlWhitespaceRe, '%20');
+
+  return resultUrl;
+}
+
 const protocolVersionRegExp = regEx(/#protocolVersion=(?<protocol>2|3)/);
 
 export function parseRegistryUrl(registryUrl: string): ParsedRegistryUrl {
diff --git a/lib/datasource/nuget/v2.ts b/lib/datasource/nuget/v2.ts
index 81875f8596ecc26e1cd144b41581e5427bc6eaf1..67c82f4a10fe3b5f43216c2315eafce8abab4411 100644
--- a/lib/datasource/nuget/v2.ts
+++ b/lib/datasource/nuget/v2.ts
@@ -3,7 +3,7 @@ import { logger } from '../../logger';
 import type { Http } from '../../util/http';
 import { regEx } from '../../util/regex';
 import type { ReleaseResult } from '../types';
-import { removeBuildMeta } from './common';
+import { massageUrl, removeBuildMeta } from './common';
 
 function getPkgProp(pkgInfo: XmlElement, propName: string): string {
   return pkgInfo.childNamed('m:properties').childNamed(`d:${propName}`)?.val;
@@ -39,7 +39,7 @@ export async function getReleases(
         if (pkgIsLatestVersion === 'true') {
           const projectUrl = getPkgProp(pkgInfo, 'ProjectUrl');
           if (projectUrl) {
-            dep.sourceUrl = projectUrl;
+            dep.sourceUrl = massageUrl(projectUrl);
           }
         }
       } catch (err) /* istanbul ignore next */ {
diff --git a/lib/datasource/nuget/v3.ts b/lib/datasource/nuget/v3.ts
index 3dec8d0fae0b720dafb1123d903b9b81e35cbae9..e6a3f8c28c90bb217b88960f38c2a3af5ef688b2 100644
--- a/lib/datasource/nuget/v3.ts
+++ b/lib/datasource/nuget/v3.ts
@@ -10,7 +10,7 @@ import { HttpError } from '../../util/http/types';
 import { regEx } from '../../util/regex';
 import { ensureTrailingSlash } from '../../util/url';
 import type { Release, ReleaseResult } from '../types';
-import { removeBuildMeta } from './common';
+import { massageUrl, removeBuildMeta } from './common';
 import type {
   CatalogEntry,
   CatalogPage,
@@ -133,7 +133,7 @@ export async function getReleases(
       }
       if (semver.valid(version) && !semver.prerelease(version)) {
         latestStable = removeBuildMeta(version);
-        homepage = projectUrl || homepage;
+        homepage = massageUrl(projectUrl || homepage);
       }
       if (listed === false) {
         release.isDeprecated = true;
@@ -172,7 +172,7 @@ export async function getReleases(
       const nuspec = new XmlDocument(metaresult.body);
       const sourceUrl = nuspec.valueWithPath('metadata.repository@url');
       if (sourceUrl) {
-        dep.sourceUrl = sourceUrl;
+        dep.sourceUrl = massageUrl(sourceUrl);
       }
     }
   } catch (err) {