How to use the routing number validator
- Select Validate from the mode dropdown.
- Type or paste a nine-digit routing number into the input field.
- The tool instantly shows whether the number passes the checksum and which Federal Reserve district its prefix points to.
- Switch to Generate to produce a random test number that satisfies the checksum formula.
How the routing number checksum works
The ABA routing number uses a weighted checksum to detect transcription errors. Each of the nine digits is multiplied by a repeating weight pattern of 3, 7, and 1. The formula is:
3*(d1 + d4 + d7) + 7*(d2 + d5 + d8) + 1*(d3 + d6 + d9)
The total must be evenly divisible by 10. For example, take the routing number 021000021. The calculation is 3*(0+0+0) + 7*(2+0+2) + 1*(1+0+1) = 0 + 28 + 2 = 30. Since 30 modulo 10 equals zero, the number passes the checksum. The tool reports this as passing the checksum rather than as valid, because the checksum alone cannot confirm that a bank exists.
This routing number checksum catches most single-digit errors and adjacent digit transpositions, making it reliable for data entry validation.
Federal Reserve district prefixes
The first two digits of a valid routing number indicate the Federal Reserve district where the institution is located. Only specific ranges are assigned. Here is the complete mapping used by this aba routing number checker:
| Prefix | District |
|---|---|
| 01 | Boston |
| 02 | New York |
| 03 | Philadelphia |
| 04 | Cleveland |
| 05 | Richmond |
| 06 | Atlanta |
| 07 | Chicago |
| 08 | St. Louis |
| 09 | Minneapolis |
| 10 | Kansas City |
| 11 | Dallas |
| 12 | San Francisco |
Prefixes 21 through 32 are the same districts plus 20 (the thrift range), and 61 through 72 are the same districts plus 60 (the electronic range), so 32 is San Francisco, thrift range, and 66 is Atlanta, electronic range. Prefix 80 was used for traveler's checks, and prefix 00 is not assigned to a bank. Any other two-digit prefix means the number cannot be a real ABA routing number.
Using the aba routing number generator for testing
Developers building financial applications often need sample routing numbers for unit tests and form validation. The built-in aba routing number generator picks a valid two-digit prefix at random, fills six middle digits randomly, then calculates the ninth digit so the entire number satisfies the checksum formula.
Important: every number produced by the generate mode is random test data, not a real bank account identifier. It is not meant to match a real bank, although a random number could coincidentally match one. Never use generated numbers in actual payment instructions or wire transfers. They exist solely to help you test input masks, validation logic, and database schemas without touching real financial data.
If you also need to validate payment card numbers during development, see the credit card checker. For international bank accounts, the IBAN checker applies a different modulus-97 algorithm.
Common mistakes when validating routing numbers
A frequent error is confusing the routing number with the account number. The routing number is always exactly nine digits, while account numbers vary in length from bank to bank. Entering an account number into this routing number validator will correctly flag it as invalid due to wrong length or a failed checksum.
Another mistake is including spaces, hyphens, or leading zeros inconsistently. Some printed checks show the routing number with dashes or embedded in a longer MICR line. Strip all non-digit characters before validating. The checker expects exactly nine numeric characters.
Finally, remember that passing the checksum does not guarantee the number belongs to an active bank. It only proves the digits are mathematically consistent. Always verify against an authoritative directory when processing real transactions.
Where routing numbers appear
In the United States, the ABA routing number appears on the bottom left of personal and business checks, encoded in magnetic ink character recognition (MICR) font. It also surfaces in direct deposit forms, automated clearing house (ACH) setups, and wire transfer instructions.
When building software that accepts these numbers, client-side validation with a routing number validator provides immediate feedback to users before submission. Pair it with server-side verification against a current routing directory for production systems.
Worked examples
| Example | Input | Result |
|---|---|---|
| Passing New York number | Mode: validate; Routing number: 021000021 | Status: Passes checksum; District: New York (02); Checksum sum: 30 |
| Passing Boston number | Mode: validate; Routing number: 011000015 | Status: Passes checksum; District: Boston (01); Checksum sum: 20 |
| Invalid checksum | Mode: validate; Routing number: 021000022 | Checksum failed. Weighted sum is 31, which is not divisible by 10. |
| Generate a test number | Mode: generate | 296040913 |
FAQ
What is an ABA routing number?
An ABA routing number is a nine-digit code used in the United States to identify a specific financial institution for check processing, ACH transfers, and wire payments.
How does the routing number checksum work?
Each digit is multiplied by a repeating weight of 3, 7, and 1. The sum of all nine weighted digits must be divisible by 10 for the number to be considered valid.
Are the generated routing numbers real?
No. The generator produces random numbers that pass the mathematical checksum and are meant as test data only. They are not chosen to match a real bank, although a random number could coincidentally match one, so never use them in real payment instructions.
Can I use this tool to find my bank's routing number?
No. This aba routing number checker only validates the format and checksum. To find your actual routing number, look at the bottom left of a check or contact your bank directly.
Why does the tool reject a nine-digit number that looks correct?
The first two digits must fall within assigned Federal Reserve ranges (00-12, 21-32, 61-72, or 80), and the weighted checksum must equal a multiple of 10. If either condition fails, the number is structurally invalid.
Is my data sent to a server when I use this tool?
No. All validation and generation happens locally in your browser. Nothing is transmitted over the network.