Parses a US street address string and returns a normalized Address object. Returns nil when the string is not a recognized US address format.
This is a port of the Perl module Geo::StreetAddress::US originally written by Schuyler D. Erle.
Requires Ruby 3.3 or later. For Ruby 2.x support, use gem version 1.0.6.
gem install StreetAddressthen in your code
require 'street_address'or in your Gemfile
gem 'StreetAddress', require: 'street_address'require 'street_address'
address = StreetAddress::US.parse("1600 Pennsylvania Ave, Washington, DC, 20500")
address.number # "1600"
address.street # "Pennsylvania"
address.street_type # "Ave"
address.city # "Washington"
address.state # "DC"
address.state_name # "District Of Columbia"
address.postal_code # "20500"
address.intersection? # false
address.to_s # "1600 Pennsylvania Ave, Washington, DC 20500"
address.to_s(:line1) # "1600 Pennsylvania Ave"
address.to_s(:line2) # "Washington, DC 20500"
address.to_h # { number: "1600", street: "Pennsylvania", ... }
address = StreetAddress::US.parse("1600 Pennsylvania Ave")
address.street # "Pennsylvania"
address.number # "1600"
address.state # niladdress = StreetAddress::US.parse("5904 Richmond Hwy Ste 340 Alexandria VA 22303-1864")
address.postal_code # "22303"
address.postal_code_ext # "1864"
address.full_postal_code # "22303-1864"
# Also works without the hyphen
address = StreetAddress::US.parse("5904 Richmond Hwy Ste 340 Alexandria VA 223031864")
address.postal_code_ext # "1864"address = StreetAddress::US.parse("Hollywood Blvd and Vine St, Los Angeles, CA")
address.intersection? # true
address.street # "Hollywood"
address.street_type # "Blvd"
address.street2 # "Vine"
address.street_type2 # "St"address = StreetAddress::US.parse_address("1600 Pennsylvania Avenue")
# nil - not enough information to be a full address
address = StreetAddress::US.parse_address("1600 Pennsylvania Ave, Washington, DC, 20500")
# Returns Address object - full address provided- US addresses only (returns
nilfor international addresses) - PO Boxes are not supported
- Military addresses (APO/FPO) are not supported
- Rural routes (RR) and highway contract routes (HC) are not supported
- Addresses ending in "United States" or "USA" may not parse correctly
The MIT License
Copyright (c) 2007-2026 Derrek Long and Contributors