diff --git a/aos/fast_string_builder.cc b/aos/fast_string_builder.cc
new file mode 100644
index 0000000..97d2fea
--- /dev/null
+++ b/aos/fast_string_builder.cc
@@ -0,0 +1,67 @@
+#include "fast_string_builder.h"
+
+namespace aos {
+
+FastStringBuilder::FastStringBuilder(std::size_t initial_size) {
+  str_.reserve(initial_size);
+}
+
+void FastStringBuilder::Reset() { str_.resize(0); }
+
+std::string_view FastStringBuilder::Result() const {
+  return std::string_view(str_);
+}
+
+std::string FastStringBuilder::MoveResult() {
+  std::string result;
+  result.swap(str_);
+  return result;
+}
+
+void FastStringBuilder::Resize(std::size_t chars_needed) {
+  str_.resize(str_.size() + chars_needed);
+}
+
+void FastStringBuilder::Append(std::string_view str) {
+  std::size_t index = str_.size();
+  Resize(str.size());
+  str_.replace(index, str.size(), str, 0);
+}
+
+void FastStringBuilder::Append(float val) {
+  std::size_t index = str_.size();
+  Resize(17);
+  int result = absl::SNPrintF(str_.data() + index, 17, "%.6g", val);
+  PCHECK(result != -1);
+  CHECK(result < 17);
+  str_.resize(index + result);
+}
+
+void FastStringBuilder::Append(double val) {
+  std::size_t index = str_.size();
+  Resize(25);
+  int result = absl::SNPrintF(str_.data() + index, 25, "%.15g", val);
+  PCHECK(result != -1);
+  CHECK(result < 25);
+  str_.resize(index + result);
+}
+
+void FastStringBuilder::AppendChar(char val) {
+  Resize(1);
+  str_[str_.size() - 1] = val;
+}
+
+void FastStringBuilder::AppendBool(bool val) {
+  if (bool_to_str_) {
+    Append(val ? kTrue : kFalse);
+  } else {
+    AppendChar(val ? '1' : '0');
+  }
+}
+
+std::ostream &operator<<(std::ostream &os, const FastStringBuilder &builder) {
+  os.write(builder.str_.data(), builder.str_.size());
+  return os;
+}
+
+}  // namespace aos
