diff --git a/lib/common/error_codes.js b/lib/common/error_codes.js
index <HASH>..<HASH> 100644
--- a/lib/common/error_codes.js
+++ b/lib/common/error_codes.js
@@ -13,6 +13,7 @@ module.exports = {
     unexpectedEqualsSignBeforeAttributeName: 'unexpected-equals-sign-before-attribute-name',
     missingEndTagName: 'missing-end-tag-name',
     unexpectedCharacterInAttributeName: 'unexpected-character-in-attribute-name',
+    missingSemicolonAfterCharacterReference: 'missing-semicolon-after-character-reference',
     eofBeforeTagName: 'eof-before-tag-name',
     eofInTag: 'eof-in-tag',
     missingAttributeValue: 'missing-attribute-value',
diff --git a/lib/tokenizer/index.js b/lib/tokenizer/index.js
index <HASH>..<HASH> 100644
--- a/lib/tokenizer/index.js
+++ b/lib/tokenizer/index.js
@@ -2402,8 +2402,10 @@ _[HEXADEMICAL_CHARACTER_REFERENCE_STATE] = function hexademicalCharacterReferenc
     else if (cp === $.SEMICOLON)
         this.state = NUMERIC_CHARACTER_REFERENCE_END_STATE;
 
-    else
+    else {
+        this._err(ERR.missingSemicolonAfterCharacterReference);
         this._reconsumeInState(NUMERIC_CHARACTER_REFERENCE_END_STATE);
+    }
 };
Add Hexademical character reference state errors.