SyntaxError: invalid character in identifier (Fix)

SyntaxError: invalid character in identifier means Python found a character in your code that does not belong there.

This usually happens when code contains a character that looks normal but is not the normal Python version. Common examples include curly quotes, an em dash, or a hidden Unicode symbol copied from a website, PDF, or document.

This page shows what the error means, what causes it, how to find the bad character, and how to fix it.

Quick fix

name = "Alice"
print(name)

# Common problem:
# print(“Hello”)   # curly quotes cause the error

# Fix:
print("Hello")

In many cases, the fastest fix is:

  • Delete the suspicious character
  • Type it again manually
  • Use normal keyboard characters only

What this error means

Python found a character inside a name or line of code that it cannot use there.

A Python identifier is a name such as:

  • A variable name
  • A function name
  • A class name

For example, these are identifiers:

user_name = "Alice"

def greet():
    pass

class Person:
    pass

The problem is often not the whole line. It is usually just one bad character on that line.

Also, the character may look correct on screen but still be different from the normal keyboard version.

What usually causes it

Common causes include:

  • Copying code from a web page, PDF, Word document, or chat app
  • Using curly quotes like “ ” or ‘ ’ instead of straight quotes
  • Using a dash like or instead of the normal minus sign -
  • Pasting invisible characters or non-breaking spaces into code
  • Using punctuation from another keyboard layout inside names

Common causes at a glance

  • Curly quotes copied from a website or document
  • Em dash or en dash used instead of a minus sign
  • Invisible Unicode character pasted into code
  • Non-breaking space inside a line
  • Invalid symbol inside a variable or function name

If you are new to Python syntax, it also helps to review Python syntax basics.

Example that causes the error

Example 1: Curly quotes

This line uses curly quotes, not normal double quotes:

print(“Hello”)

Python will raise a syntax error because and are not valid string delimiters in Python.

Correct version:

print("Hello")

Expected output:

Hello

Example 2: Em dash instead of minus sign

This line uses an em dash:

result = 105
print(result)

That dash is not the normal minus sign, so Python cannot parse it correctly.

Correct version:

result = 10 - 5
print(result)

Expected output:

5

Example 3: Bad character in a name

Here, the variable name contains an invalid symbol:

user—name = "Sam"
print(user—name)

The em dash is not valid in a Python identifier.

Correct version:

user_name = "Sam"
print(user_name)

Expected output:

Sam

How to fix it

Try these fixes:

  • Delete the suspicious character and type it again manually
  • Replace curly quotes with normal quotes: " or '
  • Replace long dashes with the normal minus sign: -
  • Retype the whole line if you cannot see which character is wrong
  • Paste the code into a plain text editor to remove rich-text formatting
  • Check variable and function names for unusual symbols

If the error is inside a string example, reviewing Python strings explained can help you spot quote problems faster.

How to find the bad character

Use the traceback to narrow it down.

1. Look at the line number

Run your script:

python your_script.py

Python usually shows the exact line where the error happened.

2. Check the caret ^

Sometimes Python marks the position with a caret:

print(“Hello”)
      ^
SyntaxError: invalid character in identifier

The marker may point at or near the problem character.

3. Check suspicious characters closely

Look carefully for:

  • Quotes
  • Dashes
  • Spaces
  • Punctuation
  • Characters copied from another source

4. Retype the suspicious part

Move through the line character by character and retype the part that looks wrong.

If needed, retype the whole line manually.

5. Compile the file to check syntax

You can also ask Python to check the file without running it:

python -m py_compile your_script.py

This is useful when you want to find syntax problems quickly.

6. Try a plain text editor

If the line still looks fine, paste it into a plain text editor and compare it with your code editor version.

7. UTF-8 mode may help in some environments

python -X utf8 your_script.py

This does not fix invalid characters by itself, but it can help avoid encoding-related confusion in some setups.

Valid vs invalid examples

Python identifiers should be simple and predictable.

Valid names

These are valid identifiers:

name = "Ana"
user_1 = "Tom"
total_count = 3

Why they work:

  • They use letters
  • They use numbers only after the first character
  • They use underscores

Invalid names

These are not valid:

user name = "Tom"
user—name = "Tom"
2name = "Tom"

Problems:

  • user name contains a space
  • user—name contains an em dash
  • 2name starts with a number

Valid string quotes

Use normal quotes only:

message = "Hello"
text = 'Python'

Invalid string quotes

These will cause problems:

message = “Hello”
text = ‘Python’

Valid operators

Use standard Python operators from your keyboard:

answer = 8 - 3

Not fancy punctuation copied from formatted text.

If you see a more general syntax problem, you may also need to fix SyntaxError: invalid syntax.

Prevention tips

To avoid this error in the future:

  • Write code in a code editor instead of a word processor
  • Avoid copying code from formatted documents when possible
  • If you paste code, test it right away
  • Use a Python-friendly editor that highlights syntax errors clearly
  • Keep your keyboard layout consistent when writing code

A good habit is to keep identifiers simple:

  • Use letters
  • Use numbers after the first character
  • Use underscores
  • Avoid fancy punctuation

Sometimes this error appears alongside other beginner syntax issues.

Related pages:

FAQ

What is an identifier in Python?

An identifier is a name you create in Python, such as a variable name, function name, or class name.

Can Unicode characters be used in Python identifiers?

Some Unicode letters can be valid in identifiers, but many copied symbols and punctuation marks are not. If you are a beginner, it is safest to use letters, numbers, and underscores only.

Why does the line look correct but still fail?

The bad character may look almost the same as a normal one. This often happens with curly quotes, long dashes, or invisible spaces.

What is the fastest fix?

Delete the part of the line that looks suspicious and type it again manually in your code editor.

See also