Skip to content
Utiloom

Unicode Inspector & Normalizer

Inspect code points, UTF-16 units, scalar-aware UTF-8 bytes, browser grapheme segments, normalization forms, and review properties locally.

LocalNo text retention

Reviewed July 14, 2026

Guide, examples, and validation Show

About this tool

Diagnose the browser editor value or an exact decoded strict UTF-8 file source, then create a reviewed normalization output without upload or silent surrogate repair.

  • Runs ECMAScript NFC, NFD, NFKC, and NFKD normalization in a disposable worker, checks all four form states, and confirms that a second runtime pass leaves the requested output stable.
  • Separates UTF-16 code units, code point entries, Unicode scalar values, runtime grapheme segments, exact UTF-8 bytes, and TextEncoder replacement behavior for isolated surrogates.
  • Labels bidi controls, default-ignorable and other format controls, noncharacters, unexpected C0/C1 controls, private-use values, runtime-unassigned values, and U+FFFD for contextual review without making spoofing or safety claims.

How to use Unicode Inspector

Enter browser-editor text or load a strict UTF-8 file, choose inspect-only, NFC, NFD, NFKC, or NFKD, then run the isolated worker. Use a file when exact CRLF or CR evidence matters; browser textarea editing normalizes those line endings to LF. Review form status, encoding evidence, escaped output, contextual findings, and code point rows before copying or downloading current well-formed output.

When this tool is useful

  • Diagnosing why visually similar strings compare as different identifiers, filenames, database keys, or test fixtures.
  • Reviewing normalization and invisible formatting before moving bounded text between systems.

Practical tips

  • Start with NFC when the destination expects canonical normalization, and use NFKC or NFKD only after confirming compatibility distinctions are disposable.
  • Keep escaped preview selected when reviewing controls or bidirectional text, then inspect the rendered view only for visual context.
  • Treat browser grapheme boundaries as runtime evidence, not a fixed Unicode-version conformance claim.
  • Use a version-pinned UTS #39 implementation separately when a real identifier confusable policy is required.

Examples you can test

Load an example, compare the result with the expected output, then replace it with your own input.

Compare composed and decomposed text

Example input

Cafe followed by U+0301, a precomposed e-acute, fullwidth ABC, an emoji ZWJ sequence, and U+200B

Expected output

NFC output, form matrix, code-unit and scalar counts, browser grapheme boundaries, escaped U+200B evidence, and source-free JSON report

A default-ignorable finding can be legitimate and is not a malicious-content verdict.

Validation checklist

  • Confirm the destination requires the selected normalization form.
  • Review every compatibility change before accepting NFKC or NFKD output.
  • Resolve isolated surrogates explicitly and rerun inspection before UTF-8 export.
  • Compare hashes, counts, first-difference index, and relevant code point rows with the destination system.
  • Apply confusable, identifier, rendering, and application-specific policies separately.

Frequently asked questions

What is the difference between NFC, NFD, NFKC, and NFKD?

NFC and NFD use canonical equivalence, with NFC composing where possible and NFD decomposing. NFKC and NFKD also apply compatibility mappings, which can remove width, presentation, enclosed-character, and other distinctions that may matter.

Why can one visible character contain multiple code points?

Combining marks, emoji modifiers, regional indicators, and ZWJ sequences can span several code points. This tool reports browser Intl.Segmenter grapheme boundaries separately from code units and code point entries.

What happens when the source contains an isolated surrogate?

It is reported as ill-formed UTF-16 and no exact source UTF-8 byte count is claimed. UTF-8 copy and download stay disabled until the explicit replacement action changes each isolated surrogate to U+FFFD and the result is inspected again.

Does a bidi or default-ignorable finding mean the text is malicious?

No. These code points can affect display, joining, variation, or direction and can be legitimate. The finding is a prompt for contextual review, not a phishing, confusable, or safety verdict.

Is my text uploaded?

No. Strict UTF-8 file decoding, normalization, segmentation, encoding inspection, filtering, copying, and downloads run in the current browser session without a network request.

Related tools

Keep the workflow moving

Continue with tools that handle a related input, output, or validation step.

Developer

CSV Viewer & Cleaner

Profile, clean, and convert CSV data locally.

Local
Developer

JSON Patch Builder & Applier

Build and atomically apply verified RFC 6902 JSON patches.

Local
Developer

JSON Schema Validator

Validate bounded JSON Schema and instance data locally.

Local
Developer

Accessibility Checker

Review WCAG contrast and isolated HTML audit evidence.

Local