View on GitHub


Internet optimized. Tween friendly. 101% secure. The only messaging format that has a "comment section" as a data type.

Download .zip Download .tar.gz

Welcome to BFat. Listen up.

BFat is the message encoding you’ve been waiting for. Even if you’ve never encoded a message in your life, or don’t know what encoding is, or don’t own a computer, or are actually a plant or a tree or a rock or something, you need BFat.

BFat is scientifically proven to have 427% more messaging than other data formats, because of all the advanced features:

Ultra Unicode Enabled: BFat fully supports all unicode character sets. At the same time. You no longer need to think "Should I use UTF-8, UTF-16, or UTF-32?" or "Should I use the Big or Little Endian?" The native string type for BFat is UTF-256 for extra flexibility and native handling of all Unicode all the time with room for any forseeable expansion of the Unicode codepoint set1.

Internet enhanced data types: BFat is a modern message format, and it has the most up-to-date data types of any encoding format ever. Data types include:

  • comment section (optional PG / R / Quarantine attribute)
  • lolcat
  • autocorrected strong
  • meme
  • random number (of any size or precision!)
  • autocorrected strange
  • clickthrough license
  • emoticon
  • annoying popup
  • autocorrected STRING
  • autoplay video of toddlers shrieking

Lightning fast, unbreakable encryption: With our revolutionary “NeverBlink” encryption, each byte of a message is scrambled using a random number based on the actions of LanaGrey, an actual hamster located at a secret colo facility. We don’t keep the numbers. You don’t get the numbers. There’s no way to decrypt it. Perfect security!

Fully extensible and self describing: Each tag and value has an optional “notes” section that can contain anything. If you need a new data type, just put the spec in that section – all your downstream consumers have to do is read the spec and implement the data type. Future proof!

Universal language support: BFat is provided in all major, minor, specialized, obscure, and even apocryphal programming languages. 2

User-defined types: Don't want to BFat? Make your own type and store it in the User Defined Message Type field. You can also store the schema, if you believe in that sort of thing, in the User Defined Message Type Schema field.

Optional Schematization: We provide bfatter, a code generation tool which parses schemas, message formats, and IDL in any known format to generate a parser for an equivalent bfat message. You can even mix and match formats in the same file and bfatter will figure it out. 3

Perfect encoding: The “memory dump” data type provides a perfect, full-fidelity representation of any object or data structure with zero encoding time. 4

We have footnotes because we're that technical.

  1. Our on-staff linguist estimates that UTF-256 is sufficient to handle expected language evolution for the next 223 years: however, we are investigating UTF-1024 for BFat version 2 for better future-proofing.

  2. Beyond self-describing, each message comes with a full Javascript library to parse it. Don't use Javascript? No worries, if you're thinking "But, I don't Javascript!", then there's also a Javascript library for generating a library in your prefered language, whether it's Prolog, Befunge, or brainf*ck. Minor customization may be required.

  3. Actually, since the format is self-describing, all the parser does is output a version of the regular bfat library that fails with version compatibility errors if you don’t regenerate it every few months. Which is pretty much the same thing.

  4. Version 1 of BFat does not support decoding of “memory dump” data types.