diff --git a/tools/perf/format_benchmarks b/tools/perf/format_benchmarks
index 26493b2..807e546 100755
--- a/tools/perf/format_benchmarks
+++ b/tools/perf/format_benchmarks
@@ -25,6 +25,7 @@
 import pathlib
 import statistics
 import zoneinfo
+import csv
 
 import pretty
 import utils
@@ -103,7 +104,7 @@
     def SetFixedCol(self, row_key, columns):
         self._fixed_cols[row_key] = columns
 
-    def Write(self, out):
+    def Write(self, out, fmt):
         table = []
         # Expand the column items
         for row in zip(*self._cols):
@@ -114,26 +115,33 @@
             # Update the last row of the header with title and add separator
             for i in range(len(self._titles)):
                 table[len(table)-1][i] = self._titles[i]
-            table.append(pretty.SEPARATOR)
+            if fmt == "table":
+                table.append(pretty.SEPARATOR)
         # Populate the data
         for row in self._rows:
             table.append([str(row)]
                          + self._fixed_cols[row]
                          + [str(self._data.get((col, row), "")) for col in self._cols])
-        out.write(pretty.FormatTable(table, alignments="LL"))
+        if fmt == "csv":
+            csv.writer(sys.stdout, quoting=csv.QUOTE_MINIMAL).writerows(table)
+        else:
+            out.write(pretty.FormatTable(table, alignments="LL"))
 
 
-def format_duration_sec(ns):
+def format_duration_sec(ns, fmt_sec):
     "Format a duration in ns to second precision"
     sec = round(ns / 1000000000)
-    h, sec = divmod(sec, 60*60)
-    m, sec = divmod(sec, 60)
-    result = ""
-    if h > 0:
-        result += f"{h:2d}h "
-    if h > 0 or m > 0:
-        result += f"{m:2d}m "
-    return result + f"{sec:2d}s"
+    if fmt_sec:
+        return f"{sec}"
+    else:
+        h, sec = divmod(sec, 60*60)
+        m, sec = divmod(sec, 60)
+        result = ""
+        if h > 0:
+            result += f"{h:2d}h "
+        if h > 0 or m > 0:
+            result += f"{m:2d}m "
+        return result + f"{sec:2d}s"
 
 
 def main(argv):
@@ -142,6 +150,12 @@
             allow_abbrev=False, # Don't let people write unsupportable scripts.
             description="Print analysis tables for benchmarks")
 
+    parser.add_argument("--csv", action="store_true",
+                        help="Print in CSV instead of table.")
+
+    parser.add_argument("--sec", action="store_true",
+                        help="Print in seconds instead of minutes and seconds")
+
     parser.add_argument("--tags", nargs="*",
                         help="The tags to print, in order.")
 
@@ -196,9 +210,9 @@
                                  summary["branch"],
                                  summary["tag"]]
                                 + list(key)),
-                          cell[0]["title"], format_duration_sec(duration_ns))
+                          cell[0]["title"], format_duration_sec(duration_ns, args.sec))
 
-    table.Write(sys.stdout)
+    table.Write(sys.stdout, "csv" if args.csv else "table")
 
 if __name__ == "__main__":
     main(sys.argv)
