diff --git a/Tests/LibWeb/Layout/expected/table/zero-columns-gridmax.txt b/Tests/LibWeb/Layout/expected/table/zero-columns-gridmax.txt
new file mode 100644
index 0000000000..22f0923aa2
--- /dev/null
+++ b/Tests/LibWeb/Layout/expected/table/zero-columns-gridmax.txt
@@ -0,0 +1,7 @@
+Viewport <#document> at (0,0) content-size 800x600 children: not-inline
+ BlockContainer at (0,0) content-size 800x16 children: not-inline
+ BlockContainer
at (8,8) content-size 784x0 children: not-inline
+ TableWrapper <(anonymous)> at (8,8) content-size 200x0 children: not-inline
+ TableBox at (8,8) content-size 200x0 children: not-inline
+ TableRowBox at (8,8) content-size 200x0 children: not-inline
+ TableCellBox at (8,8) content-size 200x0 children: not-inline
diff --git a/Tests/LibWeb/Layout/input/table/zero-columns-gridmax.html b/Tests/LibWeb/Layout/input/table/zero-columns-gridmax.html
new file mode 100644
index 0000000000..63bfe96918
--- /dev/null
+++ b/Tests/LibWeb/Layout/input/table/zero-columns-gridmax.html
@@ -0,0 +1,15 @@
+
+
\ No newline at end of file
diff --git a/Userland/Libraries/LibWeb/Layout/TableFormattingContext.cpp b/Userland/Libraries/LibWeb/Layout/TableFormattingContext.cpp
index 354502fb3a..c3c565f24c 100644
--- a/Userland/Libraries/LibWeb/Layout/TableFormattingContext.cpp
+++ b/Userland/Libraries/LibWeb/Layout/TableFormattingContext.cpp
@@ -358,8 +358,17 @@ void TableFormattingContext::distribute_width_to_columns()
}
auto width_to_distribute = available_width - columns_total_used_width();
- for (auto& column : m_columns) {
- column.used_width += width_to_distribute * column.max_width / grid_max;
+ if (grid_max == 0) {
+ // If total max width of columns is zero then divide distributable width equally among them
+ auto column_width = width_to_distribute / m_columns.size();
+ for (auto& column : m_columns) {
+ column.used_width = column_width;
+ }
+ } else {
+ // Distribute width to columns proportionally to their max width
+ for (auto& column : m_columns) {
+ column.used_width += width_to_distribute * column.max_width / grid_max;
+ }
}
}
}