Aryan Naraghi

Data Serialization: A Roadmap

This blog series provides a hands-on overview of data serialization. We start by explaining what data serialization is and what it’s used for. We then cover an assortment of popular data serialization formats and their trade-offs. We round off the exploration by implementing a library for the Bencode data serialization format which is used by the popular peer-to-peer file sharing system BitTorrent.

Learning Objectives

By the time you are done reading this series, you can expect to:

Target Audience

This series is intended for readers new to data serialization as well as those who have some experience. For the latter group, we hope this series provides a broader exposure to the topic and some hands-on experience.


We assume the reader is proficient in at least one programming language and has familiarity with the following topics:

Throughout the series we include code snippets from many programming languages. The reader need not know every language presented. Most of the examples are constructed to be self-explanatory.

We will discuss some issues around performance. It is helpful for the reader to have some knowledge of computer architecture, however, this is not a requirement. We provide links to learning resources as appropriate.

The implementation of a library for the Bencode format is done in Go. We assume the reader does not know Go ahead of time.

The Series

For reference, this section lists all posts in the series. Each post builds upon the preceding one, so we recommend reading them in order. Readers who already have experience with the topic may find it helpful to skip certain sections.


Continue on by reading Data Serialization: Introduction.