binary vs text protocols

If all you are doing is transmitting text, then yes, the difference between the two isn't very significant. But consider trying to transmit things like:

  • Numbers - do you use a string representation of a number, or the binary? Especially for large numbers, the binary will be more compact.
  • Data Structures - How do you denote the beginning and ending of a field in a text protocol? Sometimes a binary protocol with fixed length fields is more compact.

binary protocols are better if you are using control bits/bytes

i.e instead of sending msg:Hello in binary it can be 0x01 followed by your message (assuming 0x01 is a control byte which stands for msg)

So, since in text protocol you send msg:hello\0 ...it involves 10 bytes where as in binary protocol it would be 0x01Hello\0 ...this involves 7 bytes

And another example, suppose you want to send a number say 255, in text its 3 bytes where as in binary its 1 byte i.e 0xFF


The string "hello" itself wouldn't differ in size. The size/performance difference is in the additional information that Serialization introduces (Serialization is how the program represents the data to be transferred so that it can be re-construted once it gets to the other end of the pipe).

For example, when serializing the following in .NET using XML (one of the text serialization methods):

string helloWorld = "Hello World!";

You might get something like (I know this isn't exact):

<helloWorld type="String">Hello World!</helloWorld>

Whereas Binary Serialization would be able to represent that data natively in binary without all the extra markup.


Text protocols are better in terms of readability, ease of reimplementing, and ease of debugging. Binary protocols are more compact.

However, you can compress your text using a library like LZO or Zlib, and this is almost as compact as binary (with very little performance hit for compression/decompression.)

You can read more info on the subject here:
http://www.faqs.org/docs/artu/ch05s01.html