The difference is that compiler usually produces a directly usable artifact (executable binary of some sort). Example: C (produces binary), C# (produces bytecode). Whereas transpiler produces another form of source code (in another language, for example), which is not directly runnable and needs to be compiled/interpreted. Example: CoffeeScript transpiler, which produces javascript. Opal (converts ruby to javascript) Compiler - compiles code to a lower level code. Example:

"Developer code" -> "Machine code"
Java -> bytecode

Transpiler - compiles code to same level of code/abstraction. Example:

"Developer code" -> "Another developer code or version"
JavaScript ES2015+ -> JavaScript ES5