diff --git a/Tests/LibWeb/Text/expected/HTML/HTMLProgressElement-large-max-value.txt b/Tests/LibWeb/Text/expected/HTML/HTMLProgressElement-large-max-value.txt
new file mode 100644
index 00000000000..542d4b7e8d8
--- /dev/null
+++ b/Tests/LibWeb/Text/expected/HTML/HTMLProgressElement-large-max-value.txt
@@ -0,0 +1 @@
+progressElement.max: 1e+21
diff --git a/Tests/LibWeb/Text/input/HTML/HTMLProgressElement-large-max-value.html b/Tests/LibWeb/Text/input/HTML/HTMLProgressElement-large-max-value.html
new file mode 100644
index 00000000000..de37852f9ae
--- /dev/null
+++ b/Tests/LibWeb/Text/input/HTML/HTMLProgressElement-large-max-value.html
@@ -0,0 +1,9 @@
+
+
+
+
diff --git a/Userland/Libraries/LibWeb/HTML/Numbers.cpp b/Userland/Libraries/LibWeb/HTML/Numbers.cpp
index 5fcf69cb6ee..1b22418d449 100644
--- a/Userland/Libraries/LibWeb/HTML/Numbers.cpp
+++ b/Userland/Libraries/LibWeb/HTML/Numbers.cpp
@@ -150,7 +150,7 @@ Optional parse_floating_point_number(StringView string)
lexer.consume_while(is_ascii_digit);
size_t end_index = lexer.tell();
auto digits = lexer.input().substring_view(start_index, end_index - start_index);
- auto optional_value = AK::StringUtils::convert_to_int(digits);
+ auto optional_value = AK::StringUtils::convert_to_floating_point(digits, TrimWhitespace::No);
value *= optional_value.value();
}