gzip saves space over the wire, but you still have to parse all the bytes. There are ways to reduce this (https://github.com/WebReflection/json.hpack/wiki) as well as organize your schema to be stream-parseable, but it will never be as fast as a binary format. The thing is, HTTP already supports "Accept" and "Content-Type", and there's no reason relays and clients couldn't negotiate a different serialization format.