FluentValidation 12.0.0-preview1

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