diff --git a/lib/hawat/blueprints/design_bs3/templates/_macros_chart.html b/lib/hawat/blueprints/design_bs3/templates/_macros_chart.html
index 93b0bbf4b9a72b976c6f0f09c558ca8be812b023..7d44a915ace2e38b6c28db6aee003a0c42fa441d 100644
--- a/lib/hawat/blueprints/design_bs3/templates/_macros_chart.html
+++ b/lib/hawat/blueprints/design_bs3/templates/_macros_chart.html
@@ -1035,6 +1035,7 @@
 
                 {%- if not _stats_var_name and permission_can('power') %}
                     {{ macros_site.render_sql_queries([], key=chsection[0]) }}
+                    {{ macros_site.render_timemarks([], key=chsection[0], show_to_render_time=False) }}
                 {%- endif %}
 
                 <!-- Tab panel - BEGIN ---------------------------------------->
diff --git a/lib/hawat/blueprints/design_bs3/templates/_macros_site.html b/lib/hawat/blueprints/design_bs3/templates/_macros_site.html
index c9fabfb66bf96ecbce9254ed1a38021ce1505696..b4570eadfa5fa85eec826242d00778babcfb9e22 100644
--- a/lib/hawat/blueprints/design_bs3/templates/_macros_site.html
+++ b/lib/hawat/blueprints/design_bs3/templates/_macros_site.html
@@ -339,58 +339,69 @@
 
 ----------------------------------------------------------------------------- #}
 
-{%- macro render_timemarks(timemark_list) %}
+{%- macro render_timemarks(timemark_list, key = '', show_to_render_time=True) %}
 {%- set dur_ns = {} %}
-{%- set total_duration = timemark_list[-1][0] - timemark_list[0][0] %}
+{%- if timemark_list %}
+    {%- set total_duration = timemark_list[-1][0] - timemark_list[0][0] %}
+{%- endif %}
                     <div class="alert alert-info">
                         <h3 class="panel-title">
-                            <a role="button" data-toggle="collapse" href="#timemark_list" aria-expanded="false" aria-controls="timemark_list">
+                            <a role="button" data-toggle="collapse" href="#timemark_list{%- if key %}_{{ key }}{%- endif %}" aria-expanded="false" aria-controls="timemark_list{%- if key %}_{{ key }}{%- endif %}">
                                 {{ get_icon('role-admin') }} {{ _('Time marks') }} {{ get_icon('expand') }}
                             </a>
                         </h3>
-                        <div id="timemark_list" class="collapse">
+                        <div id="timemark_list{%- if key %}_{{ key }}{%- endif %}" class="collapse">
                             <hr>
-                            <table class="table table-condensed" style="background-color: white">
+                            <table class="table table-condensed" data-title-mark-timestamp="{{ _('Mark timestamp: ') }}" data-title-time-difference="{{ _('Time difference from: ') }}" style="background-color: white">
+                                <tbody>
     {% for time_mark in timemark_list %}
-                                <tr{% if time_mark[2] == 'end' %} class="bg-danger"{% endif %}>
-                                    <td>
-                                        <strong>{{ time_mark[3] }}:{{ time_mark[2] }}:{{ time_mark[1] }}</strong>
-                                    </td>
-                                    <td>
-                                        <span data-toggle="tooltip" title="{{ _('Mark timestamp: ') }}{{ time_mark[0].isoformat() }}">
-                                            {{ get_icon('clock') }}&nbsp;
-                                        </span>
+                                    <tr{% if time_mark[2] == 'end' %} class="bg-danger"{% endif %}>
+                                        <td>
+                                            <strong>{{ time_mark[3] }}:{{ time_mark[2] }}:{{ time_mark[1] }}</strong>
+                                        </td>
+                                        <td>
+                                            <span data-toggle="tooltip" title="{{ _('Mark timestamp: ') }}{{ time_mark[0].isoformat() }}">
+                                                {{ get_icon('clock') }}&nbsp;
+                                            </span>
                                         {%- if loop.index0 != 0 %}
