Skip to content

Validation Decorators Reference

The full list of decorators shipped with class-validator, grouped by category.

Common Validation Decorators

Decorator Description
@IsDefined(value: any) Checks if value is defined (!== undefined, !== null). This is the only decorator that ignores skipMissingProperties option.
@IsOptional() Checks if given value is empty (=== null, === undefined) and if so, ignores all the validators on the property.
@Equals(comparison: any) Checks if value equals (===) comparison.
@NotEquals(comparison: any) Checks if value not equal (!==) comparison.
@IsEmpty() Checks if given value is empty (=== '', === null, === undefined).
@IsNotEmpty() Checks if given value is not empty (!== '', !== null, !== undefined).
@IsIn(values: any[]) Checks if value is in an array of allowed values.
@IsNotIn(values: any[]) Checks if value is not in an array of disallowed values.

Type Validation Decorators

Decorator Description
@IsBoolean() Checks if a value is a boolean.
@IsDate() Checks if the value is a date.
@IsString() Checks if the value is a string.
@IsNumber(options: IsNumberOptions) Checks if the value is a number.
@IsInt() Checks if the value is an integer number.
@IsArray() Checks if the value is an array.
@IsEnum(entity: object) Checks if the value is a valid enum.

Number Validation Decorators

Decorator Description
@IsDivisibleBy(num: number) Checks if the value is a number that's divisible by another.
@IsPositive() Checks if the value is a positive number greater than zero.
@IsNegative() Checks if the value is a negative number smaller than zero.
@Min(min: number) Checks if the given number is greater than or equal to given number.
@Max(max: number) Checks if the given number is less than or equal to given number.

Date Validation Decorators

Decorator Description
@MinDate(date: Date \| (() => Date)) Checks if the value is a date that's after the specified date.
@MaxDate(date: Date \| (() => Date)) Checks if the value is a date that's before the specified date.

String-type Validation Decorators

Decorator Description
@IsBooleanString() Checks if a string is a boolean (e.g. is "true" or "false" or "1", "0").
@IsDateString() Alias for @IsISO8601().
@IsNumberString(options?: IsNumericOptions) Checks if a string is a number.

String Validation Decorators

