TECHNICAL REFERENCE & VERIFICATION GUIDE
The Modulus 11 Check Digit Method
1. Introduction & Core Concepts
The Modulus 11 check digit algorithm is an exceptionally robust mathematical method used to detect transcription
and data-entry errors in unique identification numbers. Developed to secure human input against typos, Modulus 11
is widely integrated into global standards, including the 10-digit International Standard Book Number (ISBN-10),
bank routing codes, tax identification numbers, and social security numbers.
While simple modulo-10 checksums (such as the Luhn algorithm) excel at catching single-digit typos, they are less
effective at identifying transposition errors—where two adjacent characters are accidentally swapped (e.g., typing
43 instead of 34). Modulus 11 is mathematically optimized to catch virtually 100\% of single-digit substitutions and
over 98\% of transposition mistakes.
2. The Step-by-Step Algorithm
To compute a Modulus 11 check digit, each digit of the base identifier is weighted according to its positional
significance, and the final digit is determined by calculating the remainder when divided by 11.
Step 1: Assign Weights Step 2: Sum & Subtraction
Assign an incremental weight starting from the Multiply each digit by its weight, sum the products
rightmost data digit (excluding the check digit) together (S), and compute the remainder divided
and progressing leftward. Typically, weights start by 11:
at 2 and increment by 1 for each position:
Remainder = S mod 11
Weights: ..., 6, 5, 4, 3, 2
Check Digit = 11 - Remainder
Handling Out-of-Bounds Results (The Special Cases)
Because the divisor is 11, the resulting mathematical check digit can fall between 0 and 10. Since a check
digit must occupy a single character position, two specific rules apply:
• If the final subtraction yields 10, the check digit is designated as the letter X (the Roman numeral for 10).
• If the final subtraction yields 11 (meaning the remainder was 0), the check digit is designated as 0.
Technical Reference Guide: Modulus 11 Page 1 of 3
3. Practical Execution Examples
Example 1: Standard Calculation (Check Digit is 0–9)
Let's calculate the check digit for the 6-digit base sequence: 036532.
Base Digits 0 3 6 5 3 2 Calculations
Assigned Weights 7 6 5 4 3 2 Right-to-left weights
Weighted Products 0 18 30 20 9 4 Sum (S) = 81
Remainder = 81 mod 11 = 4 | Check Digit = 11 - 4 = 7
The fully compiled identifier is: 0365327.
Example 2: Handling a Remainder of 1 (Check Digit is X)
Let's calculate the check digit for the 6-digit base sequence: 013001.
Base Digits 0 1 3 0 0 1 Calculations
Assigned Weights 7 6 5 4 3 2 Right-to-left weights
Weighted Products 0 6 15 0 0 2 Sum (S) = 23
Remainder = 23 mod 11 = 1 | Check Digit = 11 - 1 = 10 → X
The fully compiled identifier is: 013001X.
Example 3: Handling a Remainder of 0 (Check Digit is 0)
Let's calculate the check digit for the 5-digit base sequence: 12356.
Base Digits 1 2 3 5 6 Calculations
Assigned Weights 6 5 4 3 2 Right-to-left weights
Weighted Products 6 10 12 15 12 Sum (S) = 55
Remainder = 55 mod 11 = 0 | Check Digit = 11 - 0 = 11 → 0
The fully compiled identifier is: 123560.
Technical Reference Guide: Modulus 11 Page 2 of 3
4. Reference Pseudocode Implementation
Below is a clean, structured Python implementation designed to calculate and validate any standard Modulus 11
check digit.
def calculate_modulus_11(base_num: str) -> str:
# Reverse string to assign weights easily starting from right
digits = [int(char) for char in reversed(base_num) if [Link]()]
# Calculate weighted sum
weighted_sum = sum(digit * (i + 2) for i, digit in enumerate(digits))
remainder = weighted_sum % 11
check_value = 11 - remainder
if check_value == 10:
return "X"
elif check_value == 11:
return "0"
else:
return str(check_value)
Modulus 11 Check Digit Reference Manual • Generated Technical Documentation
Technical Reference Guide: Modulus 11 Page 3 of 3