Inspect Unicode · browser-local
Non-ASCII Character Detector
Locate every character beyond basic ASCII, such as accented letters, smart quotes, and symbols. GlyphSift lists each one with its code point, script, and position so you can clean data or spot unexpected characters.
- Index state
- eligible
- Reviewed
- 2026-08-24
- Input limit
- 5,000 graphemes
Non-ASCII Character Detector
U+00E9Offset 3Latin · Non-ASCIIU+00E9Offset 6Latin · Non-ASCIIU+00E9Offset 10Latin · Non-ASCIIU+2014Offset 12Common · Non-ASCIIU+00EFOffset 16Latin · Non-ASCII
Good fit
Use this tool when
- You are preparing data for an ASCII-only system.
- You want to find smart quotes or accented letters.
- You need to audit input for unexpected characters.
Keep the original
Avoid it when
- Non-ASCII text is expected and valid.
- You only care about invisible characters.
- You need to convert rather than detect.
Reviewed truth vectors
Examples that expose the edge cases
Café résumé3 non-ASCII characters foundThe accented letters are flagged with their positions.
plain ascii0 foundPure ASCII reports nothing.
“smart”2 non-ASCII characters foundCurly quotation marks are non-ASCII.
Transparent implementation
How it works
- 01
Inspect each character and its code point.
- 02
Flag any character above U+007F as non-ASCII.
- 03
List each match with its script, category, and position.
Known limitations
What the result cannot promise
Non-ASCII is often legitimate, so results need judgment.
It detects rather than transliterates or replaces.
Script detection is approximate for shared characters.
Questions before copying
Frequently asked questions
Is non-ASCII text a problem?
Not usually. Many languages and typographic marks are non-ASCII; the tool simply finds them for review.
Does it replace characters?
No. It only detects and locates them. Pair it with normalization or manual edits.
Why are curly quotes flagged?
Smart quotation marks are outside ASCII, which can break systems that expect straight quotes.
Experience, expertise & trust
How we verify this tool
Automated evidence
- Tool-contract & coverage suite30 deterministic cases
tests/tools-30.test.mjs mirrors the ToolRunner dispatch and asserts every registered engineId returns the contracted output shape, plus a coverage guard so no tool silently drops characters.
Run in: node --test after a production build (vinext build) - Rendered-HTML suite12 deterministic cases
tests/rendered-html.test.mjs renders the deployed server bundle and asserts the Unicode-version manifest and each wave's tool markup are present in the server-rendered HTML.
Run in: node --test against the built dist/server bundle - Unicode inspection suite11 deterministic cases
tests/unicode-inspection.test.mjs verifies grapheme/code-point/byte counting and hidden-control detection using explicit \u escapes for combining and bidirectional characters.
Run in: node --test against the runtime's Unicode data - Compatibility risk suite13 deterministic cases
tests/compatibility.test.mjs checks that bidirectional controls, invisible characters, mixed scripts, and NFKC-changing input raise the documented risk status, and that safe-text stripping preserves ordinary content.
Run in: node --test, deterministic analyzer
Standards this tool follows
- UTS #39: Unicode Security Mechanisms
Confusable and mixed-script detection methodology.
- UAX #9: Unicode Bidirectional Algorithm
Bidirectional control characters flagged during inspection.
- UAX #15: Unicode Normalization Forms
NFC/NFKC normalization comparisons.
- RFC 3629: UTF-8
Byte-length counting for the UTF-8 encoding.