When using Serverless Functions, it may be necessary to use environment variables.

Adding environment variables requires two steps, defining the environment variable, then making it available to your Serverless Functions.

Note: This section covers how to make environment variables available during Run Time, if you would like to make them available at Build Time, please see the Build Step documentation.

Adding Secrets

To define an environment variable for a deployment, use Now Secrets. By using Now Secrets, the data will be encrypted and stored securely.

Adding Now Secrets can be done with Now CLI, which provides three options to work with them.

Note: When adding Now Secrets with Now CLI, the secret name is automatically lowercased before being stored.

To define a Now Secret, use the following command:

now secrets add <secret-name> <secret-value>

Defining a Now Secret using Now CLI.

To remove a Now Secret, use the following command:

now secrets rm <secret-name>

Removing a Now Secret using Now CLI.

To rename a Now Secret, use the following command:

now secrets rename <secret-name> <new-name>

Renaming a Now Secret using Now CLI.

Providing Environment Variables

To provide your Serverless Functions with the environment variables you have defined, whether declared in a .env file during local development or as a Now Secret, create a now.json file like the one below:

  "env": {
    "VARIABLE_NAME": "@variable-name"

An example now.json file that provides Serverless Functions with a defined environment variable.

When providing environment variables to your application, the value should always be prefixed with @, followed by the name of the Now Secret or environment variable name if using an .env file during local development.

To use the environment variable from inside the application you would need to reference it using the correct syntax for the language being used. For example, using Node.js, the syntax would be:


Accessing a defined environment variable from within a Node.js application.

Now, whenever the process.env.VARIABLE_NAME key is used, it will provide the application with the value declared either by the Now Secret or environment variable, dependent on the environment the application is running in.

Note: To use environment variables at the build step of your application, refer to the build step documentation.

During Local Development

When using now dev to develop your Serverless Functions locally, Now Secrets are not available. This is a security measure, to prevent accidental use of production secrets during development.

To use environment variables during local development, create a .env file at the root of your project directory, for example:


An example .env file that provides Serverless Functions with a defined environment variable.

Warning: Usage of a .env file is only possible during local development and will not be made available when deploying as a security measure.

Updating Environment Variables

Environment variables are made available to the runtime of Serverless Functions, meaning that they do not update in the application unless it is redeployed.

If you change the value of a Now Secret or environment variable and want your application to be aware of this, you should create a new deployment.

Reserved Variables

The ZEIT Now platform reserves the usage of some environment variable names by default. You can find a list of these names in the limits documentation.


For more information on what to do next, we recommend the following articles: