This paper presents Distributed Free Parking System (DFPS), a decentralized system for assigning free curbside parking spaces. DFPS optimizes a system-wide social welfare objective: the total travel time to destinations for all drivers. DFPS uses the smart phones of the drivers for parking request assignment, and a centralized dispatcher to receive and distribute parking requests. The parked drivers in DFPS are structured in a K-D tree, which is used to serve new parking requests in a distributed fashion. DFPS solves the scalability problem associated with a centralized parking assignment system by removing the computation from the dispatcher and substantially reducing the communication handled by the dispatcher. At the same time, DFPS achieves similar travel time performance with a centralized system. Compared to a naive algorithm that assumes a breadth-first-search for parking spaces around the destinations, DFPS reduces the travel time for over 97% of the drivers.