Python capitalize() Method

Beginner
⏱️ 7 min read
📚 Updated: Jul 2026
🎯 5 Examples
String Methods

What You’ll Learn

The capitalize() method is a built-in Python string method that returns a new string with the first character uppercased and every remaining character lowercased. It is one of the simplest ways to tidy up user input or display text with consistent sentence-style casing.

01

First Letter

Uppercase the opening character.

02

Lowercase Rest

All other letters become lowercase.

03

No Arguments

Call it directly on any string.

04

Immutable

Original string stays unchanged.

05

User Input

Clean names and short phrases.

06

vs title()

Know when to use each method.

Definition and Usage

In Python, every string object provides the capitalize() method. When you call it, Python creates a copy of the string, uppercases the first character (if it is a cased letter), and lowercases all characters that follow. For example, "python is fun" becomes "Python is fun".

💡
Beginner Tip

capitalize() is for sentence-style casing (one leading capital). If you need every word capitalized—like a book title—use title() instead. They are not interchangeable.

📝 Syntax

The capitalize() method takes no parameters:

python
string.capitalize()

Syntax Rules

  • string — any valid Python str object (literal, variable, or expression result).
  • Return value — a new str; the original is never modified.
  • No arguments — passing arguments raises TypeError.
  • Empty string — returns "" without error.
  • Non-letter first character — remaining letters are still lowercased; the leading symbol or digit is unchanged.

⚡ Quick Reference

InputResult
"hello world""Hello world"
"PYTHON""Python"
"123ABC""123abc"
""""
"already Capitalized""Already capitalized"
Basic
"python".capitalize()

Returns "Python"

Assign
name = text.capitalize()

Store the new string

Chained
input("Name: ").strip().capitalize()

Trim then capitalize

Compare
"a".capitalize() == "A"

True

Examples Gallery

Run these examples in any Python 3 interpreter. Each one shows a common pattern beginners encounter.

📚 Getting Started

Start with a plain lowercase string and see how capitalize() transforms it.

Example 1 — Basic capitalize()

The most common use: turn an all-lowercase phrase into sentence case.

python
original = "python is fun"
result = original.capitalize()

print("Original:", original)
print("Capitalized:", result)

How It Works

  • original stays "python is fun" because strings are immutable.
  • capitalize() returns a new string stored in result.
  • Only the first letter p becomes uppercase; the rest becomes lowercase.

Example 2 — Cleaning User Input

When someone types their name in all lowercase, capitalize() gives a polite display format for a single word.

python
raw_name = "  mari  "
clean_name = raw_name.strip().capitalize()

print(clean_name)

How It Works

Call strip() first to remove leading and trailing spaces, then capitalize() uppercases the first visible letter.

📈 Practical Patterns

Real-world scenarios where sentence-style casing helps readability.

Example 3 — Formatting a Sentence or Label

Use capitalize() when you have one phrase or label, not a multi-word proper name.

python
status = "ACTIVE USER"
label = status.lower().capitalize()

print(label)

How It Works

Calling lower() first normalizes mixed-case input, then capitalize() produces consistent sentence-style output.

Example 4 — Edge Cases

Understanding unusual inputs prevents surprises in production code.

python
samples = ["", "PYTHON", "123ABC", "über cool"]

for text in samples:
    print(repr(text), "→", repr(text.capitalize()))

How It Works

  • Empty strings pass through unchanged.
  • All-caps words become sentence case, not title case.
  • A leading digit is not uppercased; trailing letters are lowercased.
  • Unicode letters like ü are handled correctly in Python 3.

Example 5 — capitalize() vs title()

This comparison clears up the most common beginner mistake.

python
name = "john doe"

print("capitalize():", name.capitalize())
print("title():     ", name.title())

How It Works

capitalize() only touches the very first character of the string. title() capitalizes the first letter of each word, which is what you want for full names.

🚀 Common Use Cases

  • Single-word user input — format a username or city name typed in lowercase.
  • Status labels — display enum values like "pending" as "Pending".
  • Log messages — turn a lowercase template into sentence case before printing.
  • Data cleanup — normalize inconsistent casing in short text fields.
  • Teaching demos — introduce string methods with a one-line, easy-to-read example.

🧠 How capitalize() Works

1

Python reads the string

You call capitalize() on a str object—literal or variable.

Input
2

First character is cased

If the first character is a cased letter, it becomes uppercase. All following characters become lowercase.

Transform
3

A new string is returned

The original string is left untouched. Assign the result to a variable or use it inline.

Output
=

Sentence-style text

Readable output ready for display, logs, or further processing.

📝 Notes

  • capitalize() never modifies the original string—always assign or use the returned value.
  • It is not the same as title case. Use title() for multi-word names.
  • Non-alphabetic characters in the middle of the string are preserved; only casing of letters changes.
  • For locale-aware or case-insensitive comparisons, look at casefold() instead of capitalize().

Conclusion

The capitalize() method is a small but useful tool in Python’s string toolkit. It gives you sentence-style casing in a single readable line of code, which makes user-facing text and status labels look polished without manual character indexing.

Remember the golden rule: one leading capital, everything else lowercase. When you need each word capitalized, reach for title() instead.

💡 Best Practices

✅ Do

  • Use capitalize() for single phrases or one-word labels
  • Chain strip() before capitalizing user input
  • Assign the returned string to a new variable
  • Use title() for multi-word proper names
  • Test edge cases like empty strings and leading digits

❌ Don’t

  • Expect capitalize() to capitalize every word
  • Assume the original string changes in place
  • Use it for case-insensitive string equality checks
  • Pass arguments to capitalize()
  • Rely on it for complex locale-specific name formatting

Key Takeaways

Knowledge Unlocked

Five things to remember about capitalize()

Use these points whenever you format strings in Python.

5
Core concepts
🔄 02

Returns New str

Original stays the same.

Immutable
🛠 03

Zero Arguments

s.capitalize()

Syntax
👤 04

User Input

Great for single words.

Use case
05

Not title()

Use title() for names.

Edge case

❓ Frequently Asked Questions

capitalize() returns a new string with the first character uppercased and all remaining characters lowercased. It does not change the original string because Python strings are immutable.
Call it on any string object: string.capitalize(). It takes no arguments and returns a new str.
No. Strings in Python are immutable. capitalize() always returns a new string; the original stays unchanged.
capitalize() uppercases only the first character of the entire string and lowercases the rest. title() uppercases the first character of each word, which is better for multi-word names like "john doe".
It returns an empty string. No error is raised.
Python still lowercases the remaining characters, but nothing is uppercased at the start. For example, "123ABC".capitalize() returns "123abc".

Explore More Python String Methods

Continue with casefold(), center(), and the rest of the string method reference.

Next: casefold() →

About the author

Mari Selvan M P
Mari Selvan M P 🔗

Developer, cloud engineer, and technical writer

  • Experience 12 years building web and cloud systems
  • Focus Full Stack Development, AWS, and Developer Education

I write practical tutorials so students and working developers can learn by doing—from databases and APIs to deployment on AWS.

6 people found this page helpful