diff --git a/fix_json.py b/fix_json.py
new file mode 100755
index 0000000..cf94dd6
--- /dev/null
+++ b/fix_json.py
@@ -0,0 +1,68 @@
+#!/usr/bin/env python2
+#
+# Copyright 2017 The Chromium OS Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+#
+# pylint: disable=cros-logging-import
+
+"""Script to re-format json result to one with branch_name and build_id"""
+from __future__ import print_function
+
+import argparse
+import config
+import json
+import logging
+import os
+import subprocess
+import sys
+
+# Turn the logging level to INFO before importing other autotest
+# code, to avoid having failed import logging messages confuse the
+# test_droid user.
+logging.basicConfig(level=logging.INFO)
+
+
+def _parse_arguments_internal(argv):
+  parser = argparse.ArgumentParser(description='Convert result to JSON'
+                                   'format')
+  parser.add_argument(
+      '-b', '--bench', help='Generate JSON format file for which benchmark.')
+  return parser.parse_args(argv)
+
+def fix_json(bench):
+  # Set environment variable for crosperf
+  os.environ['PYTHONPATH'] = os.path.dirname(config.toolchain_utils)
+
+  logging.info('Generating Crosperf Report...')
+  json_path = os.path.join(config.bench_suite_dir, bench + '_refined')
+  crosperf_cmd = [
+      os.path.join(config.toolchain_utils, 'generate_report.py'), '--json',
+      '-i=' + os.path.join(config.bench_suite_dir, bench + '.json'),
+      '-o=' + json_path, '-f'
+  ]
+
+  # Run crosperf generate_report.py
+  logging.info('Command: %s', crosperf_cmd)
+  subprocess.call(crosperf_cmd)
+
+  json_path += '.json'
+  with open(json_path) as fout:
+    objs = json.load(fout)
+  for obj in objs:
+    obj['branch_name'] = 'aosp/master'
+    obj['build_id'] = 0
+  with open(json_path, 'w') as fout:
+    json.dump(objs, fout)
+
+  logging.info('JSON file fixed successfully!')
+
+def main(argv):
+  arguments = _parse_arguments_internal(argv)
+
+  bench = arguments.bench
+
+  fix_json(bench)
+
+if __name__ == '__main__':
+  main(sys.argv[1:])
