ljharb/qs
A querystring parser and serializer with nesting support
Build with Backblaze B2
SDKs, agent skills, IDE extensions, and reference pipelines from Backblaze Labs. All open source.
Loading star history...
Where it stands
Rank, growth pace and release cadence relative to everything GStars tracks.
The project lists 80 contributors on GitHub.
Gained 33% fewer stars in the last 90 days than in the 90 days before.
Use Cases & Benefits
- Parses and serializes query strings with support for nested objects and arrays in JavaScript environments.
- Provides extensive customization options and security features like depth limits and prototype pollution prevention.
- Use for safely parsing complex nested query parameters in Node.js or browser applications.
- Use for generating query strings from deeply nested JavaScript objects with customizable encoding and formatting.
- Use for handling legacy character sets and encoding schemes in query strings, including iso-8859-1 and Shift JIS.
Should you depend on it?
License terms, project hygiene and risks, from GitHub metadata and GStars' snapshots.
License
BSD 3-Clause
Permissive: commercial use, modification and redistribution are allowed with attribution.
Community files
- README: present
- Contributing guide: present
- Code of conduct: present
Watch-outs
- No GitHub releases; pin a commit or tag instead of a release.
General guidance from repository metadata, not legal advice. How we score
From the README
A querystring parsing and stringifying library with some added security.
The qs module was originally created and maintained by TJ Holowaychuk.
qs allows you to create nested objects within your query strings, by surrounding the name of sub-keys with square brackets
[]. For example, the string'foo[bar]=baz'converts to:When using the
plainObjectsoption the parsed value is returned as a null object, created via{ __proto__: null }and as such you should be aware that prototype methods will not exist on it and a user may set those names to whatever value they like:By default parameters that would overwrite properties on the object prototype are ignored, if you wish to keep the data from those fields either use
plainObjectsas mentioned above, or setallowPrototypestotruewhich will allow user input to overwrite those properties. WARNING It is generally a bad idea to enable this option as it can cause problems when attempting to use the properties that have been overwritten. Always be careful with this option.
Daily snapshots
Stars gained per day, and how forks and open issues moved, from GStars' daily snapshots
Forks
976+83
Open issues
42-49
Compared with peers in Backend
Fastest-growing repositories GStars tracks in this cohort for the week of Nov 8, by 7-day star growth
| Repository | Stars | +7d | Health | Last release |
|---|---|---|---|---|
| anthropics/skills | 192.3K | +5.2K | 75 | — |
| zed-industries/zed | 94.7K | +2.3K | 75 | 6 days ago |
| google/skills | 23.8K | +2.0K | 75 | — |
| NationalSecurityAgency/ghidra | 99.4K | +1.8K | 75 | 19 days ago |
| DuarteSantos8/openGym | 20.8K | +1.7K | 75 | 7 days ago |
| ljharb/qs | 9.0K | — | 45 | — |
| Category median | 94.7K | +2.0K | 75 | — |
Discover Repositories
Search across tracked repositories by name or description