str.isascii()
str.isascii() bool · Updated March 13, 2026 · String Methods 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: bool — True 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.