str.isascii()

str.isascii()
Returns: bool · Updated March 13, 2026 · String Methods
strings validation characters

The isascii() method returns True if all characters in the string are ASCII characters, and False otherwise. ASCII characters have code points in the range 0-127 (U+0000 to U+007F). This method is useful for validating user input, checking string compatibility, and filtering data.

Syntax

str.isascii()

Parameters: None.

Returns: boolTrue if the string is empty or contains only ASCII characters, False otherwise.

Examples

Basic usage

text = "Hello World"
print(text.isascii())
# True

text = "Héllo"
print(text.isascii())
# False

The string “Hello World” contains only ASCII characters (letters, space). The string “Héllo” contains the non-ASCII character “é”, so isascii() returns False.

Empty strings

print("".isascii())
# True

An empty string returns True because there are no non-ASCII characters to reject.

Numbers and symbols

print("123".isascii())
# True

print("hello123".isascii())
# True

print("@#$%".isascii())
# True

Numbers and common symbols are all within the ASCII range (code points 0-127), so they return True.

Unicode characters

# Common non-ASCII characters
print("café".isascii())
# False

print("naïve".isascii())
# False

# Emoji
print("👋".isascii())
# False

# Japanese characters
print("こんにちは".isascii())
# False

Any character outside the basic Latin alphabet triggers False. This includes accented characters, emoji, and non-Latin scripts.

Whitespace

print(" ".isascii())
# True

print("\t".isascii())
# True

print("\n".isascii())
# True

All common whitespace characters (space, tab, newline) are ASCII characters.

Common Patterns

Input validation

def validate_ascii_input(user_input):
    """Reject non-ASCII input."""
    if not user_input.isascii():
        raise ValueError("Input contains non-ASCII characters")
    return user_input

print(validate_ascii_input("hello"))
# hello

print(validate_ascii_input("café"))
# ValueError: Input contains non-ASCII characters

Use isascii() to enforce ASCII-only input for systems that don’t support Unicode.

Filtering lists

strings = ["hello", "café", "world", "naïve", "test"]
ascii_strings = [s for s in strings if s.isascii()]
print(ascii_strings)
# ['hello', 'world', 'test']

A simple way to filter out strings containing non-ASCII characters.

Database compatibility

def prepare_for_ascii_db(value):
    """Convert value to ASCII-safe string."""
    if value.isascii():
        return value
    return value.encode('ascii', 'errors').decode('ascii')

print(prepare_for_ascii_db("hello"))
# hello

print(prepare_for_ascii_db("café"))
# cf

Some legacy databases only support ASCII. Use isascii() to check before attempting conversion.

Sanitizing filenames

import re

def sanitize_filename(name):
    """Create a safe ASCII filename."""
    if not name.isascii():
        # Replace non-ASCII with underscore
        clean = re.sub(r'[^\x00-\x7F]', '_', name)
        return clean
    return name

print(sanitize_filename("report_2024"))
# report_2024

print(sanitize_filename("rapport_2024"))
# rapport_2024

Errors

isascii() never raises an exception. It works on any string, including empty strings.

See Also