HTML is not compiled language but just a visual representation of the code and is mainly in the form of interpreted by the webserver
If you speak of plain HTML, then I think it's the browser engine that acts as a compiler and displays the content, when the page is loaded in the browser. Once again, the browser engine is not the compiler as it does not change the code, it just interprets and displays. Also, HTML is a markup language and not the progamming language which needs compilation. If you move ahead with HTML, into web progamming, like ASP, JSP then the code interpreter changes to server side, which are the webserver, which checks for the code and then sends the appropriate HTML content to the web browser on client's machine.