URLSearchParams works in Chrome 49+, Edge 17+, Firefox 29+, Opera 36+, Safari 10.1+ on macOS, iOS 10.3+, and Samsung Internet 5+. Learn the methods and quirks.

Prince Dewani
May 6, 2026
URLSearchParams is a JavaScript Web API in the WHATWG URL Standard that parses, reads, edits, and serializes the query string of a URL. It supports Chrome 49+, Edge 17+, Firefox 29+, Opera 36+, Safari 10.1+ on macOS, Safari 10.3+ on iOS, and Samsung Internet 5+, while Internet Explorer never added support.
This guide covers what URLSearchParams is, its browser support, the key methods, common use cases, how to check support at runtime, and the known issues.
URLSearchParams is a built-in JavaScript interface defined by the WHATWG URL Standard. It provides utility methods to read, edit, append, and delete the key-value pairs in the query string of a URL. The interface is iterable, so the entries also work in for...of loops and the spread operator.
URLSearchParams works in every modern browser. Chrome, Firefox, Safari, Edge, Opera, and Samsung Internet all ship it by default, while Internet Explorer never added support.
Chrome supports URLSearchParams from Chrome 49 on Windows, macOS, Linux, ChromeOS, and Android. Chrome 1 to 48 did not include the interface, so any visitor on those very old builds needs a polyfill. The newer URLSearchParams.size property requires Chrome 113 or later.
Microsoft Edge supports URLSearchParams from Edge 17 on Windows on the legacy EdgeHTML engine, and by default from Edge 79 on the Chromium engine across Windows, macOS, and Linux. Edge 12 to 16 did not include URLSearchParams. The size property requires Edge 113 or later.
Firefox first added URLSearchParams in Firefox 29 with partial support, and full default support from Firefox 44 on Windows, macOS, Linux, and Android. Firefox 1 to 28 did not include URLSearchParams. The size property requires Firefox 116 or later.
Safari supports URLSearchParams from Safari 10.1 on macOS Sierra and later. Safari on iOS and iPadOS supports it from iOS 10.3. Older Safari and iOS versions did not include URLSearchParams. The size property requires Safari 17 on macOS and iOS.
Opera supports URLSearchParams from Opera 36 on Windows, macOS, and Linux. Opera Mobile supports it from Opera Mobile 36 on Android. Opera 9 to 35 did not include the interface. The size property requires Opera 99 or later.
Samsung Internet supports URLSearchParams from Samsung Internet 5.0 on Galaxy phones and tablets. It is built on Chromium, so it inherits the full URLSearchParams API and matches Chrome for Android. The size property arrives with the Chromium 113 base, so Samsung Internet 22 and later expose it.
Chrome for Android supports URLSearchParams from Chrome for Android 49 on Android 4.4 and later. The legacy stock Android Browser on Android 4.3 and earlier did not add URLSearchParams. Modern Android phones should rely on Chrome for Android, Firefox for Android, or Samsung Internet for full support.
Internet Explorer never added URLSearchParams. IE 5.5 to 11 do not provide the interface, so any code that calls new URLSearchParams throws a ReferenceError. Sites that still need IE coverage should ship a polyfill such as url-search-params-polyfill, or fall back to manual querystring parsing with String.prototype.split.
Note: URLSearchParams behavior breaks across older Safari, iOS, and Internet Explorer builds. Test it on real browsers and OS with TestMu AI. Try TestMu AI free!
URLSearchParams ships twelve instance methods plus a size property. They cover reading, writing, iterating, and serializing the key-value pairs of a query string.
Developers reach for URLSearchParams whenever a URL carries data. The most common patterns are reading filters from the address bar, building a clean query string for fetch, and updating the URL without a full page reload.
Run a single feature check in JavaScript or use the DevTools console. The interface is exposed as a global, so a typeof check confirms support in seconds.
Paste this snippet into the browser DevTools console to confirm URLSearchParams support and the newer size property:
// Run in any browser DevTools console.
const supportsUSP = typeof URLSearchParams === "function";
const supportsSize = supportsUSP && "size" in new URLSearchParams();
console.log("URLSearchParams supported:", supportsUSP);
console.log("URLSearchParams.size supported:", supportsSize);
if (supportsUSP) {
const params = new URLSearchParams("q=test&page=2");
console.log("q value:", params.get("q"));
console.log("entry count:", supportsSize ? params.size : [...params].length);
} else {
console.log("Load a polyfill before parsing query strings.");
}If supportsUSP logs false, the page should load a polyfill before any code calls new URLSearchParams. If supportsSize logs false, count entries with Array.from(params).length instead of params.size.
URLSearchParams has solid support across modern browsers, but a few real edge cases still trip up production code. The biggest hits are Internet Explorer, the plus-sign decoding rule, and the late-arriving size property.
In my experience, the most common bug is the plus sign showing up as a space. A user search for c++ tutorials arrives at the server as c tutorials, and the team spends an afternoon hunting before realizing the form should encode + as %2B before building the URLSearchParams object.
All URLSearchParams version numbers and platform notes in this guide come from these primary sources:
Did you find this page helpful?
More Related Hubs
TestMu AI forEnterprise
Get access to solutions built on Enterprise
grade security, privacy, & compliance