CSV URL-Decoder
Decode URL-encoded CSV files online. Convert %20, %2C, and other percent-encoded characters back to readable text instantly in your browser.
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.
Formulas
Percent-decoding converts each %HH triplet back to its original octet using the hexadecimal value:
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:
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:
Where HH is a two-digit hexadecimal value in the range 00 - FF representing a single octet.
Reference Data
| Encoded Sequence | Decoded Character | Description | Common Source |
|---|---|---|---|
| %20 | ␣ (space) | Space character | Query strings, form data |
| %2C | , | Comma | CSV fields in URLs |
| %2F | / | Forward slash | URL paths |
| %3A | : | Colon | Protocol separators |
| %3B | ; | Semicolon | Parameter separators |
| %3D | = | Equals sign | Key-value pairs |
| %26 | & | Ampersand | Query string separators |
| %3F | ? | Question mark | Query string start |
| %40 | @ | At sign | Email addresses in URLs |
| %23 | # | Hash / pound | Fragment identifiers |
| %25 | % | Percent sign itself | Double-encoded data |
| %0A | LF (newline) | Line feed | Multiline field values |
| %0D | CR (carriage return) | Carriage return | Windows line endings |
| %09 | TAB | Horizontal tab | TSV data in URLs |
| %22 | " | Double quote | Quoted CSV fields |
| %27 | " | Single quote / apostrophe | Names, contractions |
| %7B / %7D | { / } | Curly braces | JSON embedded in CSV |
| %5B / %5D | [ / ] | Square brackets | Array notation |
| %7C | | | Pipe | Alternate delimiters |
| %C3%A9 | é | UTF-8 multibyte (2 bytes) | Accented characters |
| %E2%80%99 | " | UTF-8 multibyte (3 bytes) | Smart quotes / Unicode punctuation |
| %E2%82%AC | € | Euro sign (3 bytes) | Currency values |
| + | ␣ (space) | Plus-as-space convention | application/x-www-form-urlencoded |