generateCpf function exported ✓ 100.0%

Last updated: 2026-02-24T21:07:57.582Z

Metrics

LOC: 26 Complexity: 3 Params: 1 Coverage: 100.0% (10/10 lines, 50x executed)

Signature

generateCpf(formatted = true): : string

Summary

Generates a valid Brazilian CPF (Cadastro de Pessoas Físicas) with correct check digits.

Tags

#@param formatted - Whether to format as `XXX.XXX.XXX-XX` (default: `true`)#@returns A valid CPF string

Source Code

export function generateCpf(formatted = true): string {
  const digits = randomDigits(9);

  // All same digits are invalid
  if (digits.every((d) => d === digits[0])) {
    return generateCpf(formatted);
  }

  const firstCheckDigit = calculateCpfCheckDigit(
    digits,
    [10, 9, 8, 7, 6, 5, 4, 3, 2],
  );
  digits.push(firstCheckDigit);

  const secondCheckDigit = calculateCpfCheckDigit(
    digits,
    [11, 10, 9, 8, 7, 6, 5, 4, 3, 2],
  );
  digits.push(secondCheckDigit);

  const cpf = digits.join("");

  if (!formatted) return cpf;

  return `${cpf.slice(0, 3)}.${cpf.slice(3, 6)}.${cpf.slice(6, 9)}-${cpf.slice(9)}`;
}

Dependencies (Outgoing)

graph LR generateCpf["generateCpf"] randomDigits["randomDigits"] calculateCpfCheckDigit["calculateCpfCheckDigit"] generateCpf -->|calls| randomDigits generateCpf -->|calls| generateCpf generateCpf -->|calls| calculateCpfCheckDigit style generateCpf fill:#dbeafe,stroke:#2563eb,stroke-width:2px click generateCpf "e434017adeb6e338.html" click randomDigits "2053b2f7a989c95f.html" click calculateCpfCheckDigit "87cd58e187724918.html"
TargetType
randomDigits calls
generateCpf calls
calculateCpfCheckDigit calls

Impact (Incoming)

graph LR generateCpf["generateCpf"] GeneratorFn["GeneratorFn"] generatePassword["generatePassword"] generateCpfCnpj["generateCpfCnpj"] generateCpf -->|calls| generateCpf GeneratorFn -->|calls| generateCpf generatePassword -->|uses| generateCpf generateCpfCnpj -->|calls| generateCpf style generateCpf fill:#dbeafe,stroke:#2563eb,stroke-width:2px click generateCpf "e434017adeb6e338.html" click GeneratorFn "07e2c388ba1ac3f3.html" click generatePassword "6edfc36473487c94.html" click generateCpfCnpj "5206cdac70a3cf88.html"
SourceType
generateCpf calls
GeneratorFn calls
generatePassword uses
generateCpfCnpj calls