Canadian · Validation
Postal code to province.
Find which province or territory a Canadian postal code starts in, whether it is rural, and whether it matches the province on the address. Format and first-letter mapping only: it cannot tell you the code exists or was ever assigned. Everything runs in your browser.
Inputs
Result
Enter a postal code and press Check.
What province does a postal code start with?
The first character of a Canadian postal code identifies one of 18 major geographic areas. Outside Quebec and Ontario a letter is a whole province; Quebec uses G, H and J, Ontario uses K, L, M, N and P, and X is shared by the Northwest Territories and Nunavut.
- A Newfoundland and Labrador · B Nova Scotia · C Prince Edward Island · E New Brunswick
- G Eastern Quebec · H Metropolitan Montreal · J Western Quebec
- K Eastern Ontario · L Central Ontario · M Metropolitan Toronto · N Southwestern Ontario · P Northern Ontario
- R Manitoba · S Saskatchewan · T Alberta · V British Columbia
- X Northwest Territories/Nunavut · Y Yukon
The second character is 0 for a rural code (for example A0A) and 1 to 9 for an urban one (for example M2T). The letters D, F, I, O, Q and U are never used, and W and Z never appear in the first position.
A mismatch means the postal code’s first letter does not belong to the province you picked. It usually points to a typo in one of the two, though a few border-area addresses can legitimately be served across a boundary.
Sources
- Canada Post, Addressing guidelines: postal codes (first-character table; second character 0 is rural, 1 to 9 urban).
- Wikipedia, Postal codes in Canada, quoting Canada Post: “Postal codes use twenty uppercase letters of the English alphabet; they do not include the letters D, F, I, O, Q, or U,” and “The first position also does not make use of the letters W or Z.” Its district table agrees with the Canada Post table above.
What a passing check does and doesn’t tell you
This tool checks format and the first-letter province mapping only. A postal code that passes is well-formed; it does not confirm the code, or its forward sortation area, actually exists or is deliverable. There is no lookup. Runs entirely in your browser: nothing you type is transmitted, stored, or logged.