🔗URL & UTM

Parse Query String Parameters

Extract and parse query string parameters from URLs into key-value pairs

Explanation

Convert URL query strings into JavaScript objects or maps for easy access and manipulation.

Examples

Parse simple query
Input
?utm_source=google&utm_medium=cpc
Output
{ utm_source: "google", utm_medium: "cpc" }
Parse with special chars
Input
?name=John%20Doe&email=test%40example.com
Output
{ name: "John Doe", email: "test@example.com" }

Code Examples

JavaScript (Modern)
// Modern approach using URLSearchParams
function parseQueryString(url) {
  const urlObj = new URL(url);
  const params = {};
  
  urlObj.searchParams.forEach((value, key) => {
    params[key] = value;
  });
  
  return params;
}

// From current page URL
function getCurrentQueryParams() {
  const params = {};
  const searchParams = new URLSearchParams(window.location.search);
  
  searchParams.forEach((value, key) => {
    params[key] = value;
  });
  
  return params;
}

// Get specific parameter
function getQueryParam(name) {
  const searchParams = new URLSearchParams(window.location.search);
  return searchParams.get(name);
}

// Usage
const url = 'https://example.com?utm_source=google&utm_campaign=test';
const params = parseQueryString(url);
// Result: { utm_source: 'google', utm_campaign: 'test' }

const utmSource = getQueryParam('utm_source');
// Result: 'google'
JavaScript (Legacy)
// Legacy approach (manual parsing)
function parseQueryStringLegacy(queryString) {
  const params = {};
  
  // Remove leading ?
  const query = queryString.replace(/^\?/, '');
  
  // Split by &
  query.split('&').forEach(pair => {
    const [key, value] = pair.split('=');
    if (key) {
      params[decodeURIComponent(key)] = 
        decodeURIComponent(value || '');
    }
  });
  
  return params;
}

Try it Now

💡 Tips

  • URLSearchParams automatically decodes values
  • Use get() for single values, getAll() for arrays
  • Check for parameter existence with has()
  • Remember to handle missing parameters gracefully
  • Query string can be accessed via window.location.search

⚠️ Common Pitfalls

  • Duplicate parameter names return only first value
  • URLSearchParams not available in IE11
  • Empty values (foo=) vs missing values (foo)
  • Hash fragment is separate from query string