diff --git a/xtrn/ddfilelister/ddfilelister.js b/xtrn/ddfilelister/ddfilelister.js
index 61c468574e93978f05de210d54bb28de8dc01e00..97a91257674e26abbcf2b343b4acdcda5a56a904 100644
--- a/xtrn/ddfilelister/ddfilelister.js
+++ b/xtrn/ddfilelister/ddfilelister.js
@@ -2871,21 +2871,27 @@ function displayFileLibAndDirHeader(pTextOnly, pDirCodeOverride, pNumberedMode)
 //  pNumberedMode: Boolean - Whether or not the menu/list has numbers in front of the file info items
 function displayListHdrLine(pMoveToLocationFirst, pNumberedMode)
 {
+	// Make the format string if it hasn't been made already
+	if (displayListHdrLine.formatStr == undefined)
+	{
+		var filenameLen = gListIdxes.filenameEnd - gListIdxes.filenameStart;
+		var fileSizeLen = gListIdxes.fileSizeEnd - gListIdxes.fileSizeStart -1;
+		var descLen = gListIdxes.descriptionEnd - gListIdxes.descriptionStart + 1;
+		var numItemsLen = gFileList.length.toString().length;
+		if (pNumberedMode)
+			descLen -= (numItemsLen+1);
+		displayListHdrLine.formatStr = "\x01n\x01w\x01h";
+		if (pNumberedMode)
+			displayListHdrLine.formatStr += format("%" + numItemsLen + "s ", "#");
+		displayListHdrLine.formatStr += "%-" + filenameLen + "s %" + fileSizeLen + "s %-"
+		                             + +(descLen-7) + "s\x01n\x01w%5s\x01n";
+	}
+
 	if (pMoveToLocationFirst && console.term_supports(USER_ANSI))
 		console.gotoxy(1, 3);
-	var filenameLen = gListIdxes.filenameEnd - gListIdxes.filenameStart;
-	var fileSizeLen = gListIdxes.fileSizeEnd - gListIdxes.fileSizeStart -1;
-	var descLen = gListIdxes.descriptionEnd - gListIdxes.descriptionStart + 1;
-	var numItemsLen = gFileList.length.toString().length;
-	if (pNumberedMode)
-		descLen -= (numItemsLen+1);
-	var formatStr = "\x01n\x01w\x01h";
-	if (pNumberedMode)
-		formatStr += format("%" + numItemsLen + "s ", "#");
-	formatStr += "%-" + filenameLen + "s %" + fileSizeLen + "s %-"
-	              + +(descLen-7) + "s\x01n\x01w%5s\x01n";
+
 	var listHdrEndText = THIN_RECTANGLE_RIGHT + BLOCK4 + BLOCK3 + BLOCK2 + BLOCK1;
-	printf(formatStr, "Filename", "Size", "Description", listHdrEndText);
+	printf(displayListHdrLine.formatStr, "Filename", "Size", "Description", listHdrEndText);
 }
 
 // Creates the menu for displaying the file list