diff --git a/src/html_parser.ml b/src/html_parser.ml
index 55f8529..9c0ac80 100644
--- a/src/html_parser.ml
+++ b/src/html_parser.ml
@@ -2546,7 +2546,7 @@ let parse requested_context report (tokens, set_tokenizer_state, set_foreign) =
(* 8.2.5.4.18. *)
and in_template_mode () =
- dispatch tokens (fun v -> in_table_mode_rules in_template_mode v)
+ dispatch tokens (fun v -> in_template_mode_rules in_template_mode v)
(* 8.2.5.4.18. *)
and in_template_mode_rules mode = function
diff --git a/test/test_html_parser.ml b/test/test_html_parser.ml
index c4be125..24d405b 100644
--- a/test/test_html_parser.ml
+++ b/test/test_html_parser.ml
@@ -1524,5 +1524,16 @@ let tests = [
1, 14, S (start_element "frame");
1, 14, S `End_element;
1, 21, S `End_element;
- 1, 32, S `End_element])
+ 1, 32, S `End_element]);
+
+ ("html.parser.template" >:: fun _ ->
+ expect ~context:None ""
+ [ 1, 1, S (start_element "template");
+ 1, 11, S `End_element];
+
+ expect ~context:None ""
+ [ 1, 1, S (start_element "template");
+ 1, 11, S (start_element "p");
+ 1, 14, S `End_element;
+ 1, 18, S `End_element]);
]