netty is a low level networking lib, which ktor can use (or not -- up to you to choose the underlying engine). vertx is another take on async network programming, similar in spirit to ktor. If you had to pick only one primary difference, it would be that ktor embraces coroutines as a way to make nonblocking i/o more programmer friendly, whereas vertx is more "traditional" -- vertx long predates kotlin's coroutines.