Skip to content
Encoding
Base16
Boundary
Text or bytes
Runtime
Browser

Encode UTF-8 or exact bytes as canonical Base16

Turn reviewed UTF-8 text or hexadecimal byte pairs into uppercase RFC 4648 Base16.

Local processingNo sign-upNo files or upload

Encode Base16

Limited to 512 KiB of bytes and 1 MiB of encoded text.

Tool Swim does not upload, fetch, save, log, convert files, or create presets from these values.

Uppercase Base16

Decoder reports keep lowercase hexadecimal authoritative.

What this tool proves

Explicit byte-to-text semantics

Base16 writes every byte as two hexadecimal characters. UTF-8 and hexadecimal source modes stay separate so text encoding never masquerades as raw-byte parsing.

Canonical hexadecimal starts with an explicit byte boundary

Base16 writes every byte as two hexadecimal characters. UTF-8 and hexadecimal source modes stay separate so text encoding never masquerades as raw-byte parsing.

The result uses uppercase A-F and requires no padding. The byte count records the exact source length before the two-to-one expansion.

Bytes stay explicit, private, and bounded

Encoder text is converted with UTF-8 only after malformed surrogate pairs are rejected. Hex mode accepts exact byte pairs without 0x, spaces, or separators. Decoder hex is authoritative; a text preview appears only when the bytes are valid UTF-8.

The work starts only when you submit the form. Source text, byte values, and results stay in the current browser tab; Tool Swim does not upload them, log their content, save presets, or call a developer API.

Base16, Base32, Base64, and Base85 allow at most 512 KiB of source or decoded bytes and 1 MiB of encoded text. Bitcoin Base58 is limited to 4,096 bytes or 5,600 characters because generic radix conversion is quadratic.

Primary references

Questions and answers

Related Base Encoding tools