HTML Guide
Ensure you’re not using character references that expand to control characters, like 
, which are not permissible in HTML documents.
In HTML, a character reference allows you to use a specific ASCII or Unicode character in your document. Character references are written using the syntax &#code;
where code
is either the decimal or hexadecimal code point of the character. Control characters, like U+0002, are non-printable and are not allowed within HTML because they do not represent meaningful text content.
Character references should only be used for printable characters and standard entities. For example, common entities like &
and <
should be used for special characters like &
and <
.
Example of Incorrect Usage
The following example shows an HTML snippet where a control character is incorrectly referenced:
<!DOCTYPE html>
<html lang="en">
<head>
<title>Example Page</title>
</head>
<body>
<p>Control character reference: </p>
</body>
</html>
Learn more:
Related W3C validator issues
A numeric character reference is pointing to a C1 control code point (U+0080–U+009F), which is disallowed in HTML.
Numeric character references like &#nnn; or hhhh; must resolve to valid Unicode characters.
The C1 control range U+0080–U+009F contains non-characters/control codes, so validators flag them.
Common causes: copying Windows-1252 bytes and encoding them as numeric references (e.g., — for an em dash) or misusing hex values (e.g., for a right single quote).
In HTML, use the proper Unicode character, a valid named character reference, or the correct Unicode code point. Examples: use the actual “—” or — (U+2014), “’” or ’ (U+2019), “€” or € (U+20AC). If you must use numeric references, use the correct code points: — or — for em dash, not —; ’ or ’ for right single quote, not .
HTML Examples
Example that reproduces the issue
<!doctype html>
<html lang="en">
<head>
<title>Bad C1 NCR</title>
</head>
<body>
<p>Bad dash: —</p>
<p>Bad quote: ’</p>
</body>
</html>
Fixed example
<!doctype html>
<html lang="en">
<head>
<title>Fixed NCRs</title>
</head>
<body>
<p>Good dash: — or — or —</p>
<p>Good quote: ’ or ’ or ’</p>
<p>Euro: € or € or €</p>
</body>
</html>
Character references must always start with an ampersand (&) and end with a semicolon (;), for example the < character can be referenced as <.
This is a warning that a special character in the Unicode Private Use Area is being used at the document, which might cause it to not work the way you might expect in different browsers/environments.
If you’ve checked the document in different browsers and it’s working fine, you can safely ignore this warning.
What are private-use characters in Unicode?
Private-use characters are code points whose interpretation is not specified by a character encoding standard and whose use and interpretation may be determined by private agreement among cooperating users. Private-use characters are sometimes also referred to as user-defined characters (UDC) or vendor-defined characters (VDC).