São Petersburgo é a segunda maior cidade da Rússia. De acordo com o Rosstat de 2017, a demografia de São Petersburgo é de 5.281.579, ou 3,6% da população total da Rússia, em comparação com 4.879.566 (3,4%) no Censo de 2010 e 5.023.506 no Censo de 1989.
De acordo com o censo de 2010, a composição étnica era a seguinte: os russos representaram 80,1 por cento, os ucranianos 1,3 por cento, os bielorrussos 0,8 por cento, os tártaros 0,6 por cento, os armênios 0,6 por cento, os judeus 0,5 por cento, os uzbeques 0,4 por cento, os tajiques 0,3 por cento, os azerbaijanos 0,3 por cento, os georgianos 0,2 por cento, os moldavos 0,2 por cento, os finlandeses 0,1 por cento e outros 1,3 por cento. A etnia dos 13,4% restantes da população não foi divulgada.
A população de São Petersburgo mudou drasticamente ao longo do século XX. Durante a Revolução Russa de 1917 e a Guerra Civil Russa, a população de São Petersburgo caiu de 2,4 milhões em 1916 para menos de 740.000 em 1920. Durante os anos 1930, quase todas as comunidades de alemães, poloneses, finlandeses, estonianos e letões de Leningrado foram realocadas. Durante o Cerco de Leningrado, a população de São Petersburgo despencou de 3 milhões para menos de 600.000, à medida que as pessoas morriam em combate, passavam fome ou eram evacuadas. Depois do cerco, alguns evacuados retornaram, mas a maioria veio de outras áreas da União Soviética. Na década de 1950, a metrópole absorveu mais de 3 milhões de habitantes e, nos anos 1980, cresceu para mais de 5 milhões. Entre 1991 e 2006, a população da cidade caiu para 4,6 milhões, enquanto a população dos arredores aumentou devido à privatização de terras e a uma significativa migração para os subúrbios.
A taxa de natalidade tem superado a taxa de mortalidade desde 2012. No entanto, a pandemia de COVID-19 causou uma redução na taxa de natalidade em 2020, e a população da cidade caiu para 5.395.000 indivíduos.
A moeda de São Petersburgo é o rublo.