A universally-unique, lexicographically-sortable, identifier generator
78
ULID format validation to ensure proper structure, length, and character encoding according to the ULID specification.
Validates whether a string is a properly formatted ULID.
/**
* Check if a ULID is valid
* @param id - The string to validate
* @returns True if the string is a valid ULID, false otherwise
*/
function isValid(id: string): boolean;Usage Examples:
import { isValid, ulid } from "ulid";
// Validate generated ULID
const id = ulid();
console.log(isValid(id)); // true
// Validate existing ULIDs
console.log(isValid("01HNZX8JGFACFA36RBXDHEQN6E")); // true
console.log(isValid("01ARYZ6S41TSV4RRFFQ69G5FAV")); // true
// Invalid cases
console.log(isValid("")); // false - empty string
console.log(isValid("invalid")); // false - wrong length
console.log(isValid("01HNZX8JGFACFA36RBXDHEQN6")); // false - too short
console.log(isValid("01HNZX8JGFACFA36RBXDHEQN6EX")); // false - too long
console.log(isValid("01HNZX8JGFACFA36RBXDHEQN6U")); // false - invalid character 'U'
console.log(isValid("81HNZX8JGFACFA36RBXDHEQN6E")); // false - invalid first character
// Use in conditional logic
function processULID(id: string) {
if (!isValid(id)) {
throw new Error(`Invalid ULID: ${id}`);
}
// Process valid ULID
return id.toLowerCase();
}
// Filter valid ULIDs from array
const ids = ["01HNZX8JGFACFA36RBXDHEQN6E", "invalid", "01ARYZ6S41TSV4RRFFQ69G5FAV"];
const validIds = ids.filter(isValid);
console.log(validIds); // ["01HNZX8JGFACFA36RBXDHEQN6E", "01ARYZ6S41TSV4RRFFQ69G5FAV"]Validation Rules:
The isValid function checks that the input string:
Crockford Base32 Alphabet:
Valid characters: 0123456789ABCDEFGHJKMNPQRSTVWXYZ
Excluded characters: I, L, O, U (to avoid confusion with similar-looking characters)
Case Sensitivity:
The validation function is case-insensitive. Both uppercase and lowercase characters are accepted:
console.log(isValid("01hnzx8jgfacfa36rbxdheqn6e")); // true - lowercase
console.log(isValid("01HNZX8JGFACFA36RBXDHEQN6E")); // true - uppercase
console.log(isValid("01HnZx8JgFaCfA36RbXdHeQn6E")); // true - mixed casePerformance Notes:
falseInstall with Tessl CLI
npx tessl i tessl/npm-ulidevals
scenario-1
scenario-2
scenario-3
scenario-4
scenario-5
scenario-6
scenario-7
scenario-8
scenario-9
scenario-10