Een compiler (Nederlands voor samensteller of opbouwer) is een computerprogramma dat code in de ene formele taal (de brontaal) vertaalt naar code in een andere formele taal (de doeltaal).[1] Dit vertaalproces wordt compilatie of compileren genoemd. Het doel van compileren is veelal om code die in een hogere programmeertaal is geschreven te vertalen naar een programmeertaal op een lager abstractieniveau, vaak machine- of assembleertaal, maar ook C of JavaScript. Voorbeelden van compilers zijn C++-compilers, die in C++ geschreven broncode naar machinetaal vertalen, en de TypeScript-compiler, die TypeScript-programma's naar JavaScript vertaalt.
De invoer van de compiler wordt broncode en de uitvoer objectcode genoemd. Vaak is de objectcode machinetaal of machine-onafhankelijke bytecode, die door een computer of virtuele machine kan worden uitgevoerd.[2] Deze uitvoerbare instructies bestaan uit binaire gegevens, die moeilijk voor een mens zijn te begrijpen. Compilers fungeren als het ware als een brug tussen de programmeur en de hardware.[3]