En virtuel maskine (ofte forkortet VM, på engelsk virtual machine) er et miljø/maskine, som reelt set ikke eksisterer og som enten kan fortolke, aflæse og udføre maskinkode eller maskinkode-lignende bytekode (som kun den virtuelle maskine kan læse, forstå og udføre). Denne maskinkode er ofte oversat fra et menneske-læseligt programmeringssprog af en præprocessor, og tilsammen kaldes disse 2 processer for en fortolker. F.eks. kan Javas virtuelle maskine (JVM) udføre Java-bytekode, som er bytekode der er blevet spyttet ud af en Java-kompiler (i virkeligheden en præprocessor).