diff --git a/src/core/operations/JSONBeautify.mjs b/src/core/operations/JSONBeautify.mjs
index 15fb7f58d0..a2b2dfddba 100644
--- a/src/core/operations/JSONBeautify.mjs
+++ b/src/core/operations/JSONBeautify.mjs
@@ -1,5 +1,6 @@
 /**
  * @author n1474335 [n1474335@gmail.com]
+ * @author Phillip Nordwall [phillip.nordwall@gmail.com]
  * @copyright Crown Copyright 2016
  * @license Apache-2.0
  */
@@ -27,7 +28,12 @@ class JSONBeautify extends Operation {
             {
                 "name": "Indent string",
                 "type": "binaryShortString",
-                "value": "\\t"
+                "value": "    "
+            },
+            {
+                "name": "Sort Object Keys",
+                "type": "boolean",
+                "value": false
             }
         ];
     }
@@ -38,11 +44,35 @@ class JSONBeautify extends Operation {
      * @returns {string}
      */
     run(input, args) {
-        const indentStr = args[0];
+        const [indentStr, sortBool] = args;
+
         if (!input) return "";
+        if (sortBool) {
+            input = JSON.stringify(JSONBeautify._sort(JSON.parse(input)));
+        }
         return vkbeautify.json(input, indentStr);
     }
 
+
+    /**
+     * Sort JSON representation of an object
+     *
+     * @author Phillip Nordwall [phillip.nordwall@gmail.com]
+     * @private
+     * @param {object} o
+     * @returns {object}
+     */
+    static _sort(o) {
+        if (Array.isArray(o)) {
+            return o.map(JSONBeautify._sort);
+        } else if ("[object Object]" === Object.prototype.toString.call(o)) {
+            return Object.keys(o).sort().reduce(function(a, k) {
+                a[k] = JSONBeautify._sort(o[k]);
+                return a;
+            }, {});
+        }
+        return o;
+    }
 }
 
 export default JSONBeautify;
diff --git a/test/index.mjs b/test/index.mjs
index 454982cc97..9c11f6ae0c 100644
--- a/test/index.mjs
+++ b/test/index.mjs
@@ -50,6 +50,8 @@ import "./tests/operations/HaversineDistance";
 import "./tests/operations/Hexdump";
 import "./tests/operations/Image";
 import "./tests/operations/Jump";
+import "./tests/operations/JSONBeautify";
+import "./tests/operations/JSONMinify";
 import "./tests/operations/JWTDecode";
 import "./tests/operations/JWTSign";
 import "./tests/operations/JWTVerify";
