diff --git a/Tests/LibWeb/Text/expected/css/transform-origin-serialization.txt b/Tests/LibWeb/Text/expected/css/transform-origin-serialization.txt
new file mode 100644
index 0000000000..90d8bcd353
--- /dev/null
+++ b/Tests/LibWeb/Text/expected/css/transform-origin-serialization.txt
@@ -0,0 +1,7 @@
+center => 50% 50%
+10px => 10px 50%
+25% => 25% 50%
+left 20% => 0% 20%
+20px bottom => 20px 100%
+top right => 100% 0%
+"center" => (invalid)
diff --git a/Tests/LibWeb/Text/input/css/transform-origin-serialization.html b/Tests/LibWeb/Text/input/css/transform-origin-serialization.html
new file mode 100644
index 0000000000..3ac0a42bd7
--- /dev/null
+++ b/Tests/LibWeb/Text/input/css/transform-origin-serialization.html
@@ -0,0 +1,23 @@
+
+
diff --git a/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp b/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp
index 8b3134c67e..92b29019d0 100644
--- a/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp
+++ b/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp
@@ -5008,6 +5008,8 @@ RefPtr Parser::parse_transform_origin_value(Vector c
};
auto to_axis_offset = [](RefPtr value) -> Optional {
+ if (!value)
+ return OptionalNone {};
if (value->is_percentage())
return AxisOffset { Axis::None, value->as_percentage() };
if (value->is_length())