diff --git a/pyrogram/parser/html.py b/pyrogram/parser/html.py
index c574e6ffb1..987281b177 100644
--- a/pyrogram/parser/html.py
+++ b/pyrogram/parser/html.py
@@ -233,10 +233,11 @@ def recursive(entity_i: int) -> int:
while i < len(entities):
i += recursive(i)
- last_offset = entities_offsets[-1][1]
- # no need to sort, but still add entities starting from the end
- for entity, offset in reversed(entities_offsets):
- text = text[:offset] + entity + html.escape(text[offset:last_offset]) + text[last_offset:]
- last_offset = offset
+ if entities_offsets:
+ last_offset = entities_offsets[-1][1]
+ # no need to sort, but still add entities starting from the end
+ for entity, offset in reversed(entities_offsets):
+ text = text[:offset] + entity + html.escape(text[offset:last_offset]) + text[last_offset:]
+ last_offset = offset
return utils.remove_surrogates(text)
diff --git a/tests/parser/test_html.py b/tests/parser/test_html.py
index 0027290561..b9138f3cf1 100644
--- a/tests/parser/test_html.py
+++ b/tests/parser/test_html.py
@@ -137,3 +137,11 @@ def test_html_unparse_escaped_nested():
pyrogram.types.MessageEntity(type=pyrogram.enums.MessageEntityType.UNDERLINE, offset=8, length=16)])
assert HTML.unparse(text=text, entities=entities) == expected
+
+
+def test_html_unparse_no_entities():
+ expected = "text"
+ text = "text"
+ entities = []
+
+ assert HTML.unparse(text=text, entities=entities) == expected