EAN-13 checksum

Silas - 2005.08.18

Suppose you have first 12 digits of EAN-13 barcode. You'll have to calcule the 13th digit, which is the checksum digit. I've done a little proc that makes it for you:

  proc checksum {first12digits} {
    set total 0

    for {set i 0} {$i < 12} {incr i} {
      set multiplicator [expr ($i % 2 == 0) ? 1 : 3]
      incr total [expr [string index $first12digits $i] * $multiplicator]
    }

    set checksum [expr 10 - ($total % 10)]
    return $checksum
  }

AK: A similar procedure can also be found in EAN-13 generation (ean13_csum).

See also Tcllib EAN 13 Validation and related packages.