-                                        {%- set time_mark_prev = timemark_list[loop.index0 - 1] %}
-                                        <span data-toggle="tooltip" title="{{ _('Time difference from: ') }}{{ time_mark_prev[3] }}:{{ time_mark_prev[2] }}:{{ time_mark_prev[1] }}">
-                                            {{ time_mark[0] - timemark_list[loop.index0 - 1][0] }} s&nbsp;
-                                            {{ babel_format_percent((time_mark[0] - time_mark_prev[0])/total_duration) }}
-                                        </span>
+                                            {%- set time_mark_prev = timemark_list[loop.index0 - 1] %}
+                                            <span data-toggle="tooltip" title="{{ _('Time difference from: ') }}{{ time_mark_prev[3] }}:{{ time_mark_prev[2] }}:{{ time_mark_prev[1] }}">
+                                                {{ time_mark[0] - timemark_list[loop.index0 - 1][0] }} s&nbsp;
+                                                {{ babel_format_percent((time_mark[0] - time_mark_prev[0])/total_duration) }}
+                                            </span>
                                         {% endif %}
-                                    </td>
-                                    <td>
+                                        </td>
+                                        <td>
         {% if time_mark[2] == 'end' %}
             {%- set dur_key = '{}:begin:{}'.format(time_mark[3], time_mark[1]) %}
             {%- if dur_key in dur_ns and dur_ns[dur_key] != timemark_list[loop.index0 - 1][0] %}
-                                        <span data-toggle="tooltip" title="{{ _('Time difference from: ') }}{{ dur_key }}">
-                                            {{ time_mark[0] - dur_ns[dur_key] }} s&nbsp;
-                                            {{ babel_format_percent((time_mark[0] - dur_ns[dur_key])/total_duration) }}
-                                        </span>
+                                           <span data-toggle="tooltip" title="{{ _('Time difference from: ') }}{{ dur_key }}">
+                                                {{ time_mark[0] - dur_ns[dur_key] }} s&nbsp;
+                                                {{ babel_format_percent((time_mark[0] - dur_ns[dur_key])/total_duration) }}
+                                            </span>
             {%- endif %}
         {%- elif time_mark[2] == 'begin' %}
             {%- set dur_key = '{}:{}:{}'.format(time_mark[3], time_mark[2], time_mark[1]) %}
             {%- set _dummy = dur_ns.update({dur_key: time_mark[0]}) %}
         {%- endif %}
-                                    </td>
-                                    <td class="hidden-xs hidden-sm hidden-md">
-                                        {{ time_mark[4] }}
-                                    </td>
-                                </tr>
+                                        </td>
+                                        <td class="hidden-xs hidden-sm hidden-md">
+                                            {{ time_mark[4] }}
+                                        </td>
+                                    </tr>
     {% endfor %}
+                                </tbody>
                             </table>
                             <p>
-                                <strong>{{ _('Total duration') }}:</strong> {{ total_duration }}<br>
-                                <strong>{{ _('Duration to rendering time') }}:</strong> {{ get_datetime_utc() - timemark_list[0][0] }}<br>
+                                <span>
+                                <strong>{{ _('Total duration') }}:</strong>
+                                <span id="total_duration{%- if key %}_{{ key }}{%- endif %}">{%- if timemark_list %}{{ total_duration }}{%- endif %}</span>
+                                <br>
+    {%- if show_to_render_time %}
+                                <strong>{{ _('Duration to rendering time') }}:</strong>
+                                <span id="to_rendering_time{%- if key %}_{{ key }}{%- endif %}">{%- if timemark_list %}{{ get_datetime_utc() - timemark_list[0][0] }}{%- endif %}</span>
+                                <br>
+    {%- endif %}
                             </p>
                         </div>
                     </div> <!-- /.well -->
