diff --git a/lib/encode.ex b/lib/encode.ex
index fc3c738..1a9d7be 100644
--- a/lib/encode.ex
+++ b/lib/encode.ex
@@ -261,7 +261,7 @@ defmodule Jason.Encode do
slash_escapes = Enum.zip('\b\t\n\f\r\"\\', 'btnfr"\\')
surogate_escapes = Enum.zip([0x2028, 0x2029], ["\\u2028", "\\u2029"])
ranges = [{0x00..0x1F, :unicode} | slash_escapes]
- html_ranges = [{0x00..0x1F, :unicode}, {?/, ?/} | slash_escapes]
+ html_ranges = [{0x00..0x1F, :unicode}, {?<, :unicode}, {?/, ?/} | slash_escapes]
escape_jt = Codegen.jump_table(html_ranges, :error)
Enum.each(escape_jt, fn
diff --git a/test/encode_test.exs b/test/encode_test.exs
index e4a0a74..ede61a6 100644
--- a/test/encode_test.exs
+++ b/test/encode_test.exs
@@ -30,8 +30,9 @@ defmodule Jason.EncoderTest do
assert to_json("☃a", escape: :unicode_safe) == ~s("\\u2603a")
assert to_json("𝄞b", escape: :unicode_safe) == ~s("\\uD834\\uDD1Eb")
assert to_json("\u2028\u2029abc", escape: :javascript_safe) == ~s("\\u2028\\u2029abc")
- assert to_json("", escape: :html_safe) == ~s("<\\/script>")
- assert to_json(~s(), escape: :html_safe) == ~s("", escape: :html_safe) == ~s("\\u003C\\/script>")
+ assert to_json(~s(), escape: :html_safe) == ~s("\\u003Cscript>var s = \\\"\\u2028\\u2029\\\";\\u003C\\/script>")
+ assert to_json("