asm.js ist ein Zwischencode, der entworfen wurde, um Software, die in Sprachen wie C geschrieben wurde, in Webanwendungen zu nutzen, dabei aber eine bessere Performance zu erzielen als mit gewöhnlichem JavaScript, das für solche Anwendungen verwendet wird.
asm.js besteht aus einer Teilmenge von JavaScript und wendet einige zusätzliche Konventionen an, sodass Code, der in statisch typisierten Sprachen mit manueller Speicherverwaltung (wie etwa C) geschrieben ist, durch Transcompiler wie Emscripten übersetzt werden kann. Durch die Beschränkung der Syntax kann der Code durch einen Ahead-of-time-Compiler oder auf andere Weisen optimiert werden.
Aufbauend auf asm.js wurde das Binärformat WebAssembly entwickelt.