Choose what the input means
In encode mode, 41 as UTF-8 is two bytes; 41 as hex is the single byte for A. Decimal byte input accepts values from 0 to 255 separated by ASCII whitespace, without array brackets or commas.
Encoding and escaping
Select the byte representation and a named alphabet before encoding or decoding.
Conversion stays in this browser; input is not uploaded.
UTF-8 text, hex byte pairs, or decimal bytes 0–255 separated by spaces. No 0x prefixes, commas or brackets.
Base32 requires uppercase. Base58 has no checksum. Z85 requires complete groups of 4 bytes / 5 characters.
Input: 65,536 UTF-16 units; batch: 1,000 physical lines. Per item: 65,536 bytes, or 4,096 bytes / 5,600 characters for Base58. Report: 2,000,000 characters; execution: 2 seconds.
Enter text or load an example. Empty input converts to empty output.
A Base encoder helps when a token is valid in one library but fails in another. The same bytes can have different printable representations: changing an alphabet changes the symbols, while converting a number is a different task. Start with the protocol or library that produced your value.
This workspace combines a Base32 encoder, a Base58 decoder and an Ascii85 converter with byte inspection. Text enters as UTF-8; hex bytes and decimal byte lists let you work with binary values that cannot be read as text.
The Base encoder names Bitcoin and Flickr separately, and distinguishes Ascii85, Git b85 and Z85. The report includes the selected variant, so the next person can reproduce the conversion instead of guessing from a string that fits several alphabets.
A line containing a bad character does not erase the other results. Each record keeps its original line number, output and error. JSON also keeps a decoded line break inside its own value, so two records cannot accidentally become three.
In encode mode, 41 as UTF-8 is two bytes; 41 as hex is the single byte for A. Decimal byte input accepts values from 0 to 255 separated by ASCII whitespace, without array brackets or commas.
Base32 padding affects encoding only. Decoding accepts correct padding or none, but still checks uppercase letters and unused bits. Ascii85 framing is separate from Git b85; Z85 needs four-byte groups and never adds zeros for you.
Open byte details to compare hex and decimal values. Turn off automatic conversion to use Ctrl/Cmd + Enter. Reverse previews the replacement and changes direction only after Apply; Undo restores the previous input and result together.
Base16 produces two uppercase hexadecimal digits per byte and accepts lowercase hex on decode. RFC 4648 Base32 uses A–Z and 2–7; base32hex uses 0–9 and A–V. The latter is a different alphabet, not hex input with a Base32 label.
Bitcoin and Flickr use the same set of symbols in different orders. Each leading zero byte is retained as a leading 1. The converter works on bytes, so entering a decimal identifier as text does not calculate that identifier’s short link.
Ascii85 supports z for a full zero block and optional paired Adobe markers. Git b85 uses the RFC 1924 alphabet with four-byte blocks. Z85 uses ZeroMQ’s alphabet and requires complete groups. Selecting a variant selects its algorithm too.
Every successful byte conversion exposes a byte count, spaced hex and decimal bytes. UTF-8 decoding is fatal: invalid bytes remain inspectable and never silently become replacement characters. Batch JSON retains these diagnostics alongside each source line.
The encoded body must have a valid Base32 length. For example, MY====== and MY both represent f, while MY= has incomplete padding. This tool accepts either exact padding or no padding and also rejects nonzero unused bits. Check that your source uses RFC 4648 Base32 rather than base32hex or Crockford.
They differ in alphabet, framing and short groups. Choose Ascii85 for the ! through u alphabet, Git b85 for Python’s b85encode-style blocks, or Z85 for ZeroMQ. Ascii85’s z abbreviation and Adobe markers are not valid shortcuts in the other variants.
A leading 1 represents each leading zero byte in both supported Base58 alphabets. A byte sequence 00 00 01 therefore encodes as 112. Converting only the numeric magnitude would lose those leading bytes; this converter preserves the byte sequence.
Convert characters to UTF-8 bytes before encoding. Accented text, Chinese and emoji work without splitting Unicode characters into single-byte values. On decode, choose UTF-8 only when the original bytes really represent UTF-8; otherwise use hex or decimal to inspect them.
Not reliably. The alphabets overlap, so a string can be accepted by more than one decoder and produce different bytes. This page requires an explicit variant. Consult the source protocol or library, then check the decoded byte count and a known sample.
Base58Check adds version data and a checksum around a byte payload. This page provides raw Base58 encoding and decoding only; it does not create or validate that envelope. A result that decodes successfully is not proof that a wallet address or key is valid.
Found an encoding edge case?
Use the Base encoder with a short known value, confirm its exact alphabet and byte representation, then expand to a batch once the result matches.