Theme: -
Font size:

Bulk URL Decoder - Decode URL Lists to Plain Text

Batch decode up to 100,000 percent-encoded URLs into UTF-8 text at once while keeping 1:1 row alignment.

When multiple URLs share a single line, separate them into rows first with our Text Splitter.

🔒 Data Safety: We process everything securely and never store or share it.

Enter your encoded URL list:

How to Use

  1. Enter your encoded URLs or query strings into the box above (one per line), or press "Sample".
  2. Configure the checkboxes below the input box for plus signs, recursive passes, or strict validation.
  3. Press "Decode" to process the entire list in one batch and check the line status summary.
  4. Click "Copy" or "Download" above the result box to export your decoded UTF-8 lines.

Options Explained

  • Decode + as Space: Replaces raw + signs with spaces per row before decoding %2B into + (default).
  • Recursive Decode: Repeatedly unescapes nested %XX sequences on each line (up to 10 passes) into plain text.
  • Strict Mode: Enforces RFC 3986 %XX syntax without spaces or %uXXXX, marking bad rows as [Invalid URL].

Key Features

  • Process up to 100,000 percent-encoded URL lines in a single batch with a real-time line counter.
  • Flatten decoded %0A and %0D line breaks into spaces and preserve blank rows for 1:1 alignment.
  • Flag broken hex tokens or truncated UTF-8 bytes as [Invalid URL] inline while decoding valid rows.
  • Replace form-encoded + signs with spaces and unescape nested %25XX strings across up to 10 passes.
  • Support multi-byte UTF-8 characters, international scripts, emojis, and legacy %uXXXX Unicode tokens on each line.
  • Run the entire batch decoder inside your local browser memory without sending URLs to any server.

About This Online Bulk URL Decoder

This bulk URL decoder converts up to 100,000 percent-encoded lines into readable UTF-8 text per row. It flattens decoded %0A line breaks into spaces and flags malformed rows as [Invalid URL] for 1:1 alignment.

Developed and maintained by the PU Tools team, this tool gives you fast, accurate, safe, and easy results in just a few clicks.

Common Use Cases

  • Access Log URI Audits: Unescape thousands of HTTP request paths and query strings from web logs per batch.
  • Redirect and Campaign Lists: Decode nested UTM parameters and callback URLs across spreadsheet columns with 1:1 row order.
  • Sitemap and Crawler Exports: Convert percent-encoded international URLs from SEO crawl lists into readable UTF-8 paths per line.

Example Input and Output

Example Input

https://example.com/?q=hello+world&tag=C%2B%2B
https://example.com/?doc=Caf%C3%A9+%F0%9F%9A%80

https://example.com/?item=cr%u00E8me&v=1%0ALine2

Options used: Decode + as Space: ON | Recursive Decode: OFF | Strict Mode: OFF

Example Output

https://example.com/?q=hello world&tag=C++
https://example.com/?doc=Café 🚀

https://example.com/?item=crème&v=1 Line2

The decoder unescapes each URL line into UTF-8 text, flattens %0A breaks, and keeps blank rows.

Bulk URL Decoder Example
Screenshot: Actual output of the Bulk URL Decoder

Frequently Asked Questions

How many percent-encoded URL lines can I decode in a single batch?

You can decode up to 100,000 percent-encoded URL lines in one batch with live line counting. If your list exceeds 100,000 lines, split it into smaller batches before running the decoder.

How does this bulk tool differ from the single URL Decoder on multi-line inputs?

This tool decodes each row independently, keeps blank lines, and flattens decoded %0A breaks into spaces. In contrast, the single URL Decoder merges all input lines into one continuous single-line string.

What happens if a line contains broken % hex codes or truncated UTF-8 bytes?

The decoder flags that specific line with an [Invalid URL] label at its exact row index. All valid URL lines still decode normally, and the status bar reports the total error count.

Why does Decode + as Space convert raw + signs while keeping %2B intact?

It replaces raw + symbols with spaces on each row before running percent-encoding conversion. Subsequent %2B hex sequences then decode into literal + characters so values like C++ remain accurate.

How does Recursive Decode handle multi-layered URLs without breaking decoded percent signs?

It unescapes nested %25XX sequences across up to 10 passes per line until plain text appears. After the first pass, standalone % signs decoded from %25 stay intact while remaining %XX runs decode.

Which inputs are rejected per line when I enable the Strict Mode option?

Strict Mode rejects lines containing raw spaces, legacy %uXXXX tokens, or decoded binary control characters. When unchecked, default mode allows spaces on a line and converts %uXXXX sequences into Unicode text.

Does batch URL decoding transmit any of my links or query strings to a server?

No, all batch URL decoding executes locally inside your browser memory using client-side JavaScript. Your raw server logs, callback links, and decoded text never leave your device or get stored.