google
flatbuffers
C++

FlatBuffers: Memory Efficient Serialization Library

Last updated Jul 8, 2026
26.2k
Stars
3.6k
Forks
244
Issues
+17
Stars/day
Attention Score
98
Language breakdown
C++ 37.7%
Rust 13.5%
Swift 7.8%
Python 6.9%
C# 5.6%
Java 5.6%
Files click to expand
README

logo FlatBuffers ===========

Build status BuildKite status Fuzzing Status Discord Chat Twitter Follow Twitter Follow

FlatBuffers is a cross platform serialization library architected for maximum memory efficiency. It allows you to directly access serialized data without parsing/unpacking it first, while still having great forwards/backwards compatibility.

Quick Start

  • Build the compiler for flatbuffers (flatc)
Use cmake to create the build files for your platform and then perform the compilation (Linux example).
cmake -G "Unix Makefiles"
    make -j
  • Define your flatbuffer schema (.fbs)
Write the schema to define the data you want to serialize. See monster.fbs for an example.
  • Generate code for your language(s)
Use the flatc compiler to take your schema and generate language-specific code:
./flatc --cpp --rust monster.fbs

Which generates monstergenerated.h and monstergenerated.rs files.

  • Serialize data
Use the generated code, as well as the FlatBufferBuilder to construct your serialized buffer. (C++ example)
  • Transmit/store/save Buffer
Use your serialized buffer however you want. Send it to someone, save it for later, etc...
  • Read the data
Use the generated accessors to read the data from the serialized buffer.

It doesn't need to be the same language/schema version, FlatBuffers ensures the data is readable across languages and schema versions. See the Rust example reading the data written by C++.

Documentation

Go to our [landing page][] to browse our documentation.

Supported operating systems

  • Windows
  • macOS
  • Linux
  • Android
  • And any others with a recent C++ compiler (C++ 11 and newer)

Supported programming languages

Code generation and runtime libraries for many popular languages.

Versioning

FlatBuffers does not follow traditional SemVer versioning (see rationale) but rather uses a format of the date of the release.

Contribution

  • [FlatBuffers Issues Tracker][] to submit an issue.
  • [stackoverflow.com][] with [flatbuffers tag][] for any questions regarding FlatBuffers.
To contribute to this project, see [CONTRIBUTING][].

Community

Security

Please see our Security Policy for reporting vulnerabilities.

Licensing

Flatbuffers is licensed under the Apache License, Version 2.0. See [LICENSE][] for the full license text.


[CONTRIBUTING]: http://github.com/google/flatbuffers/blob/master/CONTRIBUTING.md [flatbuffers tag]: https://stackoverflow.com/questions/tagged/flatbuffers [FlatBuffers Google Group]: https://groups.google.com/forum/#!forum/flatbuffers [FlatBuffers Issues Tracker]: http://github.com/google/flatbuffers/issues [stackoverflow.com]: http://stackoverflow.com/search?q=flatbuffers [landing page]: https://google.github.io/flatbuffers [LICENSE]: https://github.com/google/flatbuffers/blob/master/LICENSE

🔗 More in this category

© 2026 GitRepoTrend · google/flatbuffers · Updated daily from GitHub