I have a dataset of about half a million unique addresses. An address consists of a StreetAddress1, StreetAddress2, City, State and Zip code (all addresses are in the United States).

One of my main problems dealing with this dataset coherently is inconsistency in the wording of addresses. For example, "1 MAIN STREET" might also be phrased "ONE MAIN ST" referring to the same address.

Are there any free utilities that can help me remedy addresses in this very large set?

I was thinking about writing my own simple script to make addresses consistent with the following rules:

1. ROAD / STREET / AVENUE etc. are replaced by their abbrevations RD / ST / AVE
2. Written numbers ONE / TWO / THREE etc. are replaced by 1 / 2 / 3

However I'm concerned that there are a number of edge cases where this treatment will mangle valid addresses.

Are there existing utilities I can use to accomplish this, ideally locally on my own machine?

2 Answers 2


Check this out: https://parserator.datamade.us/

source code here: https://github.com/datamade/usaddress


Standard (basic) USA address decomposition is:

Secondary Address Unit (e.g., floor, bldg.)
Postal Code
Secondary Postal Code (e.g., the 1234 part of 97123-1234)

More detailed decomposition for address matching is to further break down street:

Street Number
Street Name
Street Type (e.g., Ave, Ct)
Street Direction (e.g., NW, SE)

Here's a link to a description on how to do address reduction for matching US mailing addresses that I wrote a couple of years ago.


If have the algorithm implement in both C# and PHP. If someone is interested, leave me a comment and I'll upload it to my code site.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.