Город расположен на северной окраине Валдайской возвышенности, на озере Бологое, в 164 км к северо-западу от Твери. Крупный железнодорожный узел Октябрьской железной дороги. Расположен примерно на половине железнодорожного пути из Санкт-Петербурга в Москву (центр находится в 12 километрах в сторону Петербурга).