diff --git a/bin/system-info.c b/bin/system-info.c
index 529f21de5ec522be1227fc691143cd69a5c947e6..0a4e8510f7c10ca72c7e8cc94505dcb54214d708 100644
--- a/bin/system-info.c
+++ b/bin/system-info.c
@@ -1166,13 +1166,7 @@ main (int argc,
         }
       else
         {
-          json_builder_set_member_name (builder, "error-domain");
-          json_builder_add_string_value (builder,
-                                         g_quark_to_string (error->domain));
-          json_builder_set_member_name (builder, "error-code");
-          json_builder_add_int_value (builder, error->code);
-          json_builder_set_member_name (builder, "error");
-          json_builder_add_string_value (builder, error->message);
+          _srt_json_builder_add_error_members (builder, error);
         }
 
       json_builder_end_object (builder);
@@ -1216,13 +1210,7 @@ main (int argc,
         }
       else
         {
-          json_builder_set_member_name (builder, "error-domain");
-          json_builder_add_string_value (builder,
-                                         g_quark_to_string (error->domain));
-          json_builder_set_member_name (builder, "error-code");
-          json_builder_add_int_value (builder, error->code);
-          json_builder_set_member_name (builder, "error");
-          json_builder_add_string_value (builder, error->message);
+          _srt_json_builder_add_error_members (builder, error);
           g_clear_error (&error);
         }
 
@@ -1270,13 +1258,7 @@ main (int argc,
         }
       else
         {
-          json_builder_set_member_name (builder, "error-domain");
-          json_builder_add_string_value (builder,
-                                         g_quark_to_string (error->domain));
-          json_builder_set_member_name (builder, "error-code");
-          json_builder_add_int_value (builder, error->code);
-          json_builder_set_member_name (builder, "error");
-          json_builder_add_string_value (builder, error->message);
+          _srt_json_builder_add_error_members (builder, error);
           g_clear_error (&error);
         }
 
diff --git a/steam-runtime-tools/json-utils-internal.h b/steam-runtime-tools/json-utils-internal.h
index a62f42fd004652319c1702bf2d7883dc7940b73f..f01ddf524ac740d586b0ec347632a5f91cbedd66 100644
--- a/steam-runtime-tools/json-utils-internal.h
+++ b/steam-runtime-tools/json-utils-internal.h
@@ -51,3 +51,6 @@ void _srt_json_builder_add_strv_value (JsonBuilder *builder,
                                        const gchar *array_name,
                                        const gchar * const *values,
                                        gboolean allow_empty_array);
+
+void _srt_json_builder_add_error_members (JsonBuilder *builder,
+                                          const GError *error);
diff --git a/steam-runtime-tools/json-utils.c b/steam-runtime-tools/json-utils.c
index 26bae1d136566b652294bafd75cabd336d6ac12f..e4f42687d2b3794e627378ae2993e77039e53118 100644
--- a/steam-runtime-tools/json-utils.c
+++ b/steam-runtime-tools/json-utils.c
@@ -225,3 +225,19 @@ _srt_json_builder_add_strv_value (JsonBuilder *builder,
       json_builder_end_array (builder);
     }
 }
+
+void
+_srt_json_builder_add_error_members (JsonBuilder *builder,
+                                     const GError *error)
+{
+  g_return_if_fail (builder != NULL);
+  g_return_if_fail (error != NULL);
+
+  json_builder_set_member_name (builder, "error-domain");
+  json_builder_add_string_value (builder,
+                                 g_quark_to_string (error->domain));
+  json_builder_set_member_name (builder, "error-code");
+  json_builder_add_int_value (builder, error->code);
+  json_builder_set_member_name (builder, "error");
+  json_builder_add_string_value (builder, error->message);
+}