FluentValidation 12.0.0

FluentValidation is validation library for .NET that uses a fluent interface and lambda expressions for building strongly-typed validation rules.

Supporting the project

If you use FluentValidation in a commercial project, please sponsor the project financially. FluentValidation is developed and supported by @JeremySkinner for free in his spare time and financial sponsorship helps keep the project going. You can sponsor the project via either GitHub sponsors or OpenCollective.

Example

With FluentValidation, you can define a class that inherits from AbstractValidator which contains the rules for a particular class. The example below shows how you could define rules for a Customer class, and then how to execute the validator.

using FluentValidation;

public class CustomerValidator: AbstractValidator<Customer> {
  public CustomerValidator() {
    RuleFor(x => x.Surname).NotEmpty();
    RuleFor(x => x.Forename).NotEmpty().WithMessage("Please specify a first name");
    RuleFor(x => x.Discount).NotEqual(0).When(x => x.HasDiscount);
    RuleFor(x => x.Address).Length(20, 250);
    RuleFor(x => x.Postcode).Must(BeAValidPostcode).WithMessage("Please specify a valid postcode");
  }

  private bool BeAValidPostcode(string postcode) {
    // custom postcode validating logic goes here
  }
}

var customer = new Customer();
var validator = new CustomerValidator();

// Execute the validator.
ValidationResult results = validator.Validate(customer);

// Inspect any validation failures.
bool success = results.IsValid;
List<ValidationFailure> failures = results.Errors;

Full Documentation

Full documentation can be found at https://docs.fluentvalidation.net

Release Notes and Change Log

Release notes can be found on GitHub.

No packages depend on FluentValidation.

FluentValidation 12 is a major release. Please read the upgrade guide at https://docs.fluentvalidation.net/en/latest/upgrading-to-12.html Full release notes can be found at https://github.com/FluentValidation/FluentValidation/releases

.NET 8.0

  • No dependencies.

