Global Navigation Satellite System (GNSS) shadow matching is a new positioning technique that determines position by comparing the measured signal availability and strength with predictions made using a three-dimensional (3D) city model. It complements conventional GNSS positioning and can significantly improve cross-street positioning accuracy in dense urban environments. This paper describes how shadow matching has been adapted to work on an Android smartphone and presents the first comprehensive performance assessment of smartphone GNSS shadow matching. Using GPS and GLONASS data recorded at 20 locations within central London, it is shown that shadow matching significantly outperforms conventional GNSS positioning in the cross-street direction. The success rate for obtaining a cross-street position accuracy within 5 m, enabling the correct side of a street to be determined, was 54·50% using shadow matching, compared to 24·77% for the conventional GNSS position. The likely performance of four-constellation shadow matching is predicted, the feasibility of a large-scale implementation of shadow matching is assessed, and some methods for improving performance are proposed. A further contribution is a signal-to-noise ratio analysis of the direct line-of-sight and non-line-of-sight signals received on a smartphone in a dense urban environment.