diff --git a/binary-addons.py b/binary-addons.py
index d18386916009c7098e6bd770bf4607f21c8a130d..0c17b516063fa454203193b49541b5f06c623a8c 100644
--- a/binary-addons.py
+++ b/binary-addons.py
@@ -5,6 +5,7 @@ import os
 from glob import glob
 import json
 import subprocess
+import threading
 
 
 ADDON_SRC_PREFIX = 'src'
@@ -27,7 +28,15 @@ def addon_manifest(def_dir, addon):
         return mf
 
 
+def write_manifest(addon_dir, target_path):
+    addon_dict = addon_manifest(addon_dir, os.path.basename(addon_dir))
+    with open(os.path.join(target_path, "%s.json" % os.path.basename(addon_dir)), 'w') as t:
+        json.dump(addon_dict, t, indent=4)
+        t.write('\n')
+
+
 def create_manifest(repo_path, target_path):
+    threads = []
     for p in glob(os.path.join(repo_path, '*', 'platforms.txt')):
 
         addon_dir = os.path.abspath(os.path.join(p, os.pardir))
@@ -45,10 +54,11 @@ def create_manifest(repo_path, target_path):
         # print some progress
         print(os.path.basename(addon_dir))
 
-        addon_dict = addon_manifest(addon_dir, os.path.basename(addon_dir))
-        with open(os.path.join(target_path, "%s.json" % os.path.basename(addon_dir)), 'w') as t:
-            json.dump(addon_dict, t, indent=4)
-            t.write('\n')
+        t = threading.Thread(target=write_manifest, args=(addon_dir, target_path))
+        t.start()
+        threads.append(t)
+
+    [t.join() for t in threads]
 
 
 if __name__ == '__main__':