Version Downloads Last updated
12.0.0 6 5/8/2025
12.0.0-preview1 15 2/18/2025
11.11.0 12 2/19/2025
11.10.0 15 10/1/2024
11.9.2 16 7/20/2024
11.9.1 17 5/3/2024
11.9.0 22 3/8/2024
11.8.1 21 3/8/2024
11.8.0 15 3/8/2024
11.7.1 18 3/8/2024
11.7.0 19 3/8/2024
11.6.0 23 2/27/2024
11.5.2 24 3/8/2024
11.5.1 20 3/8/2024
11.5.0 22 3/6/2024
11.4.0 24 3/8/2024
11.3.0 19 3/8/2024
11.2.2 21 3/8/2024
11.2.1 18 3/8/2024
11.2.0 21 2/12/2024
11.1.1 19 3/8/2024
11.1.0 23 3/3/2024
11.0.3 25 3/8/2024
11.0.2 18 3/8/2024
11.0.1 24 3/2/2024
11.0.0 20 2/27/2024
10.4.0 20 2/26/2024
10.3.6 19 3/8/2024
10.3.5 19 3/8/2024
10.3.4 20 3/8/2024
10.3.3 19 3/8/2024
10.3.1 24 3/8/2024
10.3.0 21 2/11/2024
10.2.3 19 3/8/2024
10.2.2 19 3/1/2024
10.2.1 23 3/2/2024
10.2.0 19 2/10/2024
10.1.0 22 3/8/2024
10.0.4 23 3/7/2024
9.5.4 19 3/8/2024
9.5.3 17 3/8/2024
9.5.2 23 3/8/2024
9.5.1 19 3/8/2024
9.5.0 19 3/8/2024
9.4.0 21 3/8/2024
9.3.0 21 2/28/2024
9.3.0-preview3 24 2/27/2024
9.3.0-preview2 27 4/12/2022
9.3.0-preview1 21 3/8/2024
9.2.2 47 3/8/2024
9.2.1 21 3/8/2024
9.2.0 27 2/11/2024
9.1.3 16 3/1/2024
9.1.2 20 2/10/2024
9.1.1 18 2/21/2024
9.1.0 23 3/1/2024
9.0.1 22 3/8/2024
9.0.0-preview5 18 3/8/2024
9.0.0-preview4 24 3/8/2024
9.0.0-preview3 22 3/8/2024
9.0.0-preview2 20 3/8/2024
9.0.0-preview1 19 3/8/2024
8.6.3 22 3/8/2024
8.6.2 24 3/8/2024
8.6.1 21 3/8/2024
8.6.0 22 2/23/2024
8.5.1 21 2/23/2024
8.5.0 21 3/4/2024
8.5.0-preview5 24 3/8/2024
8.5.0-preview4 14 3/8/2024
8.5.0-preview3 22 3/8/2024
8.5.0-preview2 17 3/8/2024
8.5.0-preview1 22 3/8/2024
8.4.0 20 3/8/2024
8.3.0 18 3/8/2024
8.2.3 16 3/8/2024
8.2.2 22 3/8/2024
8.2.1 19 3/8/2024
8.2.0 18 3/8/2024
8.1.3 18 3/8/2024
8.1.2 18 3/8/2024
8.1.1 17 2/10/2024
8.1.0 23 3/4/2024
8.1.0-preview2 20 3/8/2024
8.1.0-preview1 22 3/8/2024
8.0.101 22 3/8/2024
8.0.100 19 3/8/2024
8.0.0 17 3/5/2024
8.0.0-rc1 23 3/8/2024
8.0.0-preview4 21 3/8/2024
8.0.0-preview3 25 3/8/2024
8.0.0-preview2 24 2/29/2024
7.6.105 22 3/8/2024
7.6.104 21 3/8/2024
7.6.103 23 3/8/2024
7.6.102 23 3/8/2024
7.6.101 22 3/3/2024
7.6.100 21 3/8/2024
7.6.0 19 3/8/2024
7.6.0-preview1 19 3/8/2024
7.5.2 18 3/8/2024
7.5.1 17 2/24/2024
7.5.0 24 3/8/2024
7.4.0 17 3/7/2024
7.3.4 17 3/8/2024
7.3.3 19 3/8/2024
7.3.2 21 3/8/2024
7.3.1 21 3/8/2024
7.3.0 20 3/8/2024
7.3.0-beta3 20 3/8/2024
7.3.0-beta2 22 3/8/2024
7.3.0-beta1 19 3/8/2024
7.2.1 21 3/8/2024
7.2.0 19 2/26/2024
7.2.0-beta3 22 3/8/2024
7.2.0-beta2 16 3/8/2024
7.2.0-beta1 17 3/8/2024
7.1.1 18 3/8/2024
7.1.0 20 3/8/2024
7.1.0-beta1 21 3/8/2024
7.0.3 21 3/8/2024
7.0.2 17 3/8/2024
7.0.1 21 3/8/2024
7.0.0 21 3/8/2024
7.0.0-beta3 21 3/8/2024
7.0.0-beta2 19 3/8/2024
7.0.0-beta1 18 3/8/2024
6.4.1 18 3/8/2024
6.4.1-beta1 22 3/8/2024
6.4.0 19 3/8/2024
6.4.0-rc4 24 3/8/2024
6.4.0-rc3 21 3/8/2024
6.4.0-rc2 21 3/8/2024
6.4.0-rc1 20 3/8/2024
6.4.0-beta9 18 3/8/2024
6.4.0-beta8 18 3/8/2024
6.4.0-beta7 22 3/8/2024
6.4.0-beta6 18 3/8/2024
6.4.0-beta5 20 3/8/2024
6.4.0-beta4 21 3/8/2024
6.4.0-beta3 19 3/8/2024
6.4.0-beta2 23 3/8/2024
6.4.0-beta10 19 3/8/2024
6.4.0-beta1 17 3/8/2024
6.3.4-alpha 18 3/2/2024
6.3.3-alpha 19 3/8/2024
6.2.1 20 3/8/2024
6.2.1-beta1 24 3/8/2024
6.2.0 16 3/8/2024
6.2.0-beta1 20 3/8/2024
6.1.0 23 3/8/2024
6.0.2 19 3/8/2024
6.0.1 23 3/8/2024
6.0.0 19 3/8/2024
5.6.2 20 3/8/2024
5.6.1 19 3/8/2024
5.5.0 18 3/8/2024
5.4.0 23 3/2/2024
5.3.0 21 3/8/2024
5.2.0 22 3/8/2024
5.1.0 22 3/6/2024
5.0.0.1 18 2/11/2024
4.0.0.1 20 2/10/2024
4.0.0 18 3/8/2024
3.4.6 21 3/8/2024
3.4.0 19 3/8/2024
3.3.1 17 3/8/2024
3.2.0 25 3/3/2024
3.1.0 21 3/8/2024
3.0.0.1 25 2/10/2024
3.0.0 18 3/8/2024
2.0.0 25 3/8/2024
1.3.0 20 3/8/2024