diff --git a/testrail_bot/control/templates/base.html b/testrail_bot/control/templates/base.html
index 464681a..d2dd9a3 100644
--- a/testrail_bot/control/templates/base.html
+++ b/testrail_bot/control/templates/base.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-{% load bootstrap3 %}
+{% load bootstrap5 %}
 {% bootstrap_css %}
 {% bootstrap_javascript %}
 
@@ -8,25 +8,30 @@
     <meta charset="UTF-8">
     <title>TestRail bot configuration</title>
     <style>
-        body { padding-top: 70px; }
+        body { padding-top: 0px; }
     </style>
     {% block head %}
     {% endblock %}
 </head>
 <body>
-<nav class="navbar navbar-inverse navbar-fixed-top">
+<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
     <div class="container-fluid">
-    <div class="navbar-header">
-      <a class="navbar-brand" href="{% url 'index' %}">TestRail bot</a>
-    </div>
-    <ul class="nav navbar-nav">
-        <li><a href="{% url 'index' %}">Test Runs</a></li>
-        <li><a href="{% url 'list_reports' %}">Reports</a></li>
-        <li><a href="{% url 'help' %}">Help</a></li>
-        <li><a href="{% url 'jenkins_plot' %}">Jenkins plot</a></li>
+        <div class="navbar-header">
+            <a class="navbar-brand" href="{% url 'index' %}">TestRail bot</a>
+        </div>
+        <ul class="navbar-nav navbar-collapse">
+            <li class="nav-item ">
+                <a class="nav-link" href="{% url 'index' %}">Test Runs</a></li>
+            <li class="nav-item">
+                <a class="nav-link" href="{% url 'list_reports' %}">Reports</a></li>
+            <li class="nav-item">
+                <a class="nav-link" href="{% url 'help' %}">Help</a></li>
+            <li class="nav-item">
+                <a class="nav-link" href="{% url 'jenkins_plot' %}">Jenkins
+                    plot</a></li>
 
-    </ul>
-  </div>
+        </ul>
+    </div>
 </nav>
 {% block section %}{% endblock %}
 </body>
diff --git a/testrail_bot/control/templates/control/create_run.html b/testrail_bot/control/templates/control/create_run.html
index 136b7c1..19d8a16 100644
--- a/testrail_bot/control/templates/control/create_run.html
+++ b/testrail_bot/control/templates/control/create_run.html
@@ -1,5 +1,5 @@
 {% extends "base.html" %}
-{% load bootstrap3 %}
+{% load bootstrap5 %}
 {% block section %}
 <div>
   <input type="button" onclick="location.href={% url 'index' %}" height="8"
diff --git a/testrail_bot/control/templates/control/index.html b/testrail_bot/control/templates/control/index.html
index 359e975..64e3e99 100644
--- a/testrail_bot/control/templates/control/index.html
+++ b/testrail_bot/control/templates/control/index.html
@@ -1,7 +1,7 @@
 {% extends "base.html" %}
 {% block section %}
 <input type="button" onclick="location.href={% url 'create_run' %}"
-       class="btn btn-primary" value="Create new Test Run" />
+       class="btn btn-primary m-1" value="Create new Test Run" />
 <p><b>Test Runs</b> (total {{ runs|length }} runs):</p>
 <div class="list-group">
     {% for run in runs %}
diff --git a/testrail_bot/control/templates/control/report.html b/testrail_bot/control/templates/control/report.html
index 2adc34b..84dd072 100644
--- a/testrail_bot/control/templates/control/report.html
+++ b/testrail_bot/control/templates/control/report.html
@@ -1,44 +1,10 @@
 {% extends "base.html" %}
 {% block section %}
