How Base64 Config Encoding Works
Why so many proxy links are base64 blobs, how to decode them safely, and what the decoded payload should contain.
Последняя проверка: 28 сент. 2026 г., 05:52 · originally in EN
Overview
Base64 is an encoding, not encryption: it maps arbitrary bytes onto 64 printable characters so that binary or newline-separated data survives copy-paste, chat apps and web pages. Two places in the proxy ecosystem use it constantly. VMess share links base64-encode their JSON body, and many subscriptions base64-wrap the whole config list, turning many lines into one opaque-looking string.
What the encoding actually does
Base64 processes input in 6-bit groups, so every 3 bytes become 4 characters. Two consequences matter in practice:
- Output length is roughly a third larger than input.
- Padding with
=aligns the input to a multiple of 3 bytes; many share links omit the padding, and tolerant decoders restore it before decoding.
URL-safe variants swap + and / for - and _.
Decoding safely
Decoding never executes anything - it only reveals text you should inspect before trusting. A reasonable workflow:
- Paste the link into the config parser, which decodes and explains each field.
- Or use the standalone base64 decoder for the raw payload.
- Check what appeared: a
vmess://link should decode to JSON withadd,port,idandpsfields; a subscription should decode to a list ofscheme://URIs. - Re-encode with the QR generator if you want to move a config to a phone by scanning.
Pitfalls
- Broken padding - lines copied from forums often lose trailing
=characters; re-padding fixes them. - Double encoding - some feeds wrap twice; decode again if the first result still looks like base64.
- Encoding is not secrecy - anyone can decode the credential inside; treat shared configs as public knowledge.
Limitations
HiddenIO indexes public sources and cannot guarantee that decoded endpoints work or are safe; decoding is inspection, not endorsement.