Decorator Description
@Contains(seed: string) Checks if the string contains the seed.
@NotContains(seed: string) Checks if the string not contains the seed.
@IsAlpha() Checks if the string contains only letters (a-zA-Z).
@IsAlphanumeric() Checks if the string contains only letters and numbers.
@IsDecimal(options?: IsDecimalOptions) Checks if the string is a valid decimal value. Default IsDecimalOptions are force_decimal=False, decimal_digits: '1,', locale: 'en-US'.
@IsAscii() Checks if the string contains ASCII chars only.
@IsBase32() Checks if a string is base32 encoded.
@IsBase58() Checks if a string is base58 encoded.
@IsBase64(options?: IsBase64Options) Checks if a string is base64 encoded.
@IsIBAN() Checks if a string is an IBAN (International Bank Account Number).
@IsBIC() Checks if a string is a BIC (Bank Identification Code) or SWIFT code.
@IsByteLength(min: number, max?: number) Checks if the string's length (in bytes) falls in a range.
@IsCreditCard() Checks if the string is a credit card.
@IsCurrency(options?: IsCurrencyOptions) Checks if the string is a valid currency amount.
@IsISO4217CurrencyCode() Checks if the string is an ISO 4217 currency code.
@IsEthereumAddress() Checks if the string is an Ethereum address using basic regex. Does not validate address checksums.
@IsBtcAddress() Checks if the string is a valid BTC address.
@IsDataURI() Checks if the string is a data uri format.
@IsEmail(options?: IsEmailOptions) Checks if the string is an email.
@IsFQDN(options?: IsFQDNOptions) Checks if the string is a fully qualified domain name (e.g. domain.com).
@IsFullWidth() Checks if the string contains any full-width chars.
@IsHalfWidth() Checks if the string contains any half-width chars.
@IsVariableWidth() Checks if the string contains a mixture of full and half-width chars.
@IsHexColor() Checks if the string is a hexadecimal color.
@IsHSL() Checks if the string is an HSL color based on the CSS Colors Level 4 specification.
@IsRgbColor(options?: IsRgbOptions) Checks if the string is a rgb or rgba color.
@IsIdentityCard(locale?: string) Checks if the string is a valid identity card code.
@IsPassportNumber(countryCode?: string) Checks if the string is a valid passport number relative to a specific country code.
@IsPostalCode(locale?: string) Checks if the string is a postal code.
@IsHexadecimal() Checks if the string is a hexadecimal number.
@IsOctal() Checks if the string is an octal number.
@IsMACAddress(options?: IsMACAddressOptions) Checks if the string is a MAC Address.
@IsIP(version?: "4"\|"6") Checks if the string is an IP (version 4 or 6).
@IsPort() Checks if the string is a valid port number.
@IsISBN(version?: "10"\|"13") Checks if the string is an ISBN (version 10 or 13).
@IsEAN() Checks if the string is an EAN (European Article Number).
@IsISIN() Checks if the string is an ISIN (stock/security identifier).
@IsISO8601(options?: IsISO8601Options) Checks if the string is a valid ISO 8601 date format. Use the option strict = true for additional checks for a valid date.
@IsJSON() Checks if the string is valid JSON.
@IsJWT() Checks if the string is valid JWT.
@IsObject() Checks if the object is a valid Object (null, functions, arrays will return false).
@IsNotEmptyObject() Checks if the object is not empty.
@IsLowercase() Checks if the string is lowercase.
@IsLatLong() Checks if the string is a valid latitude-longitude coordinate in the format lat, long.
@IsLatitude() Checks if the string or number is a valid latitude coordinate.
@IsLongitude() Checks if the string or number is a valid longitude coordinate.
@IsMobilePhone(locale: string) Checks if the string is a mobile phone number.
@IsISO6391() Checks if the string is a valid ISO 639-1 officially assigned language code.
@IsISO31661Alpha2() Checks if the string is a valid ISO 3166-1 alpha-2 officially assigned country code.
@IsISO31661Alpha3() Checks if the string is a valid ISO 3166-1 alpha-3 officially assigned country code.
@IsISO31661Numeric() Checks if the string is a valid ISO 3166-1 numeric officially assigned country code.
@IsLocale() Checks if the string is a locale.
@IsPhoneNumber(region: string) Checks if the string is a valid phone number using libphonenumber-js.
@IsMongoId() Checks if the string is a valid hex-encoded representation of a MongoDB ObjectId.
@IsMultibyte() Checks if the string contains one or more multibyte chars.
@IsNumberString(options?: IsNumericOptions) Checks if the string is numeric.
@IsSurrogatePair() Checks if the string contains any surrogate pairs chars.
@IsTaxId() Checks if the string is a valid tax ID. Default locale is en-US.
@IsUrl(options?: IsURLOptions) Checks if the string is a URL.
@IsMagnetURI() Checks if the string is a magnet uri format.
@IsUUID(version?: UUIDVersion) Checks if the string is a UUID (version 1-8, nil, max, loose, all). Also accepts array of versions.
@IsFirebasePushId() Checks if the string is a Firebase Push ID.
@IsUppercase() Checks if the string is uppercase.
@Length(min: number, max?: number) Checks if the string's length falls in a range.
@MinLength(min: number) Checks if the string's length is not less than given number.
@MaxLength(max: number) Checks if the string's length is not more than given number.
@Matches(pattern: RegExp, modifiers?: string) Checks if string matches the pattern. Either matches('foo', /foo/i) or matches('foo', 'foo', 'i').
@IsMilitaryTime() Checks if the string is a valid representation of military time in the format HH:MM.
@IsTimeZone() Checks if the string represents a valid IANA time-zone.
@IsHash(algorithm: string) Checks if the string is a hash. Supported: md4, md5, sha1, sha256, sha384, sha512, ripemd128, ripemd160, tiger128, tiger160, tiger192, crc32, crc32b.
@IsMimeType() Checks if the string matches a valid MIME type format.
@IsSemVer() Checks if the string is a Semantic Versioning Specification (SemVer).
@IsISSN(options?: IsISSNOptions) Checks if the string is an ISSN.
@IsISRC() Checks if the string is an ISRC.
@IsRFC3339() Checks if the string is a valid RFC 3339 date.
@IsStrongPassword(options?: IsStrongPasswordOptions) Checks if the string is a strong password.

Array Validation Decorators

Decorator Description
@ArrayContains(values: any[]) Checks if array contains all values from the given array of values.
@ArrayNotContains(values: any[]) Checks if array does not contain any of the given values.
@ArrayNotEmpty() Checks if given array is not empty.
@ArrayMinSize(min: number) Checks if the array's length is greater than or equal to the specified number.
@ArrayMaxSize(max: number) Checks if the array's length is less or equal to the specified number.
@ArrayUnique(identifier?: (o) => any) Checks if all array's values are unique. Comparison for objects is reference-based. An optional function can be specified whose return value is used for the comparison.

Object Validation Decorators

Decorator Description
@IsInstance(value: any) Checks if the property is an instance of the passed value.

Other Decorators

Decorator Description
@Allow() Prevent stripping off the property when no other constraint is specified for it.

Need documentation like this for your own product?

This site was built by Sonicar Tech LLC — we help SaaS, B2B, Enterprise, FinTech, and AI companies launch professional, docs-as-code documentation 60% faster and cheaper than building an in-house team, with first drafts delivered in 1 week.

Visit sonicar.tech