Den första kyrkliga byggnaden på platsen var ett begravningskapell, som byggdes 1651. Platsen utgjorde då begravningsplats för Jakob och Johannes församling. Under senare delen av 1600-talet diskuterades en stenkyrka, men först på 1770-talet fick man tillstånd av Gustav III att bygga en ny kyrka i klassicistisk stil.
Jean Eric Rehn fick uppdraget att rita kyrkan. Anläggningsarbetet påbörjades den 14 september1783. Arbetena avbröts i februari 1784 genom instruktion från kungen som under resor i Italien hade kommit i kontakt med nyantika strömningar, och ansåg att Rehns stil var för gammalmodig. Kungen gav istället den franske arkitekten Léon Dufourny uppdraget att komma med ett nytt förslag. Dufourny föreslog en kyrka i nyantik stil utan fönster. Förslaget upplevdes kanske främmande och bygget blev inte av. Istället reparerades och utvidgades den befintliga träkyrkan.[1]
Exteriören är tämligen typisk nygotik, varför spiran likar exempelvis de i Luleå och Uppsala domkyrka. 2009 skyms byggnaden till stor del av den omgivande bebyggelsen men på äldre fotografier, tagna från exempelvis Katarinahissen, syns kyrkspiran tydligt.
På grund av Brunkebergsåsens sträckning är kyrkan orienterad i nord-sydlig riktning med koret i norr, istället för den brukliga öst-västliga.
Interiör
Sankt Johannes kyrka är en nygotiskkyrka byggd i tegel. Den har stor rymd och utmärks interiört särskilt av de höga spetsbågefönstren och dess glasmålningar. I mittenfönstret i koret syns Jesus på korset samt Maria och lärjungen Johannes. De övriga fyra fönstren i koret visar de tolv apostlarna grupperade tre och tre. Västra transeptfönstret skildrar Jesu födelse, och östra hans uppståndelse. Glasmålningarna tillverkades av Franz Xaver Zettler i München.
1890 byggde Åkerman & Lund, Stockholm en orgel med 32 stämmor, tre manualer och pedal. Fasaden till orgeln ritades av kyrkans arkitekt Carl Möller. Den blev ombyggd 1947 av samma firma till 52 stämmor, fyra manualer och pedal.
Den nuvarande orgeln är byggd 1975 av Frederiksborgs Orgelbyggeri, Hilleröd, Danmark och är en orgel med mekanisk traktur, elektrisk registratur och koppel. Den har numera 5120 fria kombinationer. Huvudfasaden är från 1890 års orgel och ryggpositivets fasad är från 1975 ritad av Ove Hidemark.
I slutet av 2020 stängdes kyrkan för renovering.[4] Sommaren 2022 blev även stora delar av kyrkogården avstängd, på grund av rasrisk, med följden att dess gravar inte går att besöka.[5] Under våren 2023 öppnades både kyrka och kyrkogård upp igen, då det inte längre finns någon akut rasrisk. Kyrktornet genomgår nu en omfattande renovering som kommer pågå under 2024.
Trots sitt nygotiska yttre är Sankt Johannes kyrka byggd med teknik som i slutet av 1800-talet var helt ny, och mer liknade de då moderna skyskraporna än medeltida tegelkyrkor. Viktiga delar av konstruktionen har varit helt inbyggda, och därmed omöjliga att underhålla eller ens inspektera. Därför upptäcktes inte skadornas omfattning förrän man stängt av kyrkan för renovering. 2021 noterade man kraftiga rostangrepp på tornets järnspira, och dessutom rejäla rostskador på det stag av järn som håller tornets motvikt, vilket väger 6 ton. Om motvikten skulle falla var risken stor att hela tornet rasar.[6] Församlingen uppgav att om man inte får ekonomisk hjälp med att bekosta en både omfattande och dyr renovering, kommer man tvingas begära rivning av kyrkan.[7]2023 påbörjades renoveringen och det finns inte längre någon akut rasrisk. Kyrkogården och kyrkan har därför öppnats upp.
Klockstapeln vid Sankt Johannes kyrka
Vid kapellet från 1600-talet uppfördes 1692 en klockstapel. Stapeln hade tre klockor av vilka två flyttades till den nya kyrkan och hänger i tornet tillsammans med 3 stålklockor från Bochum. Den största av dessa är Sveriges största stålklocka och väger omkring 2800 kg. Den tredje och minsta klockan överfördes 1904 till Stefanskyrkan. En ny klocka har installerats i stapeln.[8] Klockstapeln är Norrmalms äldsta bevarade träbyggnad.[9]