diff --git a/src/Umbraco.Core/Extensions/HtmlEncodedStringExtensions.cs b/src/Umbraco.Core/Extensions/HtmlEncodedStringExtensions.cs
new file mode 100644
index 0000000000..9af5b25d27
--- /dev/null
+++ b/src/Umbraco.Core/Extensions/HtmlEncodedStringExtensions.cs
@@ -0,0 +1,19 @@
+using System.Diagnostics.CodeAnalysis;
+using Umbraco.Cms.Core.Strings;
+
+namespace Umbraco.Extensions;
+
+public static class HtmlEncodedStringExtensions
+{
+ ///
+ /// Checks if the specified is null or only contains whitespace, optionally after all HTML tags have been stripped/removed.
+ ///
+ /// The encoded HTML string.
+ /// If set to true strips/removes all HTML tags.
+ ///
+ /// Returns true if the HTML string is null or only contains whitespace, optionally after all HTML tags have been stripped/removed.
+ ///
+ public static bool IsNullOrWhiteSpace([NotNullWhen(false)] this IHtmlEncodedString? htmlEncodedString, bool stripHtml = false)
+ => (htmlEncodedString?.ToHtmlString() is var htmlString && string.IsNullOrWhiteSpace(htmlString)) ||
+ (stripHtml && string.IsNullOrWhiteSpace(htmlString.StripHtml()));
+}
diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Extensions/HtmlEncodedStringExtensionsTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Extensions/HtmlEncodedStringExtensionsTests.cs
new file mode 100644
index 0000000000..4703cebb40
--- /dev/null
+++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Extensions/HtmlEncodedStringExtensionsTests.cs
@@ -0,0 +1,26 @@
+using Moq;
+using NUnit.Framework;
+using Umbraco.Cms.Core.Strings;
+using Umbraco.Extensions;
+
+namespace Umbraco.Cms.Tests.UnitTests.Umbraco.Core.Extensions;
+
+[TestFixture]
+public class HtmlEncodedStringExtensionsTests
+{
+ [TestCase(null, false, true)]
+ [TestCase("", false, true)]
+ [TestCase(" ", false, true)]
+ [TestCase("This is a non-empty string", false, false)]
+ [TestCase("
This is a non-empty string
", true,false)]
+ [TestCase("This is a non-empty string
", false,false)]
+ [TestCase("", true, true)]
+ [TestCase("", false, false)]
+ public void IsNullOrWhiteSpace(string? htmlString, bool stripHtml, bool expectedResult)
+ {
+ var htmlEncodedString = htmlString == null ? null : Mock.Of(x => x.ToHtmlString() == htmlString);
+ var result = htmlEncodedString.IsNullOrWhiteSpace(stripHtml: stripHtml);
+
+ Assert.AreEqual(expectedResult, result);
+ }
+}