decodeURIComponent()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
ThedecodeURIComponent() function decodes a Uniform Resource Identifier (URI) component previously created byencodeURIComponent() or by a similar routine.
In this article
Try it
function containsEncodedComponents(x) { // ie ?,=,&,/ etc return decodeURI(x) !== decodeURIComponent(x);}console.log(containsEncodedComponents("%3Fx%3Dtest")); // ?x=test// Expected output: trueconsole.log(containsEncodedComponents("%D1%88%D0%B5%D0%BB%D0%BB%D1%8B")); // шеллы// Expected output: falseSyntax
decodeURIComponent(encodedURI)Parameters
encodedURIAn encoded component of a Uniform Resource Identifier.
Return value
A new string representing the decoded version of the given encoded Uniform Resource Identifier (URI) component.
Exceptions
URIErrorThrown if
encodedURIcontains a%not followed by two hexadecimal digits, or if the escape sequence does not encode a valid UTF-8 character.
Description
decodeURIComponent() is a function property of the global object.
decodeURIComponent() uses the same decoding algorithm as described indecodeURI(). It decodesall escape sequences, including those that are not created byencodeURIComponent, like-.!~*'().
Examples
>Decoding a Cyrillic URL component
decodeURIComponent("JavaScript_%D1%88%D0%B5%D0%BB%D0%BB%D1%8B");// "JavaScript_шеллы"Catching errors
try { const a = decodeURIComponent("%E0%A4%A");} catch (e) { console.error(e);}// URIError: malformed URI sequenceDecoding query parameters from a URL
decodeURIComponent() cannot be used directly to parse query parameters from a URL. It needs a bit of preparation.
function decodeQueryParam(p) { return decodeURIComponent(p.replace(/\+/g, " "));}decodeQueryParam("search+query%20%28correct%29");// 'search query (correct)'Specifications
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-decodeuricomponent-encodeduricomponent> |