This probably isn’t news to anyone, but the postal service is a little odd. Or, at least, they’re odd who determine which city names are acceptable and which ones aren’t.
For each zip code, the postal service has a list of city names that are associated with that zip code, with one of three designations:
D (default) — this is the normal city name for this zip code.
A (acceptable) — this name is acceptable as well. It’s often a shortened version of the first record, or a smaller township within the main zip code.
N (not acceptable) — this name may not be used for bulk mailings (unless there’s a barcode on the envelope, in which case they don’t care). I’m not entirely sure why not in many cases. In some cases, it’s because the town has a different zip code, but is similarly named to this one, and would cause confusion.
For a while, I thought that certain abbreviations were always taboo. For example, “Fort Collins” may not be abbreviated as “Ft Collins”. (I mentioned this one the last time I wrote on this topic.) “Saint” becoming “St” was another example, as well as “Mount” becoming “Mt”.
I can’t think of a good reason why these names should be verboten — it’s not as though the machines couldn’t very easily figure out which one’s which (they do for first-class mail, and the fact that there are “A” records means that it doesn’t need to be a 1-to-1 correlation). But, okay, I can accept that.
But it’s not that simple. If you then look at Ft. Myer, VA, it’s reversed. You can write “Ft. Myer”. But write “Fort Myer,” and it’s “No postal discount for you!”. Why? No clue.
Saint Petersburg, FL can go either way. “St. Petersburg” is allowed. They must be easygoing there. Not so in Saint Cloud, FL. “St. Cloud” is forbidden. I was thinking at one point earlier today that it might be related to the length — longer names can be abbreviated, while shorter ones can’t. No go.
The directions aren’t any better. Most of the time, you’re not allowed to abbreviate North, West, South, or East. Some times, you have to. Westhampton Beach, NY is an amusing example, though I actually know why two (and only two) of the following are allowed:
- West Hampton Beach
- Westhampton Beach
- Westhampton Dunes
- W Hampton Bch
- W Hampton Beach
The second and fourth ones are allowed. The others are forbidden. In this case, it’s explainable: the town name doesn’t have a space in it, so the names with spaces are forbidden. But, the post office guarantees that there will be an acceptable name that’s no longer than 13 characters (the entire last line of an address can fit in 28 spaces, if you’re space-constrained — 13 for the city, space, 2 for the state, two spaces, 5-digit zip code, hyphen, 4-digit add-on). So, it had to abbreviate the “West” and “Beach” in order to get it to fit. The space would’ve been added so that the city didn’t become “Whampton Bch”, which just sounds violent. But it was begrudging, so they weren’t also going to allow “Beach” to be expanded.
Returning to the normal oddities, there’s Bowdoin, ME. “W. Bowdoin” is also allowed. But “West Bowdoin” isn’t. It’s usually the other way around.
Spaces also cause trouble. “Mc Allister, MT” must have the space. Most places aren’t allowed to have it. Missing or extraneous spaces account for a significant number of the addresses in my database that don’t standardize properly without changes.
The street-level information, by comparison, is kinda-sorta more or less straightforward, most of the time. Unless you’re in Puerto Rico, where it’s a mess. Otherwise, there are only about five rulesets that they call “unusual addressing situations.” Though there’s still enough odd data to keep that code from being simple. Street addresses are also where people get creative when writing their addresses (e.g. is “8 E Tammy Ct” address 8, apartment E? Or is it address 8 on “East Tammy Court”? Or is it address 8 on a street named “E Tammy Court”, as differentiated from “D Tammy Court”? Or maybe the lots got subdivided, and lots 8A through 8E are all separate addresses on Tammy Court. And don’t get me started on fractions). That one needs quite a few database lookups before finding one that works.
And the script I was running just finished, so I’m back to programming all these odd rules into the code.