diff --git a/esphome/components/web_server_idf/web_server_idf.cpp b/esphome/components/web_server_idf/web_server_idf.cpp index cb6c86f7eb..5062aa1e6c 100644 --- a/esphome/components/web_server_idf/web_server_idf.cpp +++ b/esphome/components/web_server_idf/web_server_idf.cpp @@ -256,8 +256,10 @@ std::string AsyncWebServerRequest::url() const { } // Decode URL-encoded characters in-place (e.g., %20 -> space) // This matches AsyncWebServer behavior on Arduino - size_t new_len = url_decode(&result[0]); - result.resize(new_len); + if (!result.empty()) { + size_t new_len = url_decode(&result[0]); + result.resize(new_len); + } return result; }