EAN-8 barcode, checked by HTML alone

This page contains no script. The field's pattern attribute holds a 3,971-character regular expression that the browser's own form validation runs on every change.

Accepted
8 digits, the last one a check digit.
Valid
96385074
Invalid
96385072 (last character changed)

Change the last character and the field turns red; submitting is blocked with the browser's own message. The field is required, so an empty field is invalid too. For an optional field, remove required: browsers never test an empty value against the pattern.

The check catches any single wrong digit. Some schemes miss certain swaps of neighbours: Luhn misses 09 ↔ 90, barcodes miss swaps of digits that differ by 5. Generated by rexsum.