I wish to have a function where site members can see how far apart they are from each other. So far I have only looked at the US and am using zipcodes for the location because that seems to be the easiest (aside from the fact that it seems to be how most sites do it and there must be a reason). I haven't even considered other countries yet, if somebody has some insight from that angle all comments are appreciated.

I am aware of the free downloads available at
If the places files included a city name, I would be tempted to base the calculations on city names instead of zip codes.

The 1990 file had about 30,000 records, as did the 2000 Zip Code Tabulation Area file. If I am reading it right, the ZCTA file is supposed to generally follow the USPS zip codes as they were at the time of the survey.

I found a supposedly more updated list containing over 40,000 records at
but I found it full of redundant lat and lon information leading me to believe the older file might be more trustworthy.

I did the best I could splicing the files together and ended up with a database that seems functional for practical purposes. However, I am bothered by the knowledge that I do know that I have bad data. When I do a location comparison between the 1990 and 2000 zipcodes I find at least a couple thousand discrepancies that seem too large to be the result of a post office moving or the census dept re-defining the coordinates to reflect the population densities.

I considered purchasing a commercial list, but how do I know their information is any better than mine? Or maybe even worse. I have found, on the web, commercial sites offering their zip code databases for sale. On SOME of them, when I try their demo, I find the some of the same discrepancies that I cleaned out of my files. Some only offer a small sample. Others seem cleaner, which means that either they have better data sources then me or perhaps they just did a 'best guess' as I did to clean up their data. How would one go about verifying large numbers of locations? Where would one go to get an accurate list, and how would such accuracy be verified and maintained?

Zip codes, by definition, are a poor tool to use for location data but they sure are handy and user friendly. The fact is, for my application accuracy is not of great consequence. If somebody notices a discrepancy I suppose I can research it individually and fix it by hand, so I guess my questions are more academic in nature unless I find a compelling alternative.