diff --git a/src/WebApi_prometheus.cpp b/src/WebApi_prometheus.cpp
index 0f46c97f3..b2e566545 100644
--- a/src/WebApi_prometheus.cpp
+++ b/src/WebApi_prometheus.cpp
@@ -54,6 +54,14 @@ void WebApiPrometheusClass::onPrometheusMetricsGet(AsyncWebServerRequest* reques
stream->print("# TYPE opendtu_free_heap_size gauge\n");
stream->printf("opendtu_free_heap_size %zu\n", ESP.getFreeHeap());
+ stream->print("# HELP opendtu_biggest_heap_block Biggest free heap block\n");
+ stream->print("# TYPE opendtu_biggest_heap_block gauge\n");
+ stream->printf("opendtu_biggest_heap_block %zu\n", ESP.getMaxAllocHeap());
+
+ stream->print("# HELP opendtu_heap_min_free Minimum free memory since boot\n");
+ stream->print("# TYPE opendtu_heap_min_free gauge\n");
+ stream->printf("opendtu_heap_min_free %zu\n", ESP.getMinFreeHeap());
+
stream->print("# HELP wifi_rssi WiFi RSSI\n");
stream->print("# TYPE wifi_rssi gauge\n");
stream->printf("wifi_rssi %d\n", WiFi.RSSI());
diff --git a/src/WebApi_sysstatus.cpp b/src/WebApi_sysstatus.cpp
index 85324f08f..ffd032593 100644
--- a/src/WebApi_sysstatus.cpp
+++ b/src/WebApi_sysstatus.cpp
@@ -49,6 +49,8 @@ void WebApiSysstatusClass::onSystemStatus(AsyncWebServerRequest* request)
root["heap_total"] = ESP.getHeapSize();
root["heap_used"] = ESP.getHeapSize() - ESP.getFreeHeap();
+ root["heap_max_block"] = ESP.getMaxAllocHeap();
+ root["heap_min_free"] = ESP.getMinFreeHeap();
root["sketch_total"] = ESP.getFreeSketchSpace();
root["sketch_used"] = ESP.getSketchSize();
root["littlefs_total"] = LittleFS.totalBytes();
diff --git a/webapp/src/components/HeapDetails.vue b/webapp/src/components/HeapDetails.vue
new file mode 100644
index 000000000..04c589319
--- /dev/null
+++ b/webapp/src/components/HeapDetails.vue
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+ {{ $t('heapdetails.TotalFree') }}
+ {{ $n(Math.round(getFreeHeap() / 1024), 'kilobyte') }}
+
+
+ {{ $t('heapdetails.LargestFreeBlock') }}
+ {{ $n(Math.round(systemStatus.heap_max_block / 1024), 'kilobyte') }}
+
+
+ {{ $t('heapdetails.Fragmentation') }}
+ {{ $n(getFragmentation(), 'percent') }}
+
+
+
+ {{ $t('heapdetails.MaxUsage') }}
+ {{ $n(Math.round(getMaxUsageAbs() / 1024), 'kilobyte') }} ({{ $n(getMaxUsageRel(), 'percent') }})
+