# querystringparser

> Extremely fast querystring parser

Latest version **0.1.1** (published 2014-10-28) · MIT license · 0 weekly downloads

## Install

```sh
npm install querystringparser
pnpm add querystringparser
yarn add querystringparser
bun add querystringparser
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.1.1 |
| Published | 2014-10-28 |
| First published | 2013-11-20 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 0 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 23 |
| Author | Petka Antonov |
| Maintainers | esailija |
| Keywords | qs, querystring, query-string, form-encoding, request-body, parse, parser, serialize, serializer, key-value |

## Links

- npm: https://www.npmjs.com/package/querystringparser
- Repository: https://github.com/petkaantonov/querystringparser
- Issues: http://github.com/petkaantonov/querystringparser/issues
- npm.io page: https://npm.io/package/querystringparser

## Alternatives

- [babylon](https://npm.io/package/babylon.md) — 5.1M weekly downloads
- [csscolorparser](https://npm.io/package/csscolorparser.md) — 3.7M weekly downloads
- [expr-eval-fork](https://npm.io/package/expr-eval-fork.md) — 1.5M weekly downloads
- [@leeoniya/ufuzzy](https://npm.io/package/@leeoniya/ufuzzy.md) — 247.7K weekly downloads
- [xml-parser](https://npm.io/package/xml-parser.md) — 78.4K weekly downloads

## Recent versions

- 0.1.1 (latest) — 2014-10-28
- 0.1.0 — 2013-11-20

## README

[![Build Status](https://travis-ci.org/petkaantonov/querystringparser.png?branch=master)](https://travis-ci.org/petkaantonov/querystringparser)

#Introduction

Extremely fast querystring parser with same API and semantics as [`qs`](http://npmjs.org/package/qs) + DoS Protection.

#Quick start

    npm install querystringparser

```js
var querystringparser = require("querystringparser");
querystringparser.parse("foo=bar");
```

#API

Exactly the same API and semantics are implemented 100% to make comparison fair.

DoS protection checks for input length, amount of total keys and maximum nesting depth of keys.

```js
var qs = require("querystringparser");
qs.maxLength //Maximum amount of characters in the input string to parse: 32768
qs.maxKeys //Maximum amount of key-value pairs in the query string: 256
qs.maxDepth //Maximum nesting depth of keys: 4 e.g. a[b][c][d]=3
```

a `RangeError` is thrown when these limits are reached.

#Performance

To run benchmarks run the `bench` bash script while on the project root.

Platform info:

    Windows_NT 6.1.7601 x64
    Node.JS 0.11.8
    V8 3.21.18.3
    Intel(R) Core(TM) i5-2500K CPU @ 3.30GHz × 4

#Parse

Input:

    a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&
    a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&
    a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&
    a[]=3&a[]=3&a[]=3&a[]=3&a[ ]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3
    &a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3
    &a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3
    &a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]= 3&a[]=3&a[]=3&a[]=3&a[]=
    3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=
    3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=
    3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=
    3& a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3

Results:

    querystringparser x 45,415 ops/sec ±0.10% (103 runs sampled)
    qs x 3,372 ops/sec ±0.16% (100 runs sampled)

Input:

    foo=bar

Results:

    querystringparser x 1,708,245 ops/sec ±0.14% (97 runs sampled)
    qs x 331,300 ops/sec ±0.19% (101 runs sampled)

Input:

    user[name][first]=tj&user[name][last]=holowaychuk

Results:

    querystringparser x 336,640 ops/sec ±0.13% (95 runs sampled)
    qs x 77,368 ops/sec ±0.16% (100 runs sampled)

Input:

    a[]=1&a[]=2&a[]=3

Results:

    querystringparser x 1,418,693 ops/sec ±0.14% (98 runs sampled)
    qs x 96,978 ops/sec ±0.14% (100 runs sampled)


#Stringify

Input:

    {"cht":"p3","chd":"t:60,40","chs":"250x100","chl":"Hello|World"}

Results:

    querystringparser x 282,700 ops/sec ±0.21% (99 runs sampled)
    qs x 220,947 ops/sec ±0.26% (101 runs sampled)

Input:

    {"foo":["bar"],"baz":["1","2","3"]}

Results:

    querystringparser x 558,012 ops/sec ±0.42% (94 runs sampled)
    qs x 410,148 ops/sec ±0.31% (98 runs sampled)

Input:

    {"x":{"y":[{"z":"1","w":"2"}]}}

Results:

    querystringparser x 479,991 ops/sec ±0.13% (99 runs sampled)
    qs x 346,668 ops/sec ±0.21% (99 runs sampled)

Input:

    {"foo":"bar","bar":"baz"}

Results:

    querystringparser x 999,859 ops/sec ±0.19% (97 runs sampled)
    qs x 690,273 ops/sec ±0.43% (96 runs sampled)

---
_Source: https://npm.io/package/querystringparser · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
