diff --git a/Userland/Libraries/LibWeb/HTML/Navigation.cpp b/Userland/Libraries/LibWeb/HTML/Navigation.cpp
index de1a02edd74..7c1fdeb82ca 100644
--- a/Userland/Libraries/LibWeb/HTML/Navigation.cpp
+++ b/Userland/Libraries/LibWeb/HTML/Navigation.cpp
@@ -1026,11 +1026,13 @@ bool Navigation::inner_navigate_event_firing_algorithm(
auto current_url = document.url();
// 21. If all of the following are true:
+ // - event's classic history API state is null;
// - destination's is same document is true;
// - destination's URL equals currentURL with exclude fragments set to true; and
// - destination's URL's fragment is not identical to currentURL's fragment,
// then initialize event's hashChange to true. Otherwise, initialize it to false.
- event_init.hash_change = (destination->same_document()
+ event_init.hash_change = (!classic_history_api_state.has_value()
+ && destination->same_document()
&& destination->raw_url().equals(current_url, URL::ExcludeFragment::Yes)
&& destination->raw_url().fragment() != current_url.fragment());