diff --git a/test/tests/operations/JSONBeautify.mjs b/test/tests/operations/JSONBeautify.mjs
new file mode 100644
index 0000000000..5a89bd927e
--- /dev/null
+++ b/test/tests/operations/JSONBeautify.mjs
@@ -0,0 +1,122 @@
+/**
+ * JSONBeautify tests.
+ *
+ * @author Phillip Nordwall [Phillip.Nordwall@gmail.com]
+ *
+ * @copyright Crown Copyright 2018
+ * @license Apache-2.0
+ */
+import TestRegister from "../../TestRegister";
+
+TestRegister.addTests([
+    {
+        name: "JSON Beautify: space, ''",
+        input: "",
+        expectedOutput: "",
+        recipeConfig: [
+            {
+                op: "JSON Beautify",
+                args: [" ", false],
+            },
+        ],
+    },
+    {
+        name: "JSON Beautify: space, number",
+        input: "42",
+        expectedOutput: "42",
+        recipeConfig: [
+            {
+                op: "JSON Beautify",
+                args: [" ", false],
+            },
+        ],
+    },
+    {
+        name: "JSON Beautify: space, string",
+        input: "\"string\"",
+        expectedOutput: "\"string\"",
+        recipeConfig: [
+            {
+                op: "JSON Beautify",
+                args: [" ", false],
+            },
+        ],
+    },
+    {
+        name: "JSON Beautify: space, boolean",
+        input: "false",
+        expectedOutput: "false",
+        recipeConfig: [
+            {
+                op: "JSON Beautify",
+                args: [" ", false],
+            },
+        ],
+    },
+    {
+        name: "JSON Beautify: space, emptyList",
+        input: "[]",
+        expectedOutput: "[]",
+        recipeConfig: [
+            {
+                op: "JSON Beautify",
+                args: [" ", false],
+            },
+        ],
+    },
+    {
+        name: "JSON Beautify: space, list",
+        input: "[2,1]",
+        expectedOutput: "[\n 2,\n 1\n]",
+        recipeConfig: [
+            {
+                op: "JSON Beautify",
+                args: [" ", false],
+            },
+        ],
+    },
+    {
+        name: "JSON Beautify: tab, list",
+        input: "[2,1]",
+        expectedOutput: "[\n\t2,\n\t1\n]",
+        recipeConfig: [
+            {
+                op: "JSON Beautify",
+                args: ["\t", false],
+            },
+        ],
+    },
+    {
+        name: "JSON Beautify: space, object",
+        input: "{\"second\":2,\"first\":3}",
+        expectedOutput: "{\n \"second\": 2,\n \"first\": 3\n}",
+        recipeConfig: [
+            {
+                op: "JSON Beautify",
+                args: [" ", false],
+            },
+        ],
+    },
+    {
+        name: "JSON Beautify: tab, nested",
+        input: "[2,{\"second\":2,\"first\":3,\"beginning\":{\"j\":\"3\",\"i\":[2,3,false]}},1,2,3]",
+        expectedOutput: "[\n\t2,\n\t{\n\t\t\"second\": 2,\n\t\t\"first\": 3,\n\t\t\"beginning\": {\n\t\t\t\"j\": \"3\",\n\t\t\t\"i\": [\n\t\t\t\t2,\n\t\t\t\t3,\n\t\t\t\tfalse\n\t\t\t]\n\t\t}\n\t},\n\t1,\n\t2,\n\t3\n]",
+        recipeConfig: [
+            {
+                op: "JSON Beautify",
+                args: ["\t", false],
+            },
+        ],
+    },
+    {
+        name: "JSON Beautify: tab, nested, sorted",
+        input: "[2,{\"second\":2,\"first\":3,\"beginning\":{\"j\":\"3\",\"i\":[2,3,false]}},1,2,3]",
+        expectedOutput: "[\n\t2,\n\t{\n\t\t\"beginning\": {\n\t\t\t\"i\": [\n\t\t\t\t2,\n\t\t\t\t3,\n\t\t\t\tfalse\n\t\t\t],\n\t\t\t\"j\": \"3\"\n\t\t},\n\t\t\"first\": 3,\n\t\t\"second\": 2\n\t},\n\t1,\n\t2,\n\t3\n]",
+        recipeConfig: [
+            {
+                op: "JSON Beautify",
+                args: ["\t", true],
+            },
+        ],
+    },
+]);
diff --git a/test/tests/operations/JSONMinify.mjs b/test/tests/operations/JSONMinify.mjs
new file mode 100644
index 0000000000..4feefabf5c
--- /dev/null
+++ b/test/tests/operations/JSONMinify.mjs
@@ -0,0 +1,111 @@
+/**
+ * JSONMinify tests.
+ *
+ * @author Phillip Nordwall [Phillip.Nordwall@gmail.com]
+ *
+ * @copyright Crown Copyright 2018
+ * @license Apache-2.0
+ */
+import TestRegister from "../../TestRegister";
+
+TestRegister.addTests([
+    {
+        name: "JSON Minify: ''",
+        input: "",
+        expectedOutput: "",
+        recipeConfig: [
+            {
+                op: "JSON Minify",
+                args: [],
+            },
+        ],
+    },
+    {
+        name: "JSON Minify: number",
+        input: "42",
+        expectedOutput: "42",
+        recipeConfig: [
+            {
+                op: "JSON Minify",
+                args: [],
+            },
+        ],
+    },
+    {
+        name: "JSON Minify: number",
+        input: "4.2",
+        expectedOutput: "4.2",
+        recipeConfig: [
+            {
+                op: "JSON Minify",
+                args: [],
+            },
+        ],
+    },
+    {
+        name: "JSON Minify: string",
+        input: "\"string\"",
+        expectedOutput: "\"string\"",
+        recipeConfig: [
+            {
+                op: "JSON Minify",
+                args: [],
+            },
+        ],
+    },
+    {
+        name: "JSON Minify: boolean",
+        input: "false",
+        expectedOutput: "false",
+        recipeConfig: [
+            {
+                op: "JSON Minify",
+                args: [],
+            },
+        ],
+    },
+    {
+        name: "JSON Minify: emptyList",
+        input: "[\n \n  \t]",
+        expectedOutput: "[]",
+        recipeConfig: [
+            {
+                op: "JSON Minify",
+                args: [],
+            },
+        ],
+    },
+    {
+        name: "JSON Minify: list",
+        input: "[2,\n  \t1]",
+        expectedOutput: "[2,1]",
+        recipeConfig: [
+            {
+                op: "JSON Minify",
+                args: [],
+            },
+        ],
+    },
+    {
+        name: "JSON Minify: object",
+        input: "{\n \"second\": 2,\n \"first\": 3\n}",
+        expectedOutput: "{\"second\":2,\"first\":3}",
+        recipeConfig: [
+            {
+                op: "JSON Minify",
+                args: [],
+            },
+        ],
+    },
+    {
+        name: "JSON Minify: tab, nested",
+        input: "[\n\t2,\n\t{\n\t\t\"second\": 2,\n\t\t\"first\": 3,\n\t\t\"beginning\": {\n\t\t\t\"j\": \"3\",\n\t\t\t\"i\": [\n\t\t\t\t2,\n\t\t\t\t3,\n\t\t\t\tfalse\n\t\t\t]\n\t\t}\n\t},\n\t1,\n\t2,\n\t3\n]",
+        expectedOutput: "[2,{\"second\":2,\"first\":3,\"beginning\":{\"j\":\"3\",\"i\":[2,3,false]}},1,2,3]",
+        recipeConfig: [
+            {
+                op: "JSON Minify",
+                args: [],
+            },
+        ],
+    },
+]);