---
id: api/commands/setcookie
title: setCookie | Cypress Documentation
description: Set a browser cookie in Cypress.
section: api
source_path: docs/api/commands/setcookie.mdx
version: ce02913654e2655ee63448bdc92bb92c7b46a619
updated_at: '2026-04-22T19:37:51.587Z'
---
# setCookie

Set a browser cookie.

## Syntax

```javascript
cy.setCookie(name, value)
cy.setCookie(name, value, options)
```

### Usage

 **Correct Usage**

```javascript
cy.setCookie('auth_key', '123key') // Set the 'auth_key' cookie to '123key'
```

### Arguments

 **name *(String)***

The name of the cookie to set.

 **value *(String)***

The value of the cookie to set.

 **options *(Object)***

Pass in an options object to change the default behavior of `cy.setCookie()`.

| Option     | Default                                                                     | Description                                                                                                                                                                                                           |
| ---------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `log`      | `true`                                                                      | Displays the command in the [Command log](/llm/markdown/app/core-concepts/open-mode.md#Command-Log)                                                                                                                   |
| `domain`   | Hostname of the current URL                                                 | The domain the cookie is visible to                                                                                                                                                                                   |
| `expiry`   | 20 years into the future                                                    | When the cookie expires, specified in seconds since [Unix Epoch](https://en.wikipedia.org/wiki/Unix_time).                                                                                                            |
| `hostOnly` | `false`                                                                     | Whether the cookie is a host-only cookie, (i.e. the request's host must exactly match the domain of the cookie)                                                                                                       |
| `httpOnly` | `false`                                                                     | Whether the cookie is an HTTP only cookie                                                                                                                                                                             |
| `path`     | `/`                                                                         | The cookie path                                                                                                                                                                                                       |
| `secure`   | `false`                                                                     | Whether the cookie is a secure cookie                                                                                                                                                                                 |
| `timeout`  | [`responseTimeout`](/llm/markdown/app/references/configuration.md#Timeouts) | Time to wait for `cy.setCookie()` to resolve before [timing out](#Timeouts)                                                                                                                                           |
| `sameSite` | `undefined`                                                                 | Cookie's SameSite value. If set, should be one of `lax`, `strict`, or `no_restriction`. Pass `undefined` to use the browser's default. Note: `no_restriction` can only be used if the `secure` flag is set to `true`. |

### Yields [Learn about subject management](/llm/markdown/app/core-concepts/introduction-to-cypress.md#Subject-Management)

`cy.setCookie()` yields a cookie object with the following properties:

- `domain`
- `expiry` *(if specified)*
- `hostOnly` *(if specified)*
- `httpOnly`
- `name`
- `path`
- `sameSite` *(if specified)*
- `secure`
- `value`

## Examples

### Name Value

#### Set a cookie

```javascript
cy.getCookies().should('be.empty')
cy.setCookie('session_id', '189jd09sufh33aaiidhf99d09')
cy.getCookie('session_id').should(
  'have.property',
  'value',
  '189jd09sufh33aaiidhf99d09'
)
```

## Rules

### Requirements [Learn about chaining commands](/llm/markdown/app/core-concepts/introduction-to-cypress.md#Chains-of-Commands)

- `cy.setCookie()` requires being chained off of `cy`.

### Assertions [Learn about assertions](/llm/markdown/app/core-concepts/introduction-to-cypress.md#Assertions)

- `cy.setCookie()` will only run assertions you have chained once, and will not
  [retry](/llm/markdown/app/core-concepts/retry-ability.md).

### Timeouts [Learn about timeouts](/llm/markdown/app/core-concepts/introduction-to-cypress.md#Timeouts)

- `cy.setCookie()` should never time out.

Because `cy.setCookie()` is asynchronous it is technically possible for there to
be a timeout while talking to the internal Cypress automation APIs. But for
practical purposes it should never happen.

## Command Log

***Set a cookie on the browser for testing***

```javascript
cy.getCookies().should('be.empty')
cy.setCookie('fakeCookie1', '123ABC')
cy.getCookie('fakeCookie1').should('have.property', 'value', '123ABC')
```

The commands above will display in the Command Log as:

When clicking on `setCookie` within the command log, the console outputs the
following:

## History

| Version                                                    | Changes                                                                                                                                                       |
| ---------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [12.7.0](/llm/markdown/app/references/changelog.md#12-7-0) | Support `hostOnly` option for a given domain.                                                                                                                 |
| [5.0.0](/llm/markdown/app/references/changelog.md#5-0-0)   | Removed `experimentalGetCookiesSameSite` and made `sameSite` property always available.                                                                       |
| [4.3.0](/llm/markdown/app/references/changelog.md#4-3-0)   | Added `sameSite` property when the [experimentalGetCookiesSameSite](/llm/markdown/app/references/configuration.md#Experiments) configuration value is `true`. |
| [0.16.0](/llm/markdown/app/references/changelog.md#0-16-0) | `cy.setCookie()` command added                                                                                                                                |

## See also

- [`cy.clearCookie()`](/llm/markdown/api/commands/clearcookie.md)
- [`cy.clearCookies()`](/llm/markdown/api/commands/clearcookies.md)
- [`cy.getCookie()`](/llm/markdown/api/commands/getcookie.md)
- [`cy.getCookies()`](/llm/markdown/api/commands/getcookies.md)
- [`Cypress.Cookies.debug()`](/llm/markdown/api/cypress-api/cookies.md)
