So, here is my thought experiment -- whenever you have the urge of building a custom file format, just don't. Don't use your language or platform's built-in serialization/pickle/shelve feature to dump objects to a file. Don't rely on XML, JSON, or YAML serializers to try and make your file format human-readable since most of the time it doesn't help at all. Don't come up with a custom language that people have to learn in order to work with your program. And, God forbid, don't create a custom (undocumented, of course!) binary format that nobody else can read. Just use your SQL skills (I think all developers have those nowadays) and store your data in a SQLite database.