How to use the Unicode Property Tester
Configure a property test, provide text, then read which grapheme clusters match. The tool reports membership only; it does not normalize, convert, remove, or rewrite your input.
Choose properties and matching mode
- In Properties to Test, select checkboxes under General Category, Binary Properties, or Script. Use Clear to remove the selected checkboxes.
- Choose Match any (OR) when a code point may satisfy at least one selected property. Choose Match all (AND) when it must satisfy every selected property.
- Optionally enter the body of a Unicode property escape in Custom property expression (optional), such as
Script=GreekorEmoji.
The checklist is built from property definitions the browser can compile. Unsupported predefined properties are omitted.
Test text or import a file
- For a short string, enter text in Quick Test (single string).
- For the main analysis, paste text into the main text area.
- Select Upload to choose a
.txtfile, or use Drop file to drop one onto the text area. The browser reads the dropped file as text withFileReader.
The implementation does not define a maximum input length or file-size limit.
Read the results
Quick Test (single string) evaluates the string as an Array.from sequence of code points and returns Every character matches, No characters match, or Mixed - some characters match.
The main analysis shows Preview and Character Results. When Intl.Segmenter with grapheme granularity is available, the table uses grapheme-cluster rows. Its columns are Cluster #, Char, Code Points, CP Count, and Status.
A cluster matches when at least one of its code points satisfies the selected test. With Match all (AND), that code point must satisfy all selected properties. The stats line reports the analyzed-unit count, matches, percentage, and displayed-row count. If Intl.Segmenter is unavailable, the fallback uses Array.from and the full-text rows are based on code points.
Filter, copy, and export rows
In Show, select All characters, Matches only, or Non-matches only. Copy Report and CSV export the rows currently displayed, so filtering changes the exported content.
Limitations and troubleshooting
- Select at least one property or enter a valid custom expression. Otherwise, the tool shows No properties selected and cannot test membership.
- If the custom expression cannot compile, the tool shows Not a valid Unicode property: \p{...} and does not apply it. Support depends on the browser's Unicode property escape implementation.
- The full-text fallback uses
Array.fromand code-point rows whenIntl.Segmenteris unavailable. The implementation does not provide a browser support matrix. - The tool reports property-test status. It does not provide Unicode names, blocks, or encodings; use the linked Unicode Inspector for those details.
Text processing and dropped-file reading occur in browser JavaScript. The tool does not change the supplied text.
Frequently Asked Questions
What is a Unicode property?
A Unicode property is metadata for a code point, such as a general category, script, or binary property like Emoji or White_Space. This tool checks whether text matches the properties you select.
How is this different from the Unicode Inspector?
The Unicode Inspector reports details about each code point. The Property Tester answers whether the input matches a selected property or combination.
Does this tool change my text?
No. It tests property membership and reports results. It does not normalize, convert, or rewrite the input.
Why does a grapheme cluster with multiple code points show one status?
Some visible characters contain multiple code points. When Intl.Segmenter is available, the full-text results show one row per grapheme cluster. The cluster matches when at least one of its code points satisfies the combined property test.
What happens when no property is selected or a custom expression is invalid?
The tool shows No properties selected and asks you to select at least one property or enter a custom expression. An invalid expression shows Not a valid Unicode property: \p{...} and is not applied.