Python String lower() Method

The Python string lower() method returns a lowercase version of a string.

It is useful when you want to:

  • convert text to lowercase
  • compare text without case differences
  • clean up user input
  • make simple text matching easier
text = "Hello WORLD"
result = text.lower()
print(result)  # hello world

Important: lower() returns a new string. It does not change the original string in place.

What lower() does #

lower() is a string method that changes uppercase letters to lowercase letters.

Key points:

  • lower() returns a lowercase version of a string
  • It works on string objects
  • It creates and returns a new string
  • The original string stays unchanged

If you are new to strings, see what a string is in Python or learn more in Python strings explained.

Basic syntax #

The syntax is:

string.lower()

Important details:

  • It takes no arguments
  • You call it directly on a string
  • You can use it on a string literal or a string variable

Example:

print("HELLO".lower())  # hello

name = "PyThOn"
print(name.lower())  # python

Simple example #

Here is a basic example with a variable:

text = "Hello WORLD"

lower_text = text.lower()

print(lower_text)
print(text)

Output:

hello world
Hello WORLD

This shows two things:

  • lower() returns the lowercase result
  • the original text variable does not change unless you reassign it

If you want to keep the lowercase version in the same variable, reassign it:

text = "Hello WORLD"
text = text.lower()

print(text)  # hello world

Return value #

lower() returns a string.

That means you can store the result in a variable, print it, or use it in comparisons.

A common beginner use case is comparing text in a case-insensitive way:

answer = "YES"

if answer.lower() == "yes":
    print("Correct")

This is especially useful with the input() function:

answer = input("Type yes or no: ")

if answer.lower() == "yes":
    print("You typed yes")
else:
    print("You typed something else")

Common use cases #

lower() is often used to normalize text before working with it.

Common examples:

  • Normalize user input before comparison
  • Make text matching easier
  • Prepare text for simple searches
  • Clean mixed-case data

Example: checking user input

color = input("What is your favorite color? ")

if color.lower() == "blue":
    print("Nice choice!")
else:
    print("Got it.")

Example: simple search

message = "Python Is Fun"

if "python" in message.lower():
    print("Found it")

If you also need to remove extra spaces, lower() is often used with strip():

name = "  ALICE  "
clean_name = name.strip().lower()

print(clean_name)  # alice

Important beginner note #

Strings are immutable in Python.

That means a string cannot be changed in place. Methods like lower() do not edit the original string. They return a new one.

So this does not update the original variable:

text = "HELLO"
text.lower()

print(text)  # HELLO

To keep the lowercase version, save the result:

text = "HELLO"
text = text.lower()

print(text)  # hello

Common mistakes #

Forgetting parentheses #

A very common mistake is writing lower instead of lower().

Wrong:

text = "HELLO"
print(text.lower)

This prints the method itself, not the lowercase string.

Correct:

text = "HELLO"
print(text.lower())

Not saving the result #

Another common mistake is expecting the original variable to change automatically.

Wrong:

text = "HELLO"
text.lower()
print(text)  # still HELLO

Correct:

text = "HELLO"
text = text.lower()
print(text)  # hello

Using lower() on a non-string value #

lower() only works on strings.

Wrong:

number = 123
print(number.lower())

This causes an error because integers do not have a lower() method.

You can check the type first:

text = "HELLO"

print(type(text))
print(text.lower())

Comparing text without normalizing case #

This can cause unexpected results:

answer = "Yes"

if answer == "yes":
    print("Match")
else:
    print("No match")

Because "Yes" and "yes" are different strings, this prints No match.

Better:

answer = "Yes"

if answer.lower() == "yes":
    print("Match")

When casefold() may be better #

For most beginner examples, lower() is enough.

But for advanced Unicode case-insensitive matching, casefold() can be stronger than lower().

For everyday beginner tasks like input checking and simple comparisons, lower() is usually the right choice.

lower() vs upper() #

lower() and upper() are very similar.

  • lower() changes letters to lowercase
  • upper() changes letters to uppercase
  • Both return new strings
  • Both leave the original string unchanged unless you reassign the result

Example:

text = "Hello World"

print(text.lower())  # hello world
print(text.upper())  # HELLO WORLD

If you want the opposite conversion, see the Python string upper() method.

FAQ #

Does lower() change the original string? #

No. It returns a new lowercase string. Reassign it if needed.

Does lower() take any arguments? #

No. The method is called as string.lower().

What does lower() return? #

It returns a new string with lowercase letters.

Can I use lower() on user input? #

Yes. It is commonly used with input() to compare answers without case problems.

What is the difference between lower() and casefold()? #

lower() is simpler and common for beginners. casefold() is stronger for some Unicode case-insensitive comparisons.

See also #

Press Esc to close