moim.bio

URL Decode

Turn %C3%A9-style percent encoding back into readable characters. Double-encoded values come apart in one go.

Reading an address full of percent signs

When a log or a referrer hands you something like %C3%A9%C3%A8, there is no reading it as it stands. Paste it here and the original characters come back. You can drop in a whole address too — the https:// part is left alone and only the encoded positions are unwrapped.

Spotting double encoding

If the result still looks like %C3%A9 after decoding, the value was double-encoded: the % itself was wrapped once more as %25. It usually means some code in the chain is encoding twice.

Turn on unwrap double encoding all the way and it repeats until nothing changes. Treat that as a diagnosis, not a fix — if the value genuinely contains a percent sign, as in 100%25, this unwraps that too and corrupts the original. Leave it off by default and reach for it while hunting the cause.

Handling the + sign

Whether + means a space depends entirely on where the value came from.

SourceSetting
An HTML form-post body, a search query stringOn — + is a space
A path, a JSON value, a Base64 stringOff — + is just +

Turn it on for a Base64 string and every + becomes a space, wrecking the value. That is why the default is off.

"Not followed by two hex digits"

It means there is an unencoded % inside the value. Put a string like 50% off into an address without encoding it and you get this error. A percent sign that belongs to the value has to be written as %25. The character position is shown under the error.

I get replacement characters instead of readable text

The original was encoded in something other than UTF-8 — legacy systems produce values like %C7%D1 in a national character set. This tool only handles UTF-8. For those, use the character set picker in Base64 Decode, or convert on the server side.

23 more tools