qs
6.17.1 · 28 Oct 2026BSD-3-Clause214.6M / weekRepositorynpmAtom feed
158 stable releases, newest first, by release line. Notes are quoted as the maintainers published them.
6.17.1
28 Oct 2026parse:interpretNumericEntities: decode code points above U+FFFF as surrogate pairsparse: respectplainObjectsfor `` withparseArrays: falseutils:merge: count the elements of a sparse array againstarrayLimit, not its holes
parse:interpretNumericEntities: decode code points above U+FFFF as surrogate pairsparse: respectplainObjectsfor `` withparseArrays: falseutils:merge: count the elements of a sparse array againstarrayLimit, not its holesparse: guard bracket-wrapped prototype keys at depth 0parse: extract wrapping-bracket stripping helperDocument that
depth: 0anddepth: falsekeep keys flat
6.17.0
27 Oct 2026stringify: addWHATWGformatstringify: do not sort the caller'sfilterarray in placeparse: copy an own__proto__key as data
stringify: addWHATWGformatstringify: do not sort the caller'sfilterarray in placeparse: copy an own__proto__key as dataparse: decode percent-encoded dots case-insensitivelystringify: encode keys whenallowEmptyArraysis setparse: preserve comma arrays when interpreting numeric entitiesparse: allow scalar fields with a zero array limitparse: do not count an existing comma array towardarrayLimitwhenduplicatesdiscards or replaces itutils:encode: encode lone surrogates as U+FFFD instead of consuming the next code unitFix indentation
Document the encoder's
formatargumentAdd changelog acknowledgement
Fix changelog indents
Update
eslint,evalmd,npmignore
6.16.2
27 Oct 2026stringify: encode keys whenallowEmptyArraysis setUse double quotes for better OS support
Update
evalmd,npmignore
stringify: encode keys whenallowEmptyArraysis setUse double quotes for better OS support
Update
evalmd,npmignore
6.16.1
14 Oct 2026parse: do not mutate an object inputstringify: stop re-encoding structural separator dots whenencodeDotInKeysis setstringify:arrayFormat: 'comma': pass the full encoder arguments withencodeValuesOnly
parse: do not mutate an object inputstringify: stop re-encoding structural separator dots whenencodeDotInKeysis setstringify:arrayFormat: 'comma': pass the full encoder arguments withencodeValuesOnlyutils: encode+as%2Bin iso-8859-1 mode so values round-tripparse: Only convert top-level dots to brackets when allowDots is on
stringify: ignore inherited array format namesstringify:arrayFormat: 'comma': do not throw on elements with no callabletoStringutils:merge: seed an overflow container's index from its own keys, not just the sourceutils:merge: keep astrictMergeconflict container's index andarrayLimitcorrectparse: only treat `` as array syntax when it ends the keydecode: skip decoders when there is no percent signutils:merge: applyarrayLimitto the two-element array built for colliding valuesparse: bound the nesting added by repeatedstrictMergeconflicts (credit @Yeaseen)Fix changelog indents
Set least-privilege
cache-modeUpdate
@ljharb/eslint-config,eslint,tape
6.16.0
29 Aug 2026stringify: add adepthoption to bound recursion depth (defaultInfinity)stringify: Serialize Date values when a filter is provided
parse: enforcearrayLimiton comma groups under=whenthrowOnLimitExceededis set
stringify: add adepthoption to bound recursion depth (defaultInfinity)stringify: Serialize Date values when a filter is provided
parse: enforcearrayLimiton comma groups under=whenthrowOnLimitExceededis setparse: flatten a collection appended to an overflowed arrayutils:isBuffer: do not invoke a non-callableconstructor.isBufferstringify: do not letallowEmptyArraysskip cycle detection (or drop own keys) on an empty array with own propertiesstringify: encode dots in a top-level key with a primitive value when encodeDotInKeys is setUpdate
@ljharb/eslint-config,eslintUpdate
eslint,evalmd
6.15.4
27 Oct 2026stringify: encode keys whenallowEmptyArraysis setUse double quotes for better OS support
Update
@ljharb/eslint-config,evalmd,npmignore,tape
stringify: encode keys whenallowEmptyArraysis setUse double quotes for better OS support
Update
@ljharb/eslint-config,evalmd,npmignore,tape
6.15.3
24 Jun 2026parse: enforcethrowOnLimitExceededfor cumulative array growth viacombine/mergeutils: respect encoding of surrogate pairs across chunksparse: throw thearrayLimiterror before splitting oversized comma values
parse: enforcethrowOnLimitExceededfor cumulative array growth viacombine/mergeutils: respect encoding of surrogate pairs across chunksparse: throw thearrayLimiterror before splitting oversized comma valuesutils.merge/utils.assign: avoid invoking__proto__setter when copying own propertiesutils: enforcearrayLimitconsistently acrossmerge's array pathsutils: makecompactO(n) via a side-channel visited-set instead ofArray.indexOfUpdate
side-channelUpdate
eslint,mock-property,tape
6.15.2
16 May 2026stringify: skip null/undefined entries inarrayFormat: 'comma'+encodeValuesOnlyinstead of crashing inencoderstringify: use configureddelimiteraftercharsetSentinelstringify: applyformatterto encoded key understrictNullHandling
stringify: skip null/undefined entries inarrayFormat: 'comma'+encodeValuesOnlyinstead of crashing inencoderstringify: use configureddelimiteraftercharsetSentinelstringify: applyformatterto encoded key understrictNullHandlingstringify: skip null/undefined filter-array entries instead of crashing inencoderparse: handle nested bracket groups and add regression tests (#530); changes output for some unbalanced bracket keys (see #558)Fix grammar
Update
@ljharb/eslint-config
6.15.1
8 Apr 2026parse:parameterLimit: InfinitywiththrowOnLimitExceeded: truesilently drops all parametersUpdate
@ljharb/eslint-configUpdate
@ljharb/eslint-config,iconv-lite
parse:parameterLimit: InfinitywiththrowOnLimitExceeded: truesilently drops all parametersUpdate
@ljharb/eslint-configUpdate
@ljharb/eslint-config,iconv-lite
6.14.3
27 Oct 2026stringify: encode keys whenallowEmptyArraysis setUse double quotes for better OS support
Update
side-channel
stringify: encode keys whenallowEmptyArraysis setUse double quotes for better OS support
Update
side-channelUpdate
@ljharb/eslint-config,es-value-fixtures,eslint,evalmd,mock-property,npmignore,tape
6.14.2
11 Feb 2026parse: mark overflow objects for indexed notation exceedingarrayLimitarrayLimitmeans max count, not max index, incombine/merge/parseArrayValueparse: throw onarrayLimitexceeded with indexed notation whenthrowOnLimitExceededis true
parse: mark overflow objects for indexed notation exceedingarrayLimitarrayLimitmeans max count, not max index, incombine/merge/parseArrayValueparse: throw onarrayLimitexceeded with indexed notation whenthrowOnLimitExceededis trueparse: enforcearrayLimitoncomma-parsed valuesparse: fix error message to reflect arrayLimit as max index; remove extraneous commentsAvoid
.push, usevoidDocument that
addQueryPrefixdoes not add?to empty outputClarify
parseArraysandarrayLimitdocumentationReplace runkit CI badge with shields.io check-runs badge
Fix rebase workflow permissions
6.14.1
29 Dec 2025Ensure
arrayLimitapplies to `` notation as wellparse: when a custom decoder returnsnullfor a key, ignore that keyparse: extract key segment splitting helper
Ensure
arrayLimitapplies to `` notation as wellparse: when a custom decoder returnsnullfor a key, ignore that keyparse: extract key segment splitting helperAdd threat model
Add workflow permissions
Update
eslint,@ljharb/eslint-config,npmignore,es-value-fixtures,for-each,object-inspect
6.14.0
14 Jan 2025parse: addthrowOnParameterLimitExceededoptionparse: useutils.combinemoreparse: add explicitthrowOnLimitExceededdefault
parse: addthrowOnParameterLimitExceededoptionparse: useutils.combinemoreparse: add explicitthrowOnLimitExceededdefaultUse shared action; re-add finishers
Fix changelog formatting bug
Update
side-channelUpdate
es-value-fixtures,has-bigints,has-proto,has-symbols
6.13.4
27 Oct 2026stringify: encode keys whenallowEmptyArraysis setUse double quotes for better OS support
Update
side-channel
stringify: encode keys whenallowEmptyArraysis setUse double quotes for better OS support
Update
side-channelUpdate
@ljharb/eslint-config,es-value-fixtures,eslint,evalmd,for-each,has-symbols,mock-property,npmignore,object-inspect,tape
6.13.3
13 Feb 2026Reading the note…
6.13.2
12 Feb 2026Reading the note…
6.13.1
17 Nov 2024Reading the note…
6.13.0
1 Aug 2024parse: addstrictDepthoption
parse: addstrictDepthoption
6.12.6
27 Oct 2026stringify: encode keys whenallowEmptyArraysis setUse
npm auditinstead ofaudUpdate
side-channel
stringify: encode keys whenallowEmptyArraysis setUse
npm auditinstead ofaudUpdate
side-channelUpdate
@ljharb/eslint-config,es-value-fixtures,eslint,evalmd,for-each,has-symbols,mock-property,npmignore,object-inspect,tape
6.12.5
13 Feb 2026Reading the note…
6.12.4
12 Feb 2026Reading the note…
6.12.3
8 Jul 2024Reading the note…
6.12.2
1 Jul 2024Reading the note…
6.12.1
12 Apr 2024Reading the note…
6.12.0
6 Mar 2024parse/stringify: adddecodeDotInKeys/encodeDotKeysoptionsparse: addduplicatesoptionparse/stringify: addallowEmptyArraysoption to allow in object values
parse/stringify: adddecodeDotInKeys/encodeDotKeysoptionsparse: addduplicatesoptionparse/stringify: addallowEmptyArraysoption to allow in object valuesparse/stringify: move allowDots config logic to its own variablestringify: move option-handling code intonormalizeStringifyOptionsUpdate readme, add logos
stringify: clarify defaultarrayFormatbehaviorFix line wrapping
Remove dead badges
Update
side-channelMake the dist build 50% smaller
Add
sideEffectsflagRun build in prepack, not prepublish
Update
@ljharb/eslint-config,aud,has-override-mistake,has-property-descriptors,mock-property,npmignore,object-inspect,tapePin
glob, since v10.3.8+ requires a brokenjackspeakPin
jackspeaksince 2.1.2+ depends on npm aliases, which kill the install process in npm < 6
6.11.4
13 Feb 2026Reading the note…
6.11.3
12 Feb 2026Reading the note…
6.11.2
15 May 2023Reading the note…
6.11.1
6 Mar 2023Reading the note…
6.10.7
13 Feb 2026Reading the note…
6.10.6
12 Feb 2026Reading the note…
6.10.5
6 Jun 2022Reading the note…
6.10.4
6 Jun 2022Reading the note…
6.10.3
11 Jan 2022Reading the note…
6.10.2
6 Dec 2021Reading the note…
6.10.1
22 Mar 2021Reading the note…
6.10.0
18 Mar 2021parse: addallowSparseoption for collapsing arrays with missing indicesFix README.md
stringify: throw on cycles, instead of an infinite loop (#395, #394, #393)parse: addallowSparseoption for collapsing arrays with missing indicesFix README.md
Only run
npm run distin publish, not installUpdate
eslint,@ljharb/eslint-config,aud,has-symbols,tape
6.9.9
13 Feb 2026Reading the note…
6.9.8
12 Feb 2026Reading the note…
6.9.7
11 Jan 2022Reading the note…
6.9.6
14 Jan 2021Reading the note…
6.9.5
13 Jan 2021Reading the note…
6.9.4
3 May 2020Reading the note…
6.9.3
25 Mar 2020Reading the note…
6.9.2
22 Mar 2020Reading the note…
6.9.1
8 Nov 2019Reading the note…
6.9.0
21 Sep 2019parse/stringify: Pass extra key/value argument todecoderUpdate
eslint,@ljharb/eslint-config,evalmd
parse/stringify: Pass extra key/value argument todecoderUpdate
eslint,@ljharb/eslint-config,evalmd
6.8.5
13 Feb 2026Reading the note…