libpostal is a C library for parsing and normalizing street addresses around the world using statistical natural language processing and open geographic data.
The library addresses the challenge that free-form addresses contain local conventions, abbreviations, and context that make them difficult to index and query with traditional full-text search. It converts human-readable addresses into clean normalized forms suitable for machine comparison and full-text indexing. The approach uses statistical NLP trained on OpenStreetMap data to understand location-based strings across multiple languages and regions, enabling consistent address handling internationally without requiring a full geocoding system.
The tool suits applications dealing with maps, place search, transportation, delivery services, and record linkage where address deduplication and normalization are prerequisites. It works as a preprocessing step to improve geocoding applications by standardizing addresses before they enter downstream systems. Anyone building location-based services that must handle addresses from multiple countries should consider libpostal, particularly if their current approach relies on simple string matching or language-specific rules that break down across borders.
The project maintains an active codebase with ongoing refinements to its statistical models and language support. Development includes regular updates to address parsing logic and expansion of international language coverage. The maintainers continue to incorporate improvements based on real-world address data and community feedback.