Az LLVM (azaz Low Level Virtual Machine) egy fordítóprogram infrastruktúra, melynek elsődleges célja, hogy tetszőleges programozási nyelvhez lehetővé tegye a fordítási idejű, linkelési idejű, futási idejű és holtidejű optimalizálást. Az LLVM-et C++-ban írják, az első előfeldolgozó (front-end) is C és C++ nyelvekhez készült. Azóta számtalan újabbal egészítették ki többek között az alábbi nyelvekhez:
Az LLVM egy saját köztes kóddal rendelkezik, melyet a front-end fordítókkal generálnak, és optimalizációkat végeznek el rajta, majd ezt a célplatformra tovább fordítják (akár futás időben is). Ennek a köztes, assembly jellegű kódnak bináris és szöveges reprezentációja is van, utóbbitról szól ez a leírás.
Az LLVM utasításkészlete és típusrendszere természetesen nyelvfüggetlen. Az utasítások SSA (static single assignment - statikus egyszeri hozzárendelés) formában vannak. Ez azt jelenti, hogy minden változó érétékét egyszer lehet megváltoztatni, az ebben a formában reprezentált programok előnyös tulajdonságokkal bírnak az optimalizációs lépések során.
A projekt kutatási céllal indult 2000-ben az Urbana–Champaign-i Illinois Egyetemen, statikus és dinamikus programozási nyelvek dinamikus fordítási technikáinak tanulmányozásához. Nyílt forráskódú, a BSD-licenszhez hasonló, University of Illinois Open Source License alatt adták ki. Keresztplatformos, így Windows alatt, különböző Linux-okon és Mac OX X-en is fut.