Casefold function in Python string

In this Python tutorial, we will see what is the casefold function in Python string. We will see its syntax, parameters and return value. How it is different from the lower function in Python sting with demonstrative examples. or when to use casefold() method.

Python string is a sequence of characters. Strings in Python are used for representing and manipulating textual data.

When working with string in Python, it’s not uncommon to encounter situations where string comparisons need to be made without regard to case. This is where the casefold() method of strings becomes a handy tool in a programmer’s toolbox.

What is the casefold() method in Python string

The casefold() function is a string method in Python that returns a version of the original string that’s designed for case-insensitive comparisons. It’s more aggressive than the lower() method in that it handles a wider range of characters, especially non-ASCII characters, in a way that makes them comparable without considering case differences.

In simpler terms, while both lower() and casefold() can be used to turn a string into lowercase, the casefold() method is particularly useful when dealing with international characters.


The basic syntax for casefold function in Python string is:



The string casefold() method does not take any parameters.

Return Value:

The casefold() function in Python string, returns the case folded string the string converted to lower case.

Why use casefold() over lower() in Python string

While the Python lower() function converts all uppercase characters in a string to lowercase, it doesn’t handle specific case mappings that are present in certain languages. The casefold() method in Python string goes a step further, providing a more powerful tool for comparison.

Consider the example of comparing a word using English characters with its German equivalent. In German, the character ‘ß’ is case-insensitive to ‘ss’. Using the Python string lower(), a comparison would fail while using the Python string casefold() method, the comparison would succeed.

English = 'Gross'
German = 'Groß'

print(English.casefold() == German.casefold())
print(English.lower() == German.lower())

The output is:

casefold() method in Python string to compare two strings

Python string casefold() function examples

The casefold() function in Python has a variety of applications. Here are some practical examples that demonstrate its usage:

Example-1: Comparing User-Provided City Names

Suppose we are creating a program in Python that checks whether a user-provided city is one of the capitals of a U.S. state. The user might input the city’s name in a variety of formats, and we want the comparison to be case-insensitive in Python.

user_input = "AuStiN"
capital = "Austin"

if user_input.casefold() == capital.casefold():
    print("Yes, Austin is a capital in the USA.")
    print("No match found.")

The output is:

Yes, Austin is a capital in the USA.
comparing user data input using casefold() function in Python string

This example shows how casefold() enables a flexible match in string Python.

Example-2: Email Matching

In many systems, emails are considered case-insensitive. Using the casefold() method in string Python, we can easily match email addresses without worrying about the case.

email_database = ["", ""]
input_email = ""

if input_email.casefold() in [email.casefold() for email in email_database]:
    print("Email found!")
    print("Email not found.")

The output is:

Email found!
searching data from a data base using casefold() string Python method

This way we use casefold() method in Python to search for the data in the database.

Example-3: City Name Comparisons

In world, There are city names with special characters, especially when they have roots in other languages, such as Spanish or French. Consider the city “Aßlar” in Germany. If a user enters “Aßlar” and another enters “Asslar” in a Python programm, and we wish to treat them as the same: as we know ‘ß’ is ‘ss’ in English.

city1 = "Aßlar"
city2 = "Asslar"

print(city1.lower() == city2.lower())

print(city1.casefold() == city2.casefold())

The output is:

Handling case-insensitive data with casefold method in String Python

As we can see, Python casefold() handles the special character “ß” in a way that makes the comparison successful.

When to use casefold() method?

While casefold() in Python string offers a robust solution for case-insensitive comparisons, it’s particularly important when:

  • Dealing with international data where Python strings might have non-ASCII characters.
  • Building applications with a global audience in mind.
  • Ensuring that our string comparisons are as inclusive and accurate as possible.

However, if we’re certain that our data is strictly in ASCII and doesn’t include special characters from other languages, the Python lower() method could be sufficient for our needs.


The casefold() function in Python string provides an essential tool for performing case-insensitive string comparisons, accommodating the nuances beyond simple lowercase mapping. Whether matching city names, email addresses, or other Python strings that need to be compared regardless of their case, casefold() can be a valuable tool, especially when dealing with international characters.

You may also like to read: