Tallinna vangla sai alguse aastal 1919, kui Patarei merekindlus muudeti vanglaks. Kuna hiljem Keskvanglaks nimetatud kinnipidamiskoht oli 2000. aastateks muutunud kasutuskõlbmatuks, asuti 2003. aastal ümber Magasini tänaval asuvasse vanglasse (mis oli rajatud aastatel 1944–1949 tegutsenud sõjavangilaagri territooriumile). 1990. aastail ehitati kaks uut kambervangla hoonet ja moodustati kaks eelvangistusosakonda, milles viibivad peamiselt eeluurimise all olevad isikud.
2004. aastal liideti Tallinna vanglaga Maardu vangla.
Kuni 2005. aasta maini oli Maardus noortevangla.
2005. aasta juulist kuni 2010. aastani tegutses Maardus Vana-Narva mnt 17 asuvas endises vanglahoones vanglate haigla, mis osutas statsionaarset ja ambulatoorset tervishoiuteenust kõikide vanglate vangidele. Alates 2011. aasta veebruarist asub samal territooriumil Tallinna vangla Maardu üksus, mille põhiülesanne oli kuni 2014 veebraurini korraldada kuni üheaastase karistusajaga ning ravil või uuringutel viibivate vangide järelevalvet ja vangistuse täideviimist. Alates 2014. aastast on Maardu üksuses avavangla ja endiselt ka tuberkuloosiosakond.
2008. aasta 1. juunil liideti Tallinna vanglaga Harju maakohtu ja Pärnu maakohtu kriminaalhooldusosakond. Harju ja Pärnu kriminaalhooldusosakonna talitused ja vastuvõtupunktid asuvad üle Eesti.
Alates 1. juunist 2016, pärast Harku ja Murru vangla liitmist Tallinna vanglaga, paiknevad Tallinna vanglas ka naisvangid, kelle tarbeks on ümber kohandatud eraldi hoone – viies üksus.
Vangla koosseisus on 565,1 teenistuskohta, sealhulgas 339,3 vanglaametniku ametikohta.