diff --git a/packages/marko/src/runtime/html/AsyncStream.js b/packages/marko/src/runtime/html/AsyncStream.js
index 501d81ca0..3511ea418 100644
--- a/packages/marko/src/runtime/html/AsyncStream.js
+++ b/packages/marko/src/runtime/html/AsyncStream.js
@@ -519,9 +519,9 @@ var proto = (AsyncStream.prototype = {
if (selfClosingTags.voidElements.indexOf(tagName) !== -1) {
str += ">";
} else if (selfClosingTags.svgElements.indexOf(tagName) !== -1) {
- str += " />";
+ str += "/>";
} else {
- str += "" + tagName + ">";
+ str += ">" + tagName + ">";
}
this.write(str);
diff --git a/packages/marko/test/render/fixtures/dynamic-tag-name/expected.html b/packages/marko/test/render/fixtures/dynamic-tag-name/expected.html
index 997eb6767..10b5eb4d6 100644
--- a/packages/marko/test/render/fixtures/dynamic-tag-name/expected.html
+++ b/packages/marko/test/render/fixtures/dynamic-tag-name/expected.html
@@ -1 +1 @@
-My nested content
\ No newline at end of file
+My nested content
\ No newline at end of file
diff --git a/packages/marko/test/render/fixtures/dynamic-tag-name/template.marko b/packages/marko/test/render/fixtures/dynamic-tag-name/template.marko
index 078dafb8f..4f92197b7 100644
--- a/packages/marko/test/render/fixtures/dynamic-tag-name/template.marko
+++ b/packages/marko/test/render/fixtures/dynamic-tag-name/template.marko
@@ -1,3 +1,5 @@
<${input.foo ? 'foo' : 'bar'} class="my-class" foo="bar">
My nested content
->
\ No newline at end of file
+>
+
+<${input.myTagName} class="my-class" foo="bar"/>
diff --git a/packages/marko/test/render/fixtures/dynamic-tag-name/vdom-expected.html b/packages/marko/test/render/fixtures/dynamic-tag-name/vdom-expected.html
index 1cbb65069..d6a53e7b0 100644
--- a/packages/marko/test/render/fixtures/dynamic-tag-name/vdom-expected.html
+++ b/packages/marko/test/render/fixtures/dynamic-tag-name/vdom-expected.html
@@ -1,2 +1,3 @@
"My nested content"
+