UPC-A check digit validator
Prefix a 0 to make 13 digits, then apply the same alternating 1/3 weighting as EAN-13.
036000291457 fails the UPC-A checksum, and 12 different single-character fixes would each satisfy it — checksum arithmetic alone cannot narrow this down further.
12 equally valid single-character fixes — checksum arithmetic alone cannot narrow this down to one digit:
- 536000291457 (substitution, change the character at position 1 from "0" to "5")
- 086000291457 (substitution, change the character at position 2 from "3" to "8")
- 031000291457 (substitution, change the character at position 3 from "6" to "1")
- 036500291457 (substitution, change the character at position 4 from "0" to "5")
- 036050291457 (substitution, change the character at position 5 from "0" to "5")
- 036005291457 (substitution, change the character at position 6 from "0" to "5")
- 036000791457 (substitution, change the character at position 7 from "2" to "7")
- 036000241457 (substitution, change the character at position 8 from "9" to "4")
- 036000296457 (substitution, change the character at position 9 from "1" to "6")
- 036000291957 (substitution, change the character at position 10 from "4" to "9")
- 036000291407 (substitution, change the character at position 11 from "5" to "0")
- 036000291452 (substitution, change the character at position 12 from "7" to "2")
A passing checksum only proves the number is arithmetically self-consistent. It does not prove an IBAN names an open account, an ISBN is assigned to a real book, or a card is active, unstolen, or has funds. Those require asking the bank, the ISBN registry, or the card network.
Try it: a valid example · a broken example
curl 'https://check-digit.gumballtools.com/api/v1/run?input=036000291452&format=upca'