Data formats Hall of Fame ------------------------- Here are various data formats that I currently consider the best to use in different situations, that is, if you can make a choice which format to use. This list is going to be updated from time to time and any format listed here may or may not have a LuxPhlog post written about it. ============================= Part 1: KISS-friendly formats ============================= ## Text documents ## * Plain text (you're reading it) * Gemtext ## Structured text data, tables, key-value ## * TSV * Recfiles * vCard 2.1 ## Data serialization ## * netstrings * f2p ([1]) * Base64 * Base32 ## Data marshalling ## * bencode * netstrings ([2]) * Pickle ## Archives ## * shar (including Lshar) * cpio ## Stream compression ## * RLE/RLUE * Unary coding * Delta coding * PackBits (a variant of RLE) * BWT, MTF transformations * LZP ([3]) * LZW * 4PE ## Raster graphics ## * PNM (PBM/PGM/PPM) * XPM2 ## Sound ## * 1-bit PFM [4] * Unsigned 8-bit linear PCM * Signed 16-bit linear PCM * mu-law/A-law PCM * AU container for PCM ## Music ## * RTTTL/RTX * iMelody 1.2 * eMelody 1.0 * Bytebeat [4] (incl. AwkBeat) ## Video ## * YUV4MPEG2 4:4:4 aka yuv444p ============================================================= Part 2: More complex but still relatively lightweight formats ============================================================= ## Text documents ## * Markdown ([5]) * POD * Texinfo ## Structured text data, tables, key-value ## * CSV * .ini/.properties * iCalendar 2.0 ## Archives ## * tar/ustar * PAX ## Stream compression ## * Fibonacci coding * RLGR coding * Golomb-Rice coding * LZSS ## Document publishing ## * troff/groff * TeX/LaTeX * PostScript ## Raster graphics ## * PAM * BMP * QOI ## Vector graphics ## * pic/gpic * Graphviz DOT * SVG Tiny PS profile ([6]) ## Sound ## * WAV container for PCM * AIFF container for PCM * 4-bit ADPCM ## Music ## * MIDI * AHX * MOD ## Video ## * M-JPEG * AVS ## 3D modelling ## * OpenSCAD --- Luxferre --- [1]: selective \x encoding of unsafe characters, used in Lshar, for instance [2]: yes, they can be used for marshalling too if you pass data types inside [3]: LZ Predictor based compression - I have yet to study it more myself [4]: not a sound format but a realtime software technique to represent it [5]: if you don't need images or inline formatting, prefer Gemtext instead [6]: yes, it still is XML-based, but nothing better exists at the moment