User Rating 0.0
Total Usage 0 times
Drag & drop .csv file here or click to browse
Is this tool helpful?

Your feedback helps us improve.

About

URL-encoded CSV files are a common byproduct of web scraping, API exports, and database dumps where field values pass through encodeURIComponent before storage. A single mishandled %2C inside a quoted field can shift every column to the right, corrupting thousands of rows silently. This tool applies RFC 3986 percent-decoding to every cell in your CSV while preserving the structural delimiters and RFC 4180 quoting rules. It handles double-encoding (where %2520 must resolve to a space in two passes), treats + as space per the application/x-www-form-urlencoded spec, and gracefully skips malformed sequences like a trailing % or invalid hex pairs. All processing runs locally in your browser. No data is uploaded.

Limitations: this tool assumes UTF-8 encoding. Non-UTF-8 multibyte sequences decoded from percent-encoding may produce replacement characters. The automatic delimiter detection samples the first 5 rows. If your file uses an uncommon delimiter, select it manually. For files exceeding 50 MB, processing time scales linearly but the browser tab may consume significant memory.

csv url decode percent encoding url decode csv csv cleaner decodeURIComponent csv tool url encoded csv

Formulas

Percent-decoding converts each %HH triplet back to its original octet using the hexadecimal value:

char = fromCharCode(parseInt(HH, 16))

For UTF-8 multibyte characters, multiple consecutive percent-encoded octets are grouped and decoded together. A two-byte sequence follows the pattern %Cx%8x, and a three-byte sequence follows %Ex%xx%xx. The native decodeURIComponent handles this automatically.

For double-encoded strings, the tool applies decoding iteratively:

pass1: %2520 %20
pass2: %20 (space)

The application/x-www-form-urlencoded convention replaces spaces with + instead of %20. When enabled, the tool applies this substitution before percent-decoding:

input = input.replace(/\+/g, " ")

Where HH is a two-digit hexadecimal value in the range 00 - FF representing a single octet.

Reference Data

Encoded SequenceDecoded CharacterDescriptionCommon Source
%20␣ (space)Space characterQuery strings, form data
%2C,CommaCSV fields in URLs
%2F/Forward slashURL paths
%3A:ColonProtocol separators
%3B;SemicolonParameter separators
%3D=Equals signKey-value pairs
%26&AmpersandQuery string separators
%3F?Question markQuery string start
%40@At signEmail addresses in URLs
%23#Hash / poundFragment identifiers
%25%Percent sign itselfDouble-encoded data
%0ALF (newline)Line feedMultiline field values
%0DCR (carriage return)Carriage returnWindows line endings
%09TABHorizontal tabTSV data in URLs
%22"Double quoteQuoted CSV fields
%27"Single quote / apostropheNames, contractions
%7B / %7D{ / }Curly bracesJSON embedded in CSV
%5B / %5D[ / ]Square bracketsArray notation
%7C|PipeAlternate delimiters
%C3%A9éUTF-8 multibyte (2 bytes)Accented characters
%E2%80%99"UTF-8 multibyte (3 bytes)Smart quotes / Unicode punctuation
%E2%82%ACEuro sign (3 bytes)Currency values
+␣ (space)Plus-as-space conventionapplication/x-www-form-urlencoded

Frequently Asked Questions

The tool wraps each decoding attempt in a try-catch block. If decodeURIComponent throws a URIError on a malformed sequence such as %GZ or a lone %, the original text is preserved unchanged. A warning count is displayed so you can locate problematic cells.
Enable the "Multi-pass decode" option. The tool applies decodeURIComponent repeatedly until the output stabilizes (no further change) or a maximum of 10 passes is reached. This resolves chains like %25253A%253A%3A:.
If a field contains %2C (encoded comma), decoding it produces a literal comma. This tool re-quotes any field whose decoded value contains the active delimiter, a newline, or a double quote, conforming to RFC 4180. Your column structure remains intact.
Only in the application/x-www-form-urlencoded format used by HTML form submissions. In standard RFC 3986 percent-encoding, + is a literal plus. The toggle "Decode + as space" lets you choose the correct interpretation for your data source.
Processing runs entirely in your browser's memory. Files up to approximately 50 MB process reliably on modern devices. The tool chunks work into batches of 1000 rows with UI yielding, so the browser remains responsive. For files above 100 MB, consider splitting them first.
The tool assumes UTF-8, which is the encoding mandated by RFC 3986 and used by virtually all modern web systems. If your CSV was originally encoded in ISO-8859-1 or Windows-1252, multibyte sequences may decode to incorrect characters. Convert the file to UTF-8 before using this tool.