Ein Ahead-of-time-Compiler (AOT-Compiler) ist ein Compiler, der im Gegensatz zu Just-in-time-Compilern (JIT-Compiler) Programmcode (lange) vor der Ausführung (und unabhängig von ihr) in native Maschinensprache übersetzt. Dies hat den Vorteil, dass dieser Code zur Laufzeit wesentlich schneller gestartet wird (d. h. die Initialisierungszeit ist kürzer) als bei einem JIT-Compiler, da die Übersetzung bereits durchgeführt wurde.
Der Hauptnachteil eines AOT-Compilers ist, dass der erzeugte Code nicht mehr plattformunabhängig ist, wie es bei JIT-Compilern meist der Fall ist. AOT-Compiler sind herkömmliche Compiler, wie sie schon von C eingesetzt wurden. Aber auch für Sprachen, die normalerweise mit JIT-Compilern arbeiten (z. B. Java), gibt es meist AOT-Compiler. Ggf. kann hier der Compiler anstelle der Quelltexte den Zwischencode (Bytecode) als Eingabe verwenden, was eine doppelte Pflege von Komponenten (wie z. B. die Syntaxanalyse) erspart.