A US ZIP code is 5 characters. From those 5 characters you can determine the city, the state, and the country. That’s 3 fields. Autofilled. From one input.
But you don’t do that, do you? No. You make me type my street address, then my city, then scroll through a dropdown of 50 states to find Illinois wedged between Idaho and Indiana, then type my ZIP, then — the pièce de résistance — scroll through 200+ countries to find United States, which half the time is filed under “T” because some dipshit thought “The United States of America” was the correct sort key.
It’s 2026. What the fuck are we doing.
It’s 5 keystrokes.
I type 90210. You now know I’m in Beverly Hills, California, United States. You didn’t need me to tell you that. You didn’t need a dropdown. You didn’t need me to scroll past Turkmenistan. You had the answer the entire time, in 5 digits, and you just… didn’t use it.
And here’s the bonus: once you know the ZIP, your street address autocomplete is searching a few thousand addresses instead of 160 million. It’s faster. It’s more accurate. I type less. You get cleaner data. Everyone wins.
This is not new technology. Free APIs exist. It’s like 4 lines of code. Look:
const res = await fetch(`https://api.zippopotam.us/us/${zip}`)
const data = await res.json()
city.value = data.places[0]["place name"]
state.value = data.places[0]["state"]
country.value = "United States"
That’s it. That’s the whole thing. You could have shipped this instead of reading this website.
Don’t believe me? Try it.
See how that works? See how you typed 5 numbers and 3 fields filled themselves in? See how you’re now typing your street address and it already knows what city you’re in? That’s not magic. That’s a lookup table. We’ve had those since the 1960s.
The hall of shame.
Tier 1: ZIP at the bottom. Street, city, state, ZIP, country. You had the data to autofill 3 fields and you just… put it last. Amazon does this. Target does this. Walmart does this. Basically everyone does this. Billions of collective hours of human life, spent scrolling for “Illinois.”
Tier 2: No autofill at all. You collect the ZIP. You have the ZIP. You do nothing with it. The ZIP just sits there in your database, inert, like a fire extinguisher in a glass case that says “do not break.” What are you saving it for.
Tier 3: The scrollable country dropdown. 240 countries. No search. No type-ahead. Just pure, unfiltered, alphabetical scrolling. Bonus points if the US is under “T.” Extra bonus points if it’s not even alphabetical. You absolute psychopaths.
Tier 4: The form that resets when you hit back. I filled out 14 fields. Your payment processor failed. I hit back. Everything is gone. My street. My city. My state. My will to live. All of it. Returned to the void. The developer responsible for this sleeps eight hours a night. That’s the part that haunts me.
Submit to the wall of shame.
Found a site that puts the ZIP code last? A country dropdown sorted by vibes? A form that makes you cry?
Send it to us →
🚧 Public wall of shame coming soon. 🚧
So fix your forms.
Put the ZIP code first. Autofill the city. Autofill the state. Autofill the country. Let the user type their street address last, with autocomplete scoped to their ZIP.
It is a solved problem. The API is free. The code is 5 lines. There is genuinely no reason not to do this other than the mass institutional inertia of a million product managers copy-pasting the same address form template from 2009 and never once asking “wait, why is the ZIP code at the bottom?”
Why is the ZIP code at the bottom?
Put it first, you animals.
Tweet this ·
Post to HN ·
Copy link
Share this before you have to fill out another address form.

