diff --git a/Backend-libXML/Parser.py b/Backend-libXML/Parser.py
index 2722386..a694edd 100644
--- a/Backend-libXML/Parser.py
+++ b/Backend-libXML/Parser.py
@@ -3,11 +3,11 @@ from lxml import etree
 
 def prettify(source: str) -> str:
     xml = etree.XML(source)
-    return etree.tostring(xml, pretty_print=True)
+    return etree.tostring(xml, pretty_print=True).decode()
 
 def minimize(source: str) -> str:
     xml = etree.XML(source)
-    return etree.tostring(xml, pretty_print=False)
+    return etree.tostring(xml, pretty_print=False).decode()
 
 
 def xpath(source: str, xpath: str) -> str:
diff --git a/Backend-libXML/main.py b/Backend-libXML/main.py
index fab863a..55582cd 100644
--- a/Backend-libXML/main.py
+++ b/Backend-libXML/main.py
@@ -15,6 +15,43 @@ cors = CORS(app, resource={
     }
 })
 
+def format_xml(request: request, type: str) -> str:
+    """Function to format XML 
+
+    :param request: Received request
+    :param type: Type of needed processing: xsd, xslt or xpath
+    :raises ValueError: is raised when type is different than those provided above
+    :return: response JSON converted to string and response code
+    """
+    start = time.time_ns()
+    code = 200
+    response_json = dict()
+    try:
+        request_data = json.loads(request.get_data(as_text=True))
+        data = request_data['data']
+        process = request_data['process']
+        if (type == "prettify"):
+            response_json['result'] = Parser.xsd(data, process)
+        elif (type == "minimize"):
+            response_json['result'] = Parser.xslt(data, process)
+        else:
+            raise ValueError("Valid operation types are: prettify, minimize")
+
+        response_json['status'] = "OK"
+    except KeyError as e:
+        response_json['result'] = "Missing key: " + str(e)
+        response_json['status'] = "ERR"
+        code = 400
+    except Exception as e:
+        response_json['result'] = str(e)
+        response_json['status'] = "ERR"
+        code = 400
+    finally:
+        exec_time = (time.time_ns() - start) / 10**6
+        response_json['time'] = f"{exec_time:.03f}"
+        response_json['processor'] = "libxml2 over lxml"
+        return json.dumps(response_json), code
+
 def process_xml(request: request, type: str) -> str:
     """Function to process 
 
@@ -36,6 +73,10 @@ def process_xml(request: request, type: str) -> str:
             response_json['result'] = Parser.xslt(data, process)
         elif (type == "xpath"):
             response_json['result'] = Parser.xpath(data, process)
+        elif (type == "prettify"):
+            response_json['result'] = Parser.prettify(data)
+        elif (type == "minimize"):
+            response_json['result'] = Parser.minimize(data)
         else:
             raise ValueError("Valid operation types are: xsd, xslt, xpath")
 
@@ -69,13 +110,11 @@ def xslt():
 
 @app.route("/prettifypost", methods=["POST"])
 def prettify():
-    request_data = json.loads(request.get_data(as_text=True))
-    return Parser.prettify(request_data['data'])
+    return process_xml(request, "prettify")
 
 @app.route("/minimizepost", methods=["POST"])
 def minimize():
-    request_data = json.loads(request.get_data(as_text=True))
-    return Parser.prettify(request_data['data'])
+    return process_xml(request, "minimize")
 
 if __name__ == "__main__":
     app.run()
\ No newline at end of file
diff --git a/Frontend/assets/scripts/tools/scripts.js b/Frontend/assets/scripts/tools/scripts.js
index 8792bc5..6becf43 100644
--- a/Frontend/assets/scripts/tools/scripts.js
+++ b/Frontend/assets/scripts/tools/scripts.js
@@ -91,7 +91,7 @@ function refreshTooltip() {
     document.getElementById("xsltelementsheader").innerText = XSLTheader;
 }
 
-function performRequest(text, checkXML, checkTransform){
+function performRequest(endpoint, checkXML, checkTransform){
     var xmlData = document.getElementById("xmlArea").value.trim();
     var transformData = document.getElementById("transformArea").value.trim();
     
@@ -106,7 +106,7 @@ function performRequest(text, checkXML, checkTransform){
         empty = true;
     }
     if (!empty) {
-        restRequest(text);
+        restRequest(endpoint, xmlData, transformData);
     }else{
         document.getElementById("resultArea").value = "No data provided!";
         return false;
@@ -114,17 +114,33 @@ function performRequest(text, checkXML, checkTransform){
     
 }
 
+function performFormatRequest(endpoint, checkXML){
+    var xmlData = document.getElementById("xmlArea").value.trim();
+    
+    var empty = false;
+    if (defaultStrings.includes(xmlData) && checkXML) {
+            document.getElementById("xmlArea").style.backgroundColor = color_red;
+            xmlData = "";
+            empty = true;
+    }
+    if (!empty) {
+        restRequest(endpoint, xmlData, null);
+    }else{
+        document.getElementById("resultArea").value = "No data provided!";
+        return false;
+    }
+    
+}
+
+
 //Form REST request, send, receive and display in resultArea
-async function restRequest(text) {
+async function restRequest(endpoint, xmlData, transformData) {
     const escapeChar = "specialEscapeChar";
     var port = ":8081/"
     if (getProcessor() == "libxml") {
         port = ":8082/"
     }
-    const addr = window.location.protocol + "//" + window.location.hostname + port + text;
-    
-    var xmlData = document.getElementById("xmlArea").value.trim();
-    var transformData = document.getElementById("transformArea").value.trim();
+    const addr = window.location.protocol + "//" + window.location.hostname + port + endpoint;
 
     if(defaultStrings.includes(xmlData)){
         xmlData = "";
diff --git a/Frontend/tools/formatter.html b/Frontend/tools/formatter.html
index f7bbd1e..f583346 100644
--- a/Frontend/tools/formatter.html
+++ b/Frontend/tools/formatter.html
@@ -25,9 +25,9 @@
                     onfocus="clearDefaultContent(this, 'Insert XML here');">
                 
                 
+                    onclick="performFormatRequest('prettifypost', true)">Prettify XML
                 
+                    onclick="performFormatRequest('minimizepost', true)">Minimize XML
                 
 
                 
@@ -73,22 +73,17 @@