diff --git a/lib/hawat/static/js/hawat-jquery.js b/lib/hawat/static/js/hawat-jquery.js
index ad8f5c899c89e3cb010b6da5e3708e4906890103..a377bdc14ca13918f3550bdd6502bd068d0bf215 100644
--- a/lib/hawat/static/js/hawat-jquery.js
+++ b/lib/hawat/static/js/hawat-jquery.js
@@ -244,6 +244,7 @@ $(function() {
 
             let dict_key = event.target.getAttribute('data-dict-key');
             render_sql_queries(data, dict_key);
+            render_time_marks(data, dict_key);
 
             let stats = data['statistics'];
             rendering_functions[dict_key].forEach(rendering_func => rendering_func(stats));
@@ -270,3 +271,76 @@ function render_sql_queries(data, dict_key ) {
         $(`#query_list_${dict_key}`).parent().addClass('hidden');
     }
 }
+
+function ms_to_time_format(ms) {
+    return new Date(ms).toISOString().slice(11, 23);
+}
+
+function render_time_marks(data, dict_key) {
+    if (data.time_marks != undefined && $(`#timemark_list_${dict_key}`).length) {
+        let timemark_table = $(`#timemark_list_${dict_key} > table > tbody`).first();
+        timemark_table.html('');
+
+        // can be NaN
+        total_duration = new Date(data.time_marks[data.time_marks.length - 1][0]) - new Date(data.time_marks[0][0]);
+
+        let time_mark_prev = undefined;
+        let dur_ns = {};
+
+        for (const time_mark of data.time_marks) {
+            let time_difference = '';
+            if (time_mark_prev != undefined) {
+                time_difference = `
+                    <span data-toggle="tooltip" title="${timemark_table.attr('data-title-time-difference')}${time_mark_prev[3]}:${time_mark_prev[2]}:${time_mark_prev[1]}">
+                        ${ms_to_time_format(new Date(time_mark[0]) - new Date(time_mark_prev[0]))} s&nbsp;
+                        ${((new Date(time_mark[0]) - new Date(time_mark_prev[0])) / total_duration).toLocaleString(undefined, {style: "percent"})}
+                    </span>
+                `;
+            }
+
+            let dur_key = ''
+            let time_taken = ''
+            if (time_mark[2] == 'end') {
+                dur_key = `${time_mark[3]}:begin:${time_mark[1]}`;
+                if (dur_key in dur_ns && dur_ns[dur_key] != new Date(time_mark_prev[0])) {
+                    time_taken = `
+                        <span data-toggle="tooltip" title="${timemark_table.attr('data-title-time-difference')}${dur_key}">
+                            ${ms_to_time_format(new Date(time_mark[0]) - dur_ns[dur_key])} s&nbsp;
+                            ${((new Date(time_mark[0]) - dur_ns[dur_key]) / total_duration).toLocaleString(undefined, {style: "percent"})}
+                        </span>
+                    `;
+                }
+            } else {
+                dur_key = `${time_mark[3]}:${time_mark[2]}:${time_mark[1]}`
+                dur_ns[dur_key] = new Date(time_mark[0]);
+            }
+
+            timemark_table.append(`
+                <tr${time_mark[2] == 'end' ? ' class="bg-danger"' : ''}>
+                    <td>
+                        <strong>${time_mark[3]}:${time_mark[2]}:${time_mark[1]}</strong>
+                    </td>
+                    <td>
+                        <span data-toggle="tooltip" title="${timemark_table.attr('data-title-mark-timestamp')}${time_mark[0]}">
+                            <i class="fas fa-fw fa-clock"></i>&nbsp;
+                        </span>
+                        ${time_difference}
+                    </td>
+                    <td>
+                        ${time_taken}
+                    </td>
+                    <td class="hidden-xs hidden-sm hidden-md">
+                        ${time_mark[4]}
+                    </td>
+                </tr>
+            `);
+
+            time_mark_prev = time_mark;
+        }
+
+        $(`#total_duration_${dict_key}`).html(ms_to_time_format(total_duration));
+    } else if ($(`#timemark_list_${dict_key}`).length){
+        console.log("'time_marks' not present, skipping");
+        $(`#timemark_list_${dict_key}`).parent().addClass('hidden')
+    }
+}