De Haarlemmerpoort is in feite de vijfde Amsterdamse poort richting Haarlem. De eerdere poorten maakten deel uit van de vestingwerken van de hoofdstad. Bij elke stadsuitbreiding schoof de stadspoort steeds een stukje op naar het westen, richting Haarlem. Deze vijfde poort is de laatst gebouwde stadspoort van Amsterdam die tevens als triomfpoort voor Koning Willem II is gebouwd.
In 1837 was de voorgangster van de huidige poort, de in 1618 naar ontwerp van Hendrick de Keyser voltooide Haarlemmerpoort, wegens bouwvalligheid afgebroken. Drie jaar later verrees, vlakbij de plek van de vorige, de huidige poort. De Willemspoort staat officieel op naam van architect Cornelis Alewijn (1788-1839), maar is hoogstwaarschijnlijk in de praktijk van de hand van B. de Greef, zijn assistent-architect en zoon van de in 1834 overleden stadsarchitect Jan de Greef.
De laatste stadspoort van Amsterdam
In de negentiende eeuw was de oude stadsomwalling overbodig geworden en werd ze beetje bij beetje ontmanteld. Ook de meeste stadspoorten werden gesloopt. In hun plaats kwamen doorgaans kleine wachthuisjes bij bruggen over de Singelgracht. De wachthuisjes dienden als kantoor waar de stedelijke accijns op onder andere boter, vis, vlees, wijn, bouwmaterialen, steenkool en turf werden betaald.
In plaats van de afgebroken Haarlemmerpoort kwam echter niet een wachthuisje, maar wederom een stadspoort. De reden voor weer een poortgebouw was dat het, behalve als accijnskantoor, ook een ceremoniële functie moest vervullen. De nieuwe poort stond aldus in de lange traditie van triomfale ingangspoorten die ter ere van vorstelijke gasten werden opgericht.
De poort werd geopend op 27 november 1840, toen koning Willem II, een dag vóór zijn inhuldiging, door deze poort de hoofdstad binnenreed. Vandaar de naam Willemspoort. Hiervan getuigt nog een inscriptie aan de binnenzijde.