---
title: Types
summary: null
url: https://www.fastly.com/documentation/reference/vcl/types
---

VCL is a statically typed language.

Some familiar primitive types like `FLOAT`, `BOOL`, `INTEGER` and `STRING` are provided for scalar values, and may be assigned values from literals.

Other types represent scalar values but in a more complex format or are expressed with a unit, like `TIME` and `RTIME`.

These types all have implicit conversions to strings, such that their values may be used in contexts where a `STRING` value is necessary.

In addition to scalar types, VCL supports a number of types with special semantics that are particular to built in data structures, like `IP`, and `ACL`.

## Available types

- [ACL](https://www.fastly.com/documentation/reference/vcl/types/acl/)
- [BACKEND](https://www.fastly.com/documentation/reference/vcl/types/backend/)
- [BOOL](https://www.fastly.com/documentation/reference/vcl/types/bool/)
- [FLOAT](https://www.fastly.com/documentation/reference/vcl/types/float/)
- [ID](https://www.fastly.com/documentation/reference/vcl/types/id/)
- [INTEGER](https://www.fastly.com/documentation/reference/vcl/types/integer/)
- [IP](https://www.fastly.com/documentation/reference/vcl/types/ip/)
- [REGEX](https://www.fastly.com/documentation/reference/vcl/types/regex/)
- [RTIME](https://www.fastly.com/documentation/reference/vcl/types/rtime/)
- [STRING](https://www.fastly.com/documentation/reference/vcl/types/string/)
- [TIME](https://www.fastly.com/documentation/reference/vcl/types/time/)

## Not set

`STRING` and `IP` types  may be _not set_ (as opposed to being set to the empty string), in which case the variable is considered to have no value. Various functions and operators treat _not set_ differently; some render them as the empty string, and some as `"(null)"`. This handling is a property of the function (or operator), rather than a property of the type.
