diff --git a/crates/biome_html_parser/src/syntax/mod.rs b/crates/biome_html_parser/src/syntax/mod.rs
index fc67c3795240..4a446710e888 100644
--- a/crates/biome_html_parser/src/syntax/mod.rs
+++ b/crates/biome_html_parser/src/syntax/mod.rs
@@ -16,8 +16,8 @@ const RECOVER_ATTRIBUTE_LIST: TokenSet = token_set!(T![>], T![<]
/// These elements are effectively always self-closing. They should not have a closing tag (if they do, it should be a parsing error). They might not contain a `/` like in ``.
static VOID_ELEMENTS: &[&str] = &[
- "area", "base", "br", "col", "embed", "hr", "img", "input", "link", "meta", "source", "track",
- "wbr",
+ "area", "base", "br", "col", "embed", "hr", "img", "input", "link", "meta", "param", "source",
+ "track", "wbr",
];
/// For these elements, the content is treated as raw text and no parsing is done inside them. This is so that the contents of these tags can be parsed by a different parser.
diff --git a/crates/biome_html_parser/tests/html_specs/ok/no-end-tags/param.html b/crates/biome_html_parser/tests/html_specs/ok/no-end-tags/param.html
new file mode 100644
index 000000000000..c62a9010f3d7
--- /dev/null
+++ b/crates/biome_html_parser/tests/html_specs/ok/no-end-tags/param.html
@@ -0,0 +1,4 @@
+
diff --git a/crates/biome_html_parser/tests/html_specs/ok/no-end-tags/param.html.snap b/crates/biome_html_parser/tests/html_specs/ok/no-end-tags/param.html.snap
new file mode 100644
index 000000000000..b31aedaeeb64
--- /dev/null
+++ b/crates/biome_html_parser/tests/html_specs/ok/no-end-tags/param.html.snap
@@ -0,0 +1,250 @@
+---
+source: crates/biome_html_parser/tests/spec_test.rs
+expression: snapshot
+---
+## Input
+
+```html
+
+
+```
+
+
+## AST
+
+```
+HtmlRoot {
+ bom_token: missing (optional),
+ directive: missing (optional),
+ html: HtmlElementList [
+ HtmlElement {
+ opening_element: HtmlOpeningElement {
+ l_angle_token: L_ANGLE@0..1 "<" [] [],
+ name: HtmlName {
+ value_token: HTML_LITERAL@1..8 "object" [] [Whitespace(" ")],
+ },
+ attributes: HtmlAttributeList [
+ HtmlAttribute {
+ name: HtmlName {
+ value_token: HTML_LITERAL@8..12 "type" [] [],
+ },
+ initializer: HtmlAttributeInitializerClause {
+ eq_token: EQ@12..13 "=" [] [],
+ value: HtmlString {
+ value_token: HTML_STRING_LITERAL@13..31 "\"application/pdf\"" [] [Whitespace(" ")],
+ },
+ },
+ },
+ HtmlAttribute {
+ name: HtmlName {
+ value_token: HTML_LITERAL@31..35 "data" [] [],
+ },
+ initializer: HtmlAttributeInitializerClause {
+ eq_token: EQ@35..36 "=" [] [],
+ value: HtmlString {
+ value_token: HTML_STRING_LITERAL@36..65 "\"/media/examples/In-CC0.pdf\"" [] [Whitespace(" ")],
+ },
+ },
+ },
+ HtmlAttribute {
+ name: HtmlName {
+ value_token: HTML_LITERAL@65..70 "width" [] [],
+ },
+ initializer: HtmlAttributeInitializerClause {
+ eq_token: EQ@70..71 "=" [] [],
+ value: HtmlString {
+ value_token: HTML_STRING_LITERAL@71..77 "\"250\"" [] [Whitespace(" ")],
+ },
+ },
+ },
+ HtmlAttribute {
+ name: HtmlName {
+ value_token: HTML_LITERAL@77..83 "height" [] [],
+ },
+ initializer: HtmlAttributeInitializerClause {
+ eq_token: EQ@83..84 "=" [] [],
+ value: HtmlString {
+ value_token: HTML_STRING_LITERAL@84..89 "\"200\"" [] [],
+ },
+ },
+ },
+ ],
+ r_angle_token: R_ANGLE@89..90 ">" [] [],
+ },
+ children: HtmlElementList [
+ HtmlSelfClosingElement {
+ l_angle_token: L_ANGLE@90..93 "<" [Newline("\n"), Whitespace("\t")] [],
+ name: HtmlName {
+ value_token: HTML_LITERAL@93..99 "param" [] [Whitespace(" ")],
+ },
+ attributes: HtmlAttributeList [
+ HtmlAttribute {
+ name: HtmlName {
+ value_token: HTML_LITERAL@99..103 "name" [] [],
+ },
+ initializer: HtmlAttributeInitializerClause {
+ eq_token: EQ@103..104 "=" [] [],
+ value: HtmlString {
+ value_token: HTML_STRING_LITERAL@104..115 "\"autoplay\"" [] [Whitespace(" ")],
+ },
+ },
+ },
+ HtmlAttribute {
+ name: HtmlName {
+ value_token: HTML_LITERAL@115..120 "value" [] [],
+ },
+ initializer: HtmlAttributeInitializerClause {
+ eq_token: EQ@120..121 "=" [] [],
+ value: HtmlString {
+ value_token: HTML_STRING_LITERAL@121..127 "\"true\"" [] [],
+ },
+ },
+ },
+ ],
+ slash_token: missing (optional),
+ r_angle_token: R_ANGLE@127..128 ">" [] [],
+ },
+ HtmlSelfClosingElement {
+ l_angle_token: L_ANGLE@128..131 "<" [Newline("\n"), Whitespace("\t")] [],
+ name: HtmlName {
+ value_token: HTML_LITERAL@131..137 "param" [] [Whitespace(" ")],
+ },
+ attributes: HtmlAttributeList [
+ HtmlAttribute {
+ name: HtmlName {
+ value_token: HTML_LITERAL@137..141 "name" [] [],
+ },
+ initializer: HtmlAttributeInitializerClause {
+ eq_token: EQ@141..142 "=" [] [],
+ value: HtmlString {
+ value_token: HTML_STRING_LITERAL@142..148 "\"src\"" [] [Whitespace(" ")],
+ },
+ },
+ },
+ HtmlAttribute {
+ name: HtmlName {
+ value_token: HTML_LITERAL@148..153 "value" [] [],
+ },
+ initializer: HtmlAttributeInitializerClause {
+ eq_token: EQ@153..154 "=" [] [],
+ value: HtmlString {
+ value_token: HTML_STRING_LITERAL@154..182 "\"/media/examples/In-CC0.pdf\"" [] [],
+ },
+ },
+ },
+ ],
+ slash_token: missing (optional),
+ r_angle_token: R_ANGLE@182..183 ">" [] [],
+ },
+ ],
+ closing_element: HtmlClosingElement {
+ l_angle_token: L_ANGLE@183..185 "<" [Newline("\n")] [],
+ slash_token: SLASH@185..186 "/" [] [],
+ name: HtmlName {
+ value_token: HTML_LITERAL@186..192 "object" [] [],
+ },
+ r_angle_token: R_ANGLE@192..193 ">" [] [],
+ },
+ },
+ ],
+ eof_token: EOF@193..194 "" [Newline("\n")] [],
+}
+```
+
+## CST
+
+```
+0: HTML_ROOT@0..194
+ 0: (empty)
+ 1: (empty)
+ 2: HTML_ELEMENT_LIST@0..193
+ 0: HTML_ELEMENT@0..193
+ 0: HTML_OPENING_ELEMENT@0..90
+ 0: L_ANGLE@0..1 "<" [] []
+ 1: HTML_NAME@1..8
+ 0: HTML_LITERAL@1..8 "object" [] [Whitespace(" ")]
+ 2: HTML_ATTRIBUTE_LIST@8..89
+ 0: HTML_ATTRIBUTE@8..31
+ 0: HTML_NAME@8..12
+ 0: HTML_LITERAL@8..12 "type" [] []
+ 1: HTML_ATTRIBUTE_INITIALIZER_CLAUSE@12..31
+ 0: EQ@12..13 "=" [] []
+ 1: HTML_STRING@13..31
+ 0: HTML_STRING_LITERAL@13..31 "\"application/pdf\"" [] [Whitespace(" ")]
+ 1: HTML_ATTRIBUTE@31..65
+ 0: HTML_NAME@31..35
+ 0: HTML_LITERAL@31..35 "data" [] []
+ 1: HTML_ATTRIBUTE_INITIALIZER_CLAUSE@35..65
+ 0: EQ@35..36 "=" [] []
+ 1: HTML_STRING@36..65
+ 0: HTML_STRING_LITERAL@36..65 "\"/media/examples/In-CC0.pdf\"" [] [Whitespace(" ")]
+ 2: HTML_ATTRIBUTE@65..77
+ 0: HTML_NAME@65..70
+ 0: HTML_LITERAL@65..70 "width" [] []
+ 1: HTML_ATTRIBUTE_INITIALIZER_CLAUSE@70..77
+ 0: EQ@70..71 "=" [] []
+ 1: HTML_STRING@71..77
+ 0: HTML_STRING_LITERAL@71..77 "\"250\"" [] [Whitespace(" ")]
+ 3: HTML_ATTRIBUTE@77..89
+ 0: HTML_NAME@77..83
+ 0: HTML_LITERAL@77..83 "height" [] []
+ 1: HTML_ATTRIBUTE_INITIALIZER_CLAUSE@83..89
+ 0: EQ@83..84 "=" [] []
+ 1: HTML_STRING@84..89
+ 0: HTML_STRING_LITERAL@84..89 "\"200\"" [] []
+ 3: R_ANGLE@89..90 ">" [] []
+ 1: HTML_ELEMENT_LIST@90..183
+ 0: HTML_SELF_CLOSING_ELEMENT@90..128
+ 0: L_ANGLE@90..93 "<" [Newline("\n"), Whitespace("\t")] []
+ 1: HTML_NAME@93..99
+ 0: HTML_LITERAL@93..99 "param" [] [Whitespace(" ")]
+ 2: HTML_ATTRIBUTE_LIST@99..127
+ 0: HTML_ATTRIBUTE@99..115
+ 0: HTML_NAME@99..103
+ 0: HTML_LITERAL@99..103 "name" [] []
+ 1: HTML_ATTRIBUTE_INITIALIZER_CLAUSE@103..115
+ 0: EQ@103..104 "=" [] []
+ 1: HTML_STRING@104..115
+ 0: HTML_STRING_LITERAL@104..115 "\"autoplay\"" [] [Whitespace(" ")]
+ 1: HTML_ATTRIBUTE@115..127
+ 0: HTML_NAME@115..120
+ 0: HTML_LITERAL@115..120 "value" [] []
+ 1: HTML_ATTRIBUTE_INITIALIZER_CLAUSE@120..127
+ 0: EQ@120..121 "=" [] []
+ 1: HTML_STRING@121..127
+ 0: HTML_STRING_LITERAL@121..127 "\"true\"" [] []
+ 3: (empty)
+ 4: R_ANGLE@127..128 ">" [] []
+ 1: HTML_SELF_CLOSING_ELEMENT@128..183
+ 0: L_ANGLE@128..131 "<" [Newline("\n"), Whitespace("\t")] []
+ 1: HTML_NAME@131..137
+ 0: HTML_LITERAL@131..137 "param" [] [Whitespace(" ")]
+ 2: HTML_ATTRIBUTE_LIST@137..182
+ 0: HTML_ATTRIBUTE@137..148
+ 0: HTML_NAME@137..141
+ 0: HTML_LITERAL@137..141 "name" [] []
+ 1: HTML_ATTRIBUTE_INITIALIZER_CLAUSE@141..148
+ 0: EQ@141..142 "=" [] []
+ 1: HTML_STRING@142..148
+ 0: HTML_STRING_LITERAL@142..148 "\"src\"" [] [Whitespace(" ")]
+ 1: HTML_ATTRIBUTE@148..182
+ 0: HTML_NAME@148..153
+ 0: HTML_LITERAL@148..153 "value" [] []
+ 1: HTML_ATTRIBUTE_INITIALIZER_CLAUSE@153..182
+ 0: EQ@153..154 "=" [] []
+ 1: HTML_STRING@154..182
+ 0: HTML_STRING_LITERAL@154..182 "\"/media/examples/In-CC0.pdf\"" [] []
+ 3: (empty)
+ 4: R_ANGLE@182..183 ">" [] []
+ 2: HTML_CLOSING_ELEMENT@183..193
+ 0: L_ANGLE@183..185 "<" [Newline("\n")] []
+ 1: SLASH@185..186 "/" [] []
+ 2: HTML_NAME@186..192
+ 0: HTML_LITERAL@186..192 "object" [] []
+ 3: R_ANGLE@192..193 ">" [] []
+ 3: EOF@193..194 "" [Newline("\n")] []
+
+```