Convert URL parameters to object

Read a query string into an object; repeated keys become arrays.

JavaScript Version 1.0.0 · MIT · .md

convert-url-parameters-to-object.js
function getUrlParams(query) { return Array.from(new URLSearchParams(query)).reduce((params, [key, value]) => Object.assign(params, { [key]: Object.hasOwn(params, key) ? [].concat(params[key], value) : value }), {}); }

Input & expected output

Input

"?utm_source=1loc.dev&tag=email&tag=webhooks"

Expected output

{
  "utm_source": "1loc.dev",
  "tag": [
    "email",
    "webhooks"
  ]
}

The edge case

Input

""

Expected output

{}

Know the limits

  • Values are strings; + decodes to a space as in HTML forms.
  • The original checked p[k] for truthiness, so an empty first value was overwritten; Object.hasOwn keeps it.

The function above is the implementation used by the lab. The lab validates JSON types and caps size before execution; include equivalent validation when accepting untrusted input in your application.

Source & maintenance

Based on Convert URL parameters to object from the original 1loc collection by Nguyen Huu Phuoc. Copyright (c) 2020 phuoc-ng. MIT licensed.

Uses Object.hasOwn so an empty first value is kept when a key repeats; the original tested truthiness. Original MDX retained as inert source evidence.

Maintained by Oveyon. Source commit: 14b481cf60df. Read the license.

Local fixture scope · Node.js 22.23.2 · reviewed October 28, 2026. No external service is required.

Keep exploring

Type two or more characters. Try “duplicate”, “webhook” or “retry”.