URL Decode Batch

Free batch URL encode/decode tool: paste a list of strings (one per line) and percent-encode or percent-decode every line at once. Invalid lines are flagged per line. Runs in your browser.

Enter a list of strings above, then press Process All.

How url decode batch works

This tool percent-encodes or percent-decodes every line in a list at once, so you can convert a whole column of URLs or query values in one pass instead of processing them one by one. Each line is handled independently, and every output maps to the input line at the same position.

Pick a mode (encode or decode), paste one string per line, and the tool runs the standard encodeURIComponent/decodeURIComponent transform on each line. Encoding turns special characters into percent-encoded sequences; decoding reverses them. The transformation matches the single URL Encoder & Decoder.

If a single line cannot be decoded (for example, it contains a stray percent sign that is not a valid escape), that line is marked with an error but the rest of the list still processes. Empty lines are preserved and stay empty, so your line numbering never shifts.

Frequently asked questions

How is this different from the URL Encoder & Decoder?
The URL Encoder & Decoder handles a single string. This batch version takes a list of separate strings (one per line) and encodes or decodes each one independently, so a whole column of values comes out in one click.
What happens when a line has an invalid percent sequence?
In decode mode, any line with a malformed percent escape is marked with a per-line error and produces an empty result, while the rest of the list still decodes normally. This lets you clean up a mixed list without it aborting halfway.
Should I use encode or decode mode?
Use encode when you want to put raw text into a URL (it escapes spaces, ampersands, and other reserved characters). Use decode when you have a percent-encoded string from a URL and want the original readable text.
What happens to empty lines?
Empty lines are kept in place and stay empty, so your line numbering is preserved and every input line maps to exactly one output line.