diff --git a/src/Ardalis.Result/IResultExtensions.cs b/src/Ardalis.Result/IResultExtensions.cs
new file mode 100644
index 0000000..c7d4165
--- /dev/null
+++ b/src/Ardalis.Result/IResultExtensions.cs
@@ -0,0 +1,59 @@
+namespace Ardalis.Result;
+
+public static class IResultExtensions
+{
+ ///
+ /// Returns true if the result is successful (status is Ok).
+ ///
+ public static bool IsOk(this IResult result) => result.Status == ResultStatus.Ok;
+
+ ///
+ /// Returns true if the result is created (status is Created).
+ ///
+ public static bool IsCreated(this IResult result) => result.Status == ResultStatus.Created;
+
+ ///
+ /// Returns true if the result is an error (status is Error).
+ ///
+ public static bool IsError(this IResult result) => result.Status == ResultStatus.Error;
+
+ ///
+ /// Returns true if the result is forbidden (status is Forbidden).
+ ///
+ public static bool IsForbidden(this IResult result) => result.Status == ResultStatus.Forbidden;
+
+ ///
+ /// Returns true if the result is unauthorized (status is Unauthorized).
+ ///
+ public static bool IsUnauthorized(this IResult result) => result.Status == ResultStatus.Unauthorized;
+
+ ///
+ /// Returns true if the result is invalid (status is Invalid).
+ ///
+ public static bool IsInvalid(this IResult result) => result.Status == ResultStatus.Invalid;
+
+ ///
+ /// Returns true if the result is not found (status is NotFound).
+ ///
+ public static bool IsNotFound(this IResult result) => result.Status == ResultStatus.NotFound;
+
+ ///
+ /// Returns true if the result is no content (status is NoContent).
+ ///
+ public static bool IsNoContent(this IResult result) => result.Status == ResultStatus.NoContent;
+
+ ///
+ /// Returns true if the result is a conflict (status is Conflict).
+ ///
+ public static bool IsConflict(this IResult result) => result.Status == ResultStatus.Conflict;
+
+ ///
+ /// Returns true if the result is a critical error (status is CriticalError).
+ ///
+ public static bool IsCriticalError(this IResult result) => result.Status == ResultStatus.CriticalError;
+
+ ///
+ /// Returns true if the result is unavailable (status is Unavailable).
+ ///
+ public static bool IsUnavailable(this IResult result) => result.Status == ResultStatus.Unavailable;
+}
diff --git a/tests/Ardalis.Result.UnitTests/IResultExtensions.cs b/tests/Ardalis.Result.UnitTests/IResultExtensions.cs
new file mode 100644
index 0000000..d66d1d8
--- /dev/null
+++ b/tests/Ardalis.Result.UnitTests/IResultExtensions.cs
@@ -0,0 +1,120 @@
+using Xunit;
+
+namespace Ardalis.Result.UnitTests;
+
+public class IResultExtensions
+{
+ [Fact]
+ public void IsOk_ReturnsTrue_WhenStatusIsOk()
+ {
+ // Arrange & Act
+ var result = Result.Success();
+
+ // Assert
+ Assert.True(result.IsOk());
+ }
+
+ [Fact]
+ public void IsCreated_ReturnsTrue_WhenStatusIsCreated()
+ {
+ // Arrange & Act
+ var foo = new Foo("Bar");
+ var result = Result.Created(foo);
+
+ // Assert
+ Assert.True(result.IsCreated());
+ }
+
+ [Fact]
+ public void IsError_ReturnsTrue_WhenStatusIsError()
+ {
+ // Arrange & Act
+ var result = Result.Error();
+
+ // Assert
+ Assert.True(result.IsError());
+ }
+
+ [Fact]
+ public void IsForbidden_ReturnsTrue_WhenStatusIsForbidden()
+ {
+ // Arrange & Act
+ var result = Result.Forbidden();
+
+ // Assert
+ Assert.True(result.IsForbidden());
+ }
+
+ [Fact]
+ public void IsUnauthorized_ReturnsTrue_WhenStatusIsUnauthorized()
+ {
+ // Arrange & Act
+ var result = Result.Unauthorized();
+
+ // Assert
+ Assert.True(result.IsUnauthorized());
+ }
+
+ [Fact]
+ public void IsInvalid_ReturnsTrue_WhenStatusIsInvalid()
+ {
+ // Arrange & Act
+ var result = Result.Invalid();
+
+ // Assert
+ Assert.True(result.IsInvalid());
+ }
+
+ [Fact]
+ public void IsNotFound_ReturnsTrue_WhenStatusIsNotFound()
+ {
+ // Arrange & Act
+ var result = Result.NotFound();
+
+ // Assert
+ Assert.True(result.IsNotFound());
+ }
+
+ [Fact]
+ public void IsNoContent_ReturnsTrue_WhenStatusIsNoContent()
+ {
+ // Arrange & ActI
+ var result = Result.NoContent();
+
+ // Assert
+ Assert.True(result.IsNoContent());
+ }
+
+ [Fact]
+ public void IsConflict_ReturnsTrue_WhenStatusIsConflict()
+ {
+ // Arrange & Act
+ var result = Result.Conflict();
+
+ // Assert
+ Assert.True(result.IsConflict());
+ }
+
+ [Fact]
+ public void IsCriticalError_ReturnsTrue_WhenStatusIsCriticalError()
+ {
+ // Arrange & Act
+ var result = Result.CriticalError();
+
+ // Assert
+ Assert.True(result.IsCriticalError());
+ }
+
+ [Fact]
+ public void IsUnavailable_ReturnsTrue_WhenStatusIsUnavailable()
+ {
+ // Arrange & Act
+ var result = Result.Unavailable();
+
+ // Assert
+ Assert.True(result.IsUnavailable());
+ }
+
+ private record Foo(string Value);
+
+}