diff --git a/Tests/LibWeb/Layout/expected/clearfix.txt b/Tests/LibWeb/Layout/expected/clearfix.txt
new file mode 100644
index 0000000000..4d286f46ad
--- /dev/null
+++ b/Tests/LibWeb/Layout/expected/clearfix.txt
@@ -0,0 +1,16 @@
+InitialContainingBlock <#document> at (0,0) content-size 800x600 children: not-inline
+ BlockContainer at (0,0) content-size 800x157 children: not-inline
+ BlockContainer
at (8,8) content-size 784x100 children: not-inline
+ BlockContainer at (8,8) content-size 784x100 children: not-inline
+ BlockContainer <(anonymous)> at (8,8) content-size 784x0 children: inline
+ TextNode <#text>
+ BlockContainer
at (8,8) content-size 100x100 floating children: not-inline
+ TextNode <#text>
+ BlockContainer at (8,108) content-size 784x0 children: not-inline
+ BlockContainer <(anonymous)> at (8,108) content-size 784x0 children: inline
+ TextNode <#text>
+ BlockContainer at (8,108) content-size 49x49 floating children: not-inline
+ BlockContainer <(anonymous)> at (8,108) content-size 784x0 children: inline
+ TextNode <#text>
+ BlockContainer <(anonymous)> at (8,108) content-size 784x0 children: inline
+ TextNode <#text>
diff --git a/Tests/LibWeb/Layout/input/clearfix.html b/Tests/LibWeb/Layout/input/clearfix.html
new file mode 100644
index 0000000000..b15946a979
--- /dev/null
+++ b/Tests/LibWeb/Layout/input/clearfix.html
@@ -0,0 +1,23 @@
+
+
diff --git a/Userland/Libraries/LibWeb/Layout/BlockFormattingContext.cpp b/Userland/Libraries/LibWeb/Layout/BlockFormattingContext.cpp
index 92198e0f15..e4b6d66ad9 100644
--- a/Userland/Libraries/LibWeb/Layout/BlockFormattingContext.cpp
+++ b/Userland/Libraries/LibWeb/Layout/BlockFormattingContext.cpp
@@ -636,6 +636,8 @@ void BlockFormattingContext::place_block_level_element_in_normal_flow_vertically
for (auto* containing_block = child_box.containing_block(); containing_block && containing_block != &root(); containing_block = containing_block->containing_block())
clearance_y_in_containing_block -= m_state.get(*containing_block).offset.y();
+ if (clearance_y_in_containing_block > y)
+ m_y_offset_of_current_block_container = clearance_y_in_containing_block;
y = max(y, clearance_y_in_containing_block);
float_side.clear();
}