San Petersburgo es la segunda ciudad más grande de Rusia. Según el Rosstat de 2017, la población de San Petersburgo es de 5.281.579 personas, o el 3,6 por ciento de la población total de Rusia, frente a los 4.879.566 (3,4 por ciento) del censo de 2010 y los 5.023.506 del censo de 1989.
Según el Censo de 2010, la composición étnica era la siguiente: Los Rusos representaron el 80,1 por ciento, los Ucranianos el 1,3 por ciento, los Bielorrusos el 0,8 por ciento, los Tártaros el 0,6 por ciento, los Armenios el 0,6 por ciento, los Judíos el 0,5 por ciento, el 0,4 por ciento de los Uzbekos, el 0,3 por ciento de los Tayikos, el 0,3 por ciento de los Azeríes, el 0,2 por ciento de los Georgianos, el 0,2 por ciento de los Moldavos, el 0,1 por ciento de los Finlandeses y el otro 1,3 por ciento. No se reveló el origen étnico del 13,4% de la población que sufre.
La población de San Petersburgo cambió dramáticamente durante el siglo XX. Durante la Revolución Rusa de 1917 y la Guerra Civil Rusa, la población de San Petersburgo cayó de 2,4 millones en 1916 a menos de 740.000 en 1920. Durante la década de 1930, las comunidades Alemanas, Polacas, Finlandesas, Estonias y Letonas de Leningrado fueron casi todas reubicadas. Durante el Asedio de Leningrado, la población de San Petersburgo se desplomó de 3 millones a menos de 600.000, ya que la gente pereció en combate, murió de hambre o fue evacuada. Después del asedio, algunos evacuados regresaron, pero la mayoría provenía de otras áreas de la Unión Soviética. En la década de 1950, la metrópoli absorbía más de 3 millones de habitantes, y en la década de 1980 había superado los 5 millones. Entre 1991 y 2006, la población de la ciudad se redujo a 4,6 millones de habitantes, mientras que la población de la periferia aumentó debido a la privatización de la tierra y a un importante éxodo a los suburbios.
La tasa de natalidad ha superado a la de mortalidad desde 2012. La pandemia de COVID-19, sin embargo, causó una reducción en las tasas de natalidad en 2020, y la población de la ciudad cayó a 5,395,000 personas.
La moneda de San Petersburgo es el Rublo.