What a Canadian address looks like, why it breaks forms built elsewhere, and how to store one without losing information.
A Canadian address is read from the most specific line to the least: the recipient, then any unit and street, then the municipality with its province and postal code on one line, then the country.
The municipality line is the one that catches people out. City, province code and postal code share a single line, and the postal code is separated from the province by two spaces in Canada Post’s canonical form.
Priya Sandhu ← recipient Northwind Testing Ltd. ← organisation, optional 100-1234 Yonge St W ← unit-hyphen-civic, street, directional Toronto ON M5V 3L9 ← municipality, province code, postal code Canada ← country, on international mail
There are two forms and they are not interchangeable. The display form is what a person reads — mixed case, with punctuation. The Canada Post canonical form is what machine sorting expects: uppercase, no punctuation, and street types abbreviated.
Store the display form and derive the canonical one. Doing it the other way round loses the capitalisation of names and cannot be undone.
| Aspect | Display | Canonical |
|---|---|---|
| Case | Mixed | UPPERCASE |
| Punctuation | Kept | Removed |
| Street type | Street, Avenue | ST, AVE |
| Example | St. John’s NL A1C 5H7 | ST JOHNS NL A1C 5H7 |
A unit number goes in front of the civic number, joined by a hyphen: 100-1234 Yonge St. This is the form that breaks address parsers written for United States addresses, which expect the unit after the street or on a second line.
The written alternatives are also in use — Unit 100, Suite 100, Apt 100, usually on a second line — so a parser has to handle both. A splitter that treats the hyphen as a range, or that reads 100-1234 as a single civic number, produces wrong output on a very common shape.
A directional follows the street type and is abbreviated: N, S, E, W, NE, NW, SE, SW. It is part of the street name for matching purposes — Yonge St W and Yonge St E are different streets, and dropping the directional merges two addresses that are not the same place.
French addresses are built differently rather than translated. The civic number is followed by a comma, the street type comes first and is lowercase, and the directional is a French word.
The comma is the detail that breaks parsers: splitting an address string on commas to separate street from city yields a bare number as the first field.
| Aspect | English | French |
|---|---|---|
| Order | name then type | type then name |
| Type case | Capitalised | lowercase |
| After civic number | space | comma and space |
| Directional | W | Ouest |
| Unit | Apt, Suite, Unit | app., bureau |
| Example | 1234 Sainte-Catherine St W | 1234, rue Sainte-Catherine Ouest |
Not every Canadian address has a street. Rural routes, post office boxes and general delivery are addresses in their own right, not fallbacks for a missing one, and in many northern communities they are the only form available.
A form that makes a civic number mandatory cannot accept them, which is a common way for a checkout or signup form to exclude Canadian customers it would otherwise serve.
Most address forms are built for United States addresses first. This is the mapping, and the places it goes wrong.
| Canadian field | Common US/international field | What goes wrong |
|---|---|---|
| Postal code | ZIP code | ZIP validation expects 5 digits; Canadian codes are 6 alphanumeric characters with a space |
| Province / Territory | State | A state dropdown with 50 entries has no Canadian regions; "county" is not a Canadian concept at all |
| Municipality | City | Maps cleanly |
| Unit | Apt / Suite line 2 | Canadian unit-hyphen-civic puts it in line 1, so a strict line-2-only form loses it |
| Civic number | House number | Maps cleanly, except in Quebec where a comma follows it |
| Directional | part of street name | Often dropped, which merges distinct streets |
On the same line as the municipality and the province code, at the end: Toronto ON M5V 3L9. Canada Post’s canonical form uses two spaces between the province code and the postal code.
Use the two-letter code on the address line — ON, QC, BC. Store the code, not the name: names vary by language and by whether an article is included, and the code does not.
Unit-hyphen-civic is the standard form: 100-1234 Yonge St. Unit 100 or Suite 100 on a second line is also correct and widely used, so a parser needs to handle both.
No. The structure differs: the street type comes first and is lowercase, the civic number is followed by a comma, and the directional is a French word. Translating word by word produces something that is not a correct address in either language.
Only for international mail. Within Canada it is omitted, and Canada Post’s canonical form for domestic mail ends at the municipality line.
Everything this site generates is synthetic, produced for development, QA, testing, demos and staging. The records do not represent real people, and the addresses are not verified deliverable addresses.