IndentationError in Python — How to Fix (2026) | Tutorials Logic
What is This Error?
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.
IndentationError: expected an indented blockIndentationError: unexpected indentIndentationError: unindent does not match any outer indentation level
Common Causes
Quick Fix (TL;DR)
# ❌ Problem
if x > 5:
print("Greater") # Missing indentation!
# ✅ Solution: Add proper indentation (4 spaces recommended)
if x > 5:
print("Greater")
# ✅ Configure your editor:
# - Use 4 spaces per indentation level
# - Convert tabs to spaces
# - Enable "show whitespace" to see indentation
Common Scenarios & Solutions
Scenario 1: Missing Indentation After Colon
The most common cause - forgetting to indent code after statements that require a code block.
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
Scenario 2: Mixing Tabs and Spaces
Python 3 doesn't allow mixing tabs and spaces. This often happens when copying code from different sources.
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
Scenario 3: Inconsistent Indentation Levels
Using different numbers of spaces for indentation at the same level causes this error.
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
Scenario 4: Unexpected Indent
Adding indentation where it's not expected, usually at the start of a file or after a complete statement.
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
Scenario 5: Empty Code Block
Python requires at least one statement in every code block. Use pass for empty blocks.
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
Best Practices to Avoid This Error
Related Errors
- IndentationError occurs when Python encounters incorrect or inconsistent indentation
- Python uses indentation (not braces) to define code blocks
- Use 4 spaces per indentation level as per PEP 8 standard
- Never mix tabs and spaces - configure your editor to use spaces only
- Every statement ending with colon (:) requires an indented block below it
- Use pass or ... for empty code blocks that you'll implement later
Frequently Asked Questions
Level Up Your Python Skills
Master Python with these hand-picked resources