← Back to Blog

URL Encoding in JavaScript: Common Pitfalls and How to Avoid Them

March 28, 2026 3 min read By CodeTidy Team

The URL Encoding Trap: How to Avoid Common Pitfalls in JavaScript

We've all been there - trying to send a request to a server, only to have it fail due to a mis-encoded URL. It's a frustrating issue that can be tricky to debug, especially when working with special characters. In this article, we'll explore the common pitfalls of URL encoding in JavaScript and provide practical advice on how to avoid them.

Table of Contents

  • The Difference Between encodeURI and encodeURIComponent
  • Handling Special Characters with encodeURIComponent
  • Building URLs with URLSearchParams
  • Common Pitfalls and How to Avoid Them
  • Best Practices for URL Encoding in JavaScript
  • Key Takeaways

The Difference Between encodeURI and encodeURIComponent

When it comes to URL encoding in JavaScript, there are two functions that are often confused with each other: encodeURI and encodeURIComponent. While both functions are used for encoding URLs, they serve different purposes.

encodeURI is used to encode an entire URL, including the protocol, hostname, and path. It's useful when you need to encode a complete URL, but it can be too aggressive, encoding characters that don't need to be encoded.

const url = 'https://example.com/path with spaces';
const encodedUrl = encodeURI(url);
console.log(encodedUrl); // https://example.com/path%20with%20spaces

On the other hand, encodeURIComponent is used to encode individual components of a URL, such as query strings or path segments. It's more precise and doesn't encode unnecessary characters.

const queryString = 'key=value with spaces';
const encodedQueryString = encodeURIComponent(queryString);
console.log(encodedQueryString); // key%3Dvalue%20with%20spaces

We recommend using encodeURIComponent whenever possible, as it provides more control over the encoding process.

Handling Special Characters with encodeURIComponent

Special characters, such as spaces, ampersands, and question marks, can be tricky to handle when encoding URLs. encodeURIComponent is designed to handle these characters correctly, but it's essential to use it consistently.

For example, when building a query string, make sure to encode each key-value pair individually:

const queryString = 'key1=value1&key2=value2 with spaces';
const encodedQueryString = Object.keys(queryString).map(key => {
  const value = queryString[key];
  return `${encodeURIComponent(key)}=${encodeURIComponent(value)}`;
}).join('&');
console.log(encodedQueryString); // key1%3Dvalue1%26key2%3Dvalue2%20with%20spaces

Building URLs with URLSearchParams

URLSearchParams is a modern API that simplifies the process of building and manipulating URLs. It provides a convenient way to encode query strings and append parameters to a URL.

const url = new URL('https://example.com');
const params = new URLSearchParams({
  key1: 'value1',
  key2: 'value2 with spaces'
});
url.search = params.toString();
console.log(url.href); // https://example.com?key1=value1&key2=value2%20with%20spaces

Common Pitfalls and How to Avoid Them

One common pitfall is using encodeURI instead of encodeURIComponent, which can lead to unnecessary encoding of characters. Another mistake is not encoding special characters correctly, which can result in malformed URLs.

To avoid these pitfalls, always use encodeURIComponent when encoding individual components of a URL, and make sure to handle special characters correctly.

Best Practices for URL Encoding in JavaScript

Here are some best practices to keep in mind when encoding URLs in JavaScript:

  • Use encodeURIComponent instead of encodeURI whenever possible.
  • Encode individual components of a URL, such as query strings and path segments.
  • Handle special characters correctly using encodeURIComponent.
  • Use URLSearchParams to simplify the process of building and manipulating URLs.

Key Takeaways

  • Use encodeURIComponent to encode individual components of a URL.
  • Handle special characters correctly using encodeURIComponent.
  • Use URLSearchParams to simplify the process of building and manipulating URLs.

FAQ

Q: What's the difference between encodeURI and encodeURIComponent?

encodeURI encodes an entire URL, while encodeURIComponent encodes individual components of a URL.

Q: How do I handle special characters when encoding URLs?

Use encodeURIComponent to handle special characters correctly.

Q: What's the best way to build and manipulate URLs in JavaScript?

Use URLSearchParams to simplify the process of building and manipulating URLs.

AI agent tools available. The CodeTidy MCP Server gives Claude, Cursor, and other AI agents access to 60+ developer tools. One command: npx @codetidy/mcp