IndentationError is raised by the parser when Python sees a block that is missing, misaligned, or mixed between tabs and spaces.
Focus on the parser's block rules, the three common error messages, and how to spot the exact line where indentation breaks.
The IndentationError is one of the most common Python errors for beginners. It occurs when Python encounters incorrect or inconsistent indentation in your code. Unlike most programming languages that use braces {} for code blocks, Python uses indentation to define code structure.
# Bad indent: print is not inside the if block
if x > 5:
print("Greater") # Missing indentation!
# Fixed indent: print belongs to the if block
if x > 5:
print("Greater")
# Configure your editor:
# - Use 4 spaces per indentation level
# - Convert tabs to spaces
# - Enable "show whitespace" to see indentation
def greet(name):
print(f"Hello, {name}") # IndentationError!
if age >= 18:
print("Adult") # IndentationError!
for i in range(5):
print(i) # IndentationError!
def greet(name):
print(f"Hello, {name}") # Properly indented
if age >= 18:
print("Adult") # Properly indented
for i in range(5):
print(i) # Properly indented
def calculate():
x = 10 # 4 spaces
y = 20 # Tab character - IndentationError!
return x + y
def calculate():
x = 10 # 4 spaces
y = 20 # 4 spaces (consistent)
return x + y
# Configure your editor to convert tabs to spaces
# VS Code: "editor.insertSpaces": true
# PyCharm: Settings -> Editor -> Code Style -> Python -> Use tab character: unchecked
def process_data():
if True:
print("Start") # 4 spaces
print("Middle") # 2 spaces - IndentationError!
print("End") # 4 spaces
def process_data():
if True:
print("Start") # 4 spaces
print("Middle") # 4 spaces (consistent)
print("End") # 4 spaces
print("Hello") # Unexpected indent at file start!
x = 10
y = 20 # Unexpected indent after complete statement!
print("Hello") # No indentation at file start
x = 10
y = 20 # Same indentation level
def todo_function():
# Will implement later
# IndentationError: expected an indented block
if condition:
# IndentationError!
def todo_function():
# Will implement later
pass # Use pass for empty blocks
if condition:
pass # Placeholder
# Or use ellipsis (Python 3+)
def another_function():
... # Also valid for empty blocks
IndentationError occurs when code has incorrect or inconsistent indentation, such as missing indentation after colons, mixing tabs and spaces, or using inconsistent spacing levels.
Always use spaces (4 spaces per level recommended by PEP 8). Python 3 doesn't allow mixing tabs and spaces. Configure your editor to convert tabs to spaces automatically.
Add proper indentation (4 spaces) after statements that require code blocks (if, for, while, def, class). If the block is intentionally empty, use pass or ... with a clear reason.
Explore 500+ free tutorials across 20+ languages and frameworks.