-{% load bootstrap3 %}
-{% bootstrap_javascript jquery=True %}
-<script>
-function getCookie(name) {
-    let cookieValue = null;
-    if (document.cookie && document.cookie !== '') {
-        const cookies = document.cookie.split(';');
-        for (let i = 0; i < cookies.length; i++) {
-            const cookie = cookies[i].trim();
-            // Does this cookie string begin with the name we want?
-            if (cookie.substring(0, name.length + 1) === (name + '=')) {
-                cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
-                break;
-            }
-        }
-    }
-    return cookieValue;
-};
-const csrftoken = getCookie('csrftoken');
+{% load bootstrap5 %}
 
-function send(){
-    $.ajax({
-        type: "post",
-        url: "{% url 'single_report' report_id %}",
-        dataType: "json",
-        headers: {'X-CSRFToken': csrftoken},
-        success:function(data)
-        {
-            tag = document.getElementById("data");
-            tag.innerHTML = data["data"];
-            //Send another request in 10 seconds.
-            if (data["finished"] != true){
-                setTimeout(function(){
-                    send();
-                }, 3000);
-            }
-        }
-    });
-}
-send();</script>
-<pre id="data">{{report}}</pre>
+{% if not finished %}
+<meta http-equiv="refresh" content="5">
+{% endif %}
+
+<pre id="data" class="p-4 border">{{ report | safe }}</pre>
 {% endblock %}
\ No newline at end of file
diff --git a/testrail_bot/control/templates/control/update_run.html b/testrail_bot/control/templates/control/update_run.html
index 8ccd94e..6b28cdf 100644
--- a/testrail_bot/control/templates/control/update_run.html
+++ b/testrail_bot/control/templates/control/update_run.html
@@ -1,38 +1,14 @@
 {% extends "base.html" %}
-{% load bootstrap3 %}
+{% load bootstrap5 %}
 {% block section %}
-<div>
+<div class="p-2">
   <input type="button" onclick="location.href={% url 'index' %}" height="8"
-       class="btn btn-primary" value="<- Back"/>
+       class="btn btn-primary m-1" value="<- Back"/>
   <h3>Edit Test Run #{{ run_id }}</h3>
   <form action="{% url 'single_run' run_id %}" method="post" class="form">
-    {% csrf_token %}
-      {% bootstrap_form_errors form type='non_fields' %}
-      <div class="col-xs-8">{% bootstrap_field form.project_name  size='sm' %}</div>
-      <div class="col-xs-8">{% bootstrap_field form.plan_name size='sm' %}</div>
-      <div class="col-xs-8">{% bootstrap_field form.run_name  size='sm' %}</div>
-      <div class="col-xs-8">{% bootstrap_field form.test_pattern  size='sm' %}</div>
-      <div class="col-xs-8">{% bootstrap_field form.run_id  size='sm' %}</div>
-      <div class="col-xs-8">{% bootstrap_field form.created_by_id  size='sm' %}</div>
-      <div class="col-xs-8">
-        User to id list: <ul><li>os-qa-bot = <code>109</code></li></ul>
-      </div>
-      <div class="col-xs-8">{% bootstrap_field form.filter_func  size='sm' %}</div>
-      <div class="col-xs-8">
-        {% bootstrap_field form.timestamp size='sm' %}
-      </div>
-      <div class="col-md-5">
-        {% bootstrap_field form.ip_filter  size='sm'%}
-      </div>
-      <div class="col-md-5">
-        {% bootstrap_field form.uuid_filter size='sm'%}
-      </div>
-      <div class="col-md-5">
-        {% bootstrap_field form.filter_last_traceback size='sm'%}
-      </div>
     {% buttons %}
     <div class="btn-toolbar col-xs-7">
-      <button type="submit" class="btn btn-primary">
+      <button type="submit" class="btn btn-primary m-1">
         <svg xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" width="1em"
              height="1em" viewBox="0,0,256,256">
           <g fill="#fffafa" fill-rule="nonzero" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="10" stroke-dasharray="" stroke-dashoffset="0" font-family="none" font-weight="none" font-size="none" text-anchor="none" style="mix-blend-mode: normal"><g transform="scale(10.66667,10.66667)">
@@ -40,7 +16,8 @@
         </svg>
          Save
       </button>
-      <button type="submit" formaction="{% url 'submit_run' run_id %}" class="btn btn-primary">
+      <button type="submit" formaction="{% url 'submit_run' run_id %}"
+              class="btn btn-primary m-1">
         <svg width="1em" height="1em" viewBox="0 0 16 16" class="bi bi-chevron-double-right" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
           <path fill-rule="evenodd" d="M3.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L9.293 8 3.646 2.354a.5.5 0 0 1 0-.708z"/>
           <path fill-rule="evenodd" d="M7.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L13.293 8 7.646 2.354a.5.5 0 0 1 0-.708z"/>
@@ -48,7 +25,75 @@
          Submit
       </button>
       <button type="submit" formaction="{% url 'delete_run' run_id %}"
-              class="btn btn-danger">
+              class="btn btn-danger m-1">
+        <svg xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" width="1em"
+             height="1em" viewBox="0,0,256,256">
+          <g fill="#ffffff" fill-rule="nonzero" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="10" stroke-dasharray="" stroke-dashoffset="0" font-family="none" font-weight="none" font-size="none" text-anchor="none" style="mix-blend-mode: normal"><g transform="scale(10.66667,10.66667)">
+          <path d="M10,2l-1,1h-4c-0.6,0 -1,0.4 -1,1c0,0.6 0.4,1 1,1h2h10h2c0.6,0 1,-0.4 1,-1c0,-0.6 -0.4,-1 -1,-1h-4l-1,-1zM5,7v13c0,1.1 0.9,2 2,2h10c1.1,0 2,-0.9 2,-2v-13zM9,9c0.6,0 1,0.4 1,1v9c0,0.6 -0.4,1 -1,1c-0.6,0 -1,-0.4 -1,-1v-9c0,-0.6 0.4,-1 1,-1zM15,9c0.6,0 1,0.4 1,1v9c0,0.6 -0.4,1 -1,1c-0.6,0 -1,-0.4 -1,-1v-9c0,-0.6 0.4,-1 1,-1z"></path></g></g>
+        </svg>
+         Delete
+      </button>
+    </div>
+    {% endbuttons %}
+    {% csrf_token %}
+      {% bootstrap_form_errors form type='non_fields' %}
+      <div class="col-xs-8">
+        {% bootstrap_field form.project_name  size='sm' %}</div>
+      <div class="col-xs-8">
+        {% bootstrap_field form.run_id  size='sm' %}</div>
+      <div class="col-xs-8">
+        {% bootstrap_field form.run_name  size='sm' %}</div>
+      <div class=" p-3 mt-5 bg-light bg-gradient">
+        <h5>TestRail filters</h5>
+        <div class="col-xs-8">
+          {% bootstrap_field form.plan_name size='sm' %}</div>
+
+        <div class="col-xs-8">
+          {% bootstrap_field form.test_pattern  size='sm' %}</div>
+
+        <div class="col-xs-8">
+          {% bootstrap_field form.created_by_id  size='sm' %}</div>
+        <div class="col-xs-8 small">
+          User to id list: <ul><li>os-qa-bot = <code>109</code></li></ul>
+        </div>
+        <div class="col-xs-8">
+          {% bootstrap_field form.timestamp size='sm' %}
+        </div>
+      </div>
+      <div class=" p-3 mt-5 bg-light bg-gradient">
+        <h5>Text filters</h5>
+        <div class="col-md-5">
+          {% bootstrap_field form.ip_filter  size='sm'%}
+        </div>
+        <div class="col-md-5">
+          {% bootstrap_field form.uuid_filter size='sm'%}
+        </div>
+        <div class="col-md-5">
+          {% bootstrap_field form.filter_last_traceback size='sm'%}
+        </div>
+        <div class="col-xs-8">
+          {% bootstrap_field form.filter_func  size='sm' %}</div>
+      </div>
+    {% buttons %}
+    <div class="btn-toolbar col-xs-7">
+      <button type="submit" class="btn btn-primary m-1">
+        <svg xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" width="1em"
+             height="1em" viewBox="0,0,256,256">
+          <g fill="#fffafa" fill-rule="nonzero" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="10" stroke-dasharray="" stroke-dashoffset="0" font-family="none" font-weight="none" font-size="none" text-anchor="none" style="mix-blend-mode: normal"><g transform="scale(10.66667,10.66667)">
+          <path d="M6,2c-0.13812,0 -0.27212,0.01438 -0.40234,0.04102c-0.91157,0.18642 -1.59766,0.99211 -1.59766,1.95898v18l8,-3l8,3v-18c0,-0.1375 -0.01426,-0.27246 -0.04102,-0.40234c-0.15978,-0.78135 -0.77529,-1.39686 -1.55664,-1.55664c-0.13022,-0.02663 -0.26422,-0.04102 -0.40234,-0.04102z"></path></g></g>
+        </svg>
+         Save
+      </button>
+      <button type="submit" formaction="{% url 'submit_run' run_id %}"
+              class="btn btn-primary m-1">
+        <svg width="1em" height="1em" viewBox="0 0 16 16" class="bi bi-chevron-double-right" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
+          <path fill-rule="evenodd" d="M3.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L9.293 8 3.646 2.354a.5.5 0 0 1 0-.708z"/>
+          <path fill-rule="evenodd" d="M7.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L13.293 8 7.646 2.354a.5.5 0 0 1 0-.708z"/>
+        </svg>
+         Submit
+      </button>
+      <button type="submit" formaction="{% url 'delete_run' run_id %}"
+              class="btn btn-danger m-1">
         <svg xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" width="1em"
              height="1em" viewBox="0,0,256,256">
           <g fill="#ffffff" fill-rule="nonzero" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="10" stroke-dasharray="" stroke-dashoffset="0" font-family="none" font-weight="none" font-size="none" text-anchor="none" style="mix-blend-mode: normal"><g transform="scale(10.66667,10.66667)">
