---
title: "Storage and retention"
description: "Where Faylee stores your recordings, how to keep them in your own S3-compatible bucket, and how retention, the trash and restoring work."
canonical: https://faylee.app/docs/workspace/storage
---

# Storage and retention

Faylee stores each recording's video or screenshot and its capture data in object storage. Recording files never pass through Faylee's servers. The extension and the browser upload straight to the bucket, and the viewer reads from it with links that expire after an hour.

By default, recordings are stored in Faylee's bucket. You can connect your own bucket instead, so recordings stay in your cloud account.

## Bring your own bucket

Faylee works with any of these S3-compatible stores:

| Provider | Endpoint |
|---|---|
| Amazon S3 | Leave empty |
| Cloudflare R2 | `https://<account id>.r2.cloudflarestorage.com` |
| Backblaze B2 | `https://s3.<region>.backblazeb2.com` |
| MinIO | Your MinIO server's address, such as `https://minio.example.com` |

### What you need

- A bucket.
- An access key id and secret access key that can read, write and delete objects in that bucket, run multipart uploads, and set the bucket's CORS rules.
- The bucket's region, if your provider needs one. Faylee uses `auto` when you leave it empty, which is what R2 expects.
- The endpoint, for every provider except Amazon S3.

### Connecting it

Only workspace admins can connect buckets.

1. Open **Settings**, then **Storage**.
2. Press **Connect a bucket**.
3. Choose the **Provider**, then fill in **Bucket**, **Region**, **Endpoint**, **Access key id** and **Secret access key**.
4. Press **Connect**.

Faylee tests the bucket before saving it. It writes a small test file, reads it back and deletes it, so a wrong key or a missing permission shows up here rather than on the first upload. Then it sets the bucket's CORS rules.

The first bucket you connect stores every new recording from then on. Your secret access key is stored encrypted, and Settings shows only a hint of the access key id.

### CORS is handled for you

Browsers upload recordings to the bucket directly, in parts, and need to read each part's `ETag` header. Faylee sets the bucket's CORS rules when you connect or test it. The rule allows `GET`, `PUT` and `HEAD` from Faylee and from the extension, and exposes `ETag`. When you verify a site for the [site widget](https://faylee.app/docs/support/widget.md), Faylee adds that site's domain to the rule too.

You don't need to write CORS rules yourself. If your bucket's CORS was changed by hand and uploads fail, use **Test connection** to set it again.

### Several buckets

The Storage page lists every connected bucket, how many recordings each holds, and what it is used for. One bucket stores **New recordings**. The others are **Kept for older recordings**: recordings stay in the bucket they were uploaded to, so they keep playing after you switch.

Use the menu on a bucket's row to:

- **Store new recordings here**, which makes it the bucket for new recordings.
- **Test connection**, which runs the test again and reapplies CORS.
- **Edit** its settings. Leave the secret empty to keep the current one.
- **Remove** it. You can only remove a bucket that holds no recordings. Removing it stops Faylee from using it. Nothing in the bucket itself is deleted.

Connecting, switching and removing buckets are recorded in the [audit log](https://faylee.app/docs/workspace/security#audit-log).

## Retention

Admins can have old recordings deleted automatically.

1. Open **Settings**, then **Privacy**.
2. Under **Retention**, choose **Keep until deleted**, or **Delete after 30 days**, **90 days**, **180 days** or **365 days**.

Every night, Faylee deletes recordings older than the limit for good, with their video and capture data. They don't go to the trash first, since the limit is the workspace's decision. The audit log keeps a line for each deleted recording.

## Trash

Moving a recording to the trash takes it out of the library, and its share link stops working at once. You can move one recording from its page, or several at once from the library. Recording authors and workspace admins can move a recording to the trash.

Open **Trash** in the sidebar to see trashed recordings, with who made them and when they were moved there.

- **Restore** puts a recording back in the library, and its share link works again.
- **Delete for good** deletes the recording, its video and everything captured with it. This can't be undone.
- **Empty trash** deletes everything in the trash for good. Only workspace admins can empty the trash.

Restoring and deleting for good follow the same rule as trashing: the recording's author or a workspace admin can do it.

Recordings left in the trash are deleted for good 30 days after they were moved there. Deleting a recording for good also deletes its files from the bucket.

## Related

- [Privacy and redaction](https://faylee.app/docs/workspace/privacy.md)
- [Security and SSO](https://faylee.app/docs/workspace/security.md)
- [Sharing and embeds](https://faylee.app/docs/workspace/sharing.md)
