---
title: subfield
summary: null
url: >-
  https://www.fastly.com/documentation/reference/vcl/functions/miscellaneous/subfield
---

```
STRING subfield(STRING subject, STRING fieldname, STRING separator_character?)
```

**Available in:** all subroutines

Provides a means to access subfields from an HTTP header like `Cache-Control` or `Cookie`, or individual parameters from a string of key=value pairs, such as `req.url.qs` (the current request's query string).

The optional separator character parameter defaults to `,`. It can be any one-character constant. For example, `;` is a useful separator for extracting
parameters from a `Cookie` field and `&` is a useful separator for extracting query string parameters from a `URL`.

It's also possible to read and write header subfields using the `:` accessor operator.  See [HTTP headers](https://www.fastly.com/documentation/reference/http/http-headers/) for details.

This function always matches _case insensitively_.

## Examples

```vcl
if (subfield(beresp.http.Cache-Control, "private")) {
  return (pass);
}

set beresp.ttl = beresp.http.Cache-Control:max-age;
set beresp.http.Cache-Control:max-age = "1200";

set req.http.value-of-foo = subfield(req.url.qs, "foo", "&");
set req.http.value-of-bar = subfield(req.http.Cookie, "bar", ";");
```