diff --git a/testrail_bot/control/views.py b/testrail_bot/control/views.py
index 2c9f0b2..18b5663 100644
--- a/testrail_bot/control/views.py
+++ b/testrail_bot/control/views.py
@@ -54,12 +54,10 @@
 def single_report(request, report_id):
     report = models.TestRailReport.objects.get(pk=report_id)
     data = report.path.read().decode("utf-8")
-    if request.method == "POST" and request.is_ajax():
-        return HttpResponse(
-            json.dumps({"data": data, "finished": report.finished}),
-            content_type="application/json")
     return render(request, "control/report.html",
-                  {"report_id": report.id, "report": data})
+                  {"report_id": report.id,
+                   "report": data,
+                   "finished": report.finished})
 
 
 def submit_run(request, run_id):
diff --git a/testrail_bot/requirements.txt b/testrail_bot/requirements.txt
index 5762f72..74b4dfc 100644
--- a/testrail_bot/requirements.txt
+++ b/testrail_bot/requirements.txt
@@ -1,9 +1,10 @@
 celery==4.4.6
 Django==3.0.7
-django-bootstrap3==14.0.0
+# django-bootstrap3==14.0.0
 psycopg2-binary==2.8.5
 redis==3.5.3
 testrail-api==1.8.0
 uWSGI==2.0.19.1
 python-jenkins==1.7.0
 matplotlib==3.3.2
+django-bootstrap-v5
diff --git a/testrail_bot/testrail_bot/settings.py b/testrail_bot/testrail_bot/settings.py
index 74464f2..a40279d 100644
--- a/testrail_bot/testrail_bot/settings.py
+++ b/testrail_bot/testrail_bot/settings.py
@@ -32,7 +32,7 @@
 
 INSTALLED_APPS = [
     'control.apps.ControlConfig',
-    'bootstrap3',
+    'bootstrap5',
     'django.contrib.admin',
     'django.contrib.auth',
     'django.contrib.contenttypes',
