diff --git a/cli-app/cper-convert.c b/cli-app/cper-convert.c
index 26194b7..b9ac711 100644
--- a/cli-app/cper-convert.c
+++ b/cli-app/cper-convert.c
@@ -13,7 +13,7 @@
 #include "../cper-parse.h"
 #include "../json-schema.h"
 
-void cper_to_json(char *in_file, char *out_file);
+void cper_to_json(char *in_file, char *out_file, int is_single_section);
 void json_to_cper(char *in_file, char *out_file, char *specification_file,
 		  char *program_dir, int no_validate, int debug);
 void print_help(void);
@@ -63,12 +63,14 @@
 	}
 
 	//Run the requested command.
-	if (strcmp(argv[1], "to-json") == 0)
-		cper_to_json(input_file, output_file);
-	else if (strcmp(argv[1], "to-cper") == 0)
+	if (strcmp(argv[1], "to-json") == 0) {
+		cper_to_json(input_file, output_file, 0);
+	} else if (strcmp(argv[1], "to-json-section") == 0) {
+		cper_to_json(input_file, output_file, 1);
+	} else if (strcmp(argv[1], "to-cper") == 0) {
 		json_to_cper(input_file, output_file, specification_file,
 			     argv[0], no_validate, debug);
-	else {
+	} else {
 		printf("Unrecognised argument '%s'. See 'cper-convert --help' for command information.\n",
 		       argv[1]);
 		return -1;
@@ -77,8 +79,8 @@
 	return 0;
 }
 
-//Command for converting a provided CPER log file into JSON.
-void cper_to_json(char *in_file, char *out_file)
+//Command for converting a provided CPER log file or CPER single section file into JSON.
+void cper_to_json(char *in_file, char *out_file, int is_single_section)
 {
 	//Get a handle for the log file.
 	FILE *cper_file = fopen(in_file, "r");
@@ -89,8 +91,14 @@
 	}
 
 	//Convert.
-	json_object *ir = cper_to_ir(cper_file);
+	json_object *ir;
+	if (is_single_section)
+		ir = cper_single_section_to_ir(cper_file);
+	else
+		ir = cper_to_ir(cper_file);
 	fclose(cper_file);
+
+	//Output to string.
 	const char *json_output =
 		json_object_to_json_string_ext(ir, JSON_C_TO_STRING_PRETTY);
 
@@ -171,7 +179,6 @@
 		free(error_message);
 	}
 
-	//Attempt a conversion.
 	//Open a read for the output file.
 	FILE *cper_file = fopen(out_file, "w");
 	if (cper_file == NULL) {
@@ -180,8 +187,12 @@
 		return;
 	}
 
-	//Run the converter.
-	ir_to_cper(ir, cper_file);
+	//Detect the type of CPER (full log, single section) from the IR given.
+	//Run the converter accordingly.
+	if (json_object_object_get(ir, "header") != NULL)
+		ir_to_cper(ir, cper_file);
+	else
+		ir_single_section_to_cper(ir, cper_file);
 	fclose(cper_file);
 }
 
@@ -191,12 +202,17 @@
 	printf(":: to-json cper.file [--out file.name]\n");
 	printf("\tConverts the provided CPER log file into JSON, by default writing to stdout. If '--out' is specified,\n");
 	printf("\tThe outputted JSON will be written to the provided file name instead.\n");
+	printf("\n:: to-json-section cper.section.file [--out file.name]\n");
+	printf("\tConverts the provided single CPER section descriptor & section file into JSON, by default writing to stdout.\n");
+	printf("\tOtherwise behaves the same as 'to-json'.\n");
 	printf("\n:: to-cper cper.json --out file.name [--no-validate] [--debug] [--specification some/spec/path.json]\n");
 	printf("\tConverts the provided CPER-JSON JSON file into CPER binary. An output file must be specified with '--out'.\n");
+	printf("\tWill automatically detect whether the JSON passed is a single section, or a whole file,\n");
+	printf("\tand output binary accordingly.\n\n");
 	printf("\tBy default, the provided JSON will try to be validated against a specification. If no specification file path\n");
 	printf("\tis provided with '--specification', then it will default to 'argv[0] + /specification/cper-json.json'.\n");
 	printf("\tIf the '--no-validate' argument is set, then the provided JSON will not be validated. Be warned, this may cause\n");
-	printf("\tpremature exit/unexpected behaviour in CPER output.\n");
+	printf("\tpremature exit/unexpected behaviour in CPER output.\n\n");
 	printf("\tIf '--debug' is set, then debug output for JSON specification parsing will be printed to stdout.\n");
 	printf("\n:: --help\n");
 	printf("\tDisplays help information to the console.\n");
