---
title: Query string
summary: null
url: https://www.fastly.com/documentation/reference/vcl/functions/query-string
---

> Copyright (C) 2012-2016, Dridi Boukelmoune [dridi.boukelmoune@gmail.com](mailto:dridi.boukelmoune@gmail.com)  
> All rights reserved.

Varnish multipurpose vmod for URL query string manipulation. Can be used to
normalize for instance request URLs or Location response headers in various
ways. It is recommended to at least clean incoming request URLs (removing empty
parameters or query strings), all other functions do the cleaning.

In your VCL you could then use this vmod along the following lines::

```vcl
import querystring;

sub vcl_hash {
  # sort the URL before the request hashing
  set req.url = querystring.sort(req.url);
}
```

You can use regfilter to specify a list of arguments that must not be removed
(everything else will be) with a negative look-ahead expression::

```vcl
set req.url = querystring.regfilter(req.url, "^(?!param1|param2)");
```

The sort algorithm is a mix of Jason Mooberry's Skwurly and my own QuerySort
with regards for the Varnish workspace memory model of the worker threads.

- [boltsort.sort](https://www.fastly.com/documentation/reference/vcl/functions/query-string/boltsort-sort/)
- [querystring.add](https://www.fastly.com/documentation/reference/vcl/functions/query-string/querystring-add/)
- [querystring.clean](https://www.fastly.com/documentation/reference/vcl/functions/query-string/querystring-clean/)
- [querystring.filter](https://www.fastly.com/documentation/reference/vcl/functions/query-string/querystring-filter/)
- [querystring.filter_except](https://www.fastly.com/documentation/reference/vcl/functions/query-string/querystring-filter-except/)
- [querystring.filtersep](https://www.fastly.com/documentation/reference/vcl/functions/query-string/querystring-filtersep/)
- [querystring.get](https://www.fastly.com/documentation/reference/vcl/functions/query-string/querystring-get/)
- [querystring.globfilter](https://www.fastly.com/documentation/reference/vcl/functions/query-string/querystring-globfilter/)
- [querystring.globfilter_except](https://www.fastly.com/documentation/reference/vcl/functions/query-string/querystring-globfilter-except/)
- [querystring.regfilter](https://www.fastly.com/documentation/reference/vcl/functions/query-string/querystring-regfilter/)
- [querystring.regfilter_except](https://www.fastly.com/documentation/reference/vcl/functions/query-string/querystring-regfilter-except/)
- [querystring.remove](https://www.fastly.com/documentation/reference/vcl/functions/query-string/querystring-remove/)
- [querystring.set](https://www.fastly.com/documentation/reference/vcl/functions/query-string/querystring-set/)
- [querystring.sort](https://www.fastly.com/documentation/reference/vcl/functions/query-string/querystring-sort/)
