Skip to content
Appwrite Storage

File storage with delivery built in_

Upload, organize, and serve images, videos, documents, and other assets through Appwrite CDN. Resize, crop, and convert formats on the fly, compress and encrypt at the bucket level, and share with granular permissions.

media / hero.png
Preview
/files/hero.png/preview?width=800&output=webp&quality=80

Original

4.2 MB

Output

186 KB

Format

WEBP

promo.mp4

24 MB

Encrypted

Cache hit

fra · 18 ms

120+ edge locations
CDN
On-the-fly delivery
Transforms
Compatible object access
S3
gzip and zstd buckets
Compression
At-rest protection
Encryption

On-the-fly image transformations

Use the preview endpoint to resize, crop, convert format, set quality, add borders, and rotate from a single upload. Pass gravity=auto and YuNet looks for a face first. If none is confident enough, U²-Net saliency returns a normalized (x, y) crop focus. Fixed gravity values still work.

Wide source photograph with the subject on the leftOriginal

YuNet, then U²-Net. File is not cropped.

Square crop using gravity=center, mostly empty fieldgravity=center
Misses the subject.
Square crop using gravity=auto, subject kept in viewgravity=autoNew
Keeps the subject.

GET/v1/storage/buckets/photos/files/golden-retriever.jpg/preview?width=400&height=400&gravity=auto&output=webp

width=400height=400gravity=autoquality=85output=webp

CDN delivery built in

Every storage file and transformed preview is served through Appwrite CDN with 120+ edge locations worldwide. Transformed images are cached in your project region first, so repeat requests skip re-processing and reach users faster.

lhr8 msiad12 msnrt16 msgru24 mssin19 mssyd21 ms

Region cache

fra

Repeat transforms stay fast

Cache hit

Transform

preview?width=640

Processed once

CDN edge

Nearest PoP

Low latency worldwide

Compression and image format optimization

Lower storage costs, cut bandwidth, and speed up page loads without a separate media pipeline. Enable gzip or zstd per bucket to compress uploads automatically, then serve WebP, AVIF, and other modern formats from the preview endpoint. Keep one original upload and optimize file size every time you deliver it.

Bucket compression

gzipzstd

Original

hero.png

842 KB

zstd
webphero.webp278 KB
avifhero.avif214 KB
jpghero.jpg391 KB
67% smallerServe WebP or AVIF without storing duplicate files.

Granular permissions at bucket and file level

Integrate Storage with Auth users, teams, and roles. Set bucket-wide defaults and per-file rules from the Console Security tab so the right people can read, create, update, or delete files.

avatars

Bucket permissions apply to all files

team:design/readteam:design/createrole:developer/update

File security

Enable per-file permissions on individual uploads.

profile-128.webp

user:paige/readuser:toby/read

File-level rules override bucket defaults for sensitive assets.

Encryption at rest

Turn on bucket encryption from Settings so new uploads are stored encrypted at rest. If files are exposed, encrypted objects stay unreadable without your project keys.

Encryption

Applies to new files in this bucket

contract.pdf1.2 MB
backup.zip4.8 MB
credentials.json12 KB
9f2c 41ab e07d 6c19
c83e 0d5f 7a22 b4e1
1b7a f9c0 34de 82f5
documentsEncrypted

Encrypt new uploads at rest so leaked files stay unreadable.

File tokens for expiring public links

Share files with token-based preview, view, and download URLs that work without session cookies. Set an expiry date or keep links open-ended for external viewers.

report-q4.pdf

Expires

Jan 31, 2027

File tokens

Share without session cookies or bucket permissions.

Public link

Preview URL

…/files/report-q4/preview?token=8f3a…c21d

AccessPreviewViewDownload

Works for external viewers without third-party cookie issues.

Bucket-based file management at scale

Organize uploads in isolated buckets with upload, download, list, and delete APIs. Browse files in the Console with search, pagination, and bulk operations.

marketing-assets

128 files · 2.1 GB

Upload
hero-banner.webp842 KB
pricing.pdf1.2 MB
team-photo.jpg3.4 MB
launch-video.mp424 MB
2 selectedDelete selected

S3-compatible object access

Connect Appwrite Storage to rclone, Terraform, and custom pipelines with a project-scoped HTTPS endpoint and SigV4-compatible signing. Copy credentials from the Console Connect tab and keep your existing S3 workflows.

~/site · zsh
$ rclone copy ./assets appwrite:marketing-assets
Transferred: 128 / 128, 100%
Elapsed time: 4.2s

$ aws s3 ls s3://marketing-assets
2026-10-03 842 KB hero-banner.webp
2026-10-03 1.2 MB pricing.pdf

S3-compatible access

SigV4

Project-scoped endpoint with SigV4 signing.

Endpointhttps://fra.cloud.appwrite.io/v1/s3
Access key6512a8f0e4c1
Secret key••••••••••••••••

Image transform wizard and presets

Build transforms visually in the Console, preview results live, and save presets for reuse across your team. Ship optimized images without writing transformation code.

Presets6

thumbnail-256

256 × 256 · webp

og-card

1200 × 630 · jpg

hero-banner

640 × 360 · webp

avatar-square

128 × 128 · avif

DesignCode
640 × 360
842 KB278 KB33% of original
Size & crop
Width (px)640
Gravitycenter
Quality & format
Style & effects

Tools built for developers and agents_

API-first by design. Use the Console, Realtime, SDKs, CLI, Terraform, MCP, and agent skills on the same project.

FAQ_

Storage is for binary files like images, videos, and PDFs. Databases store structured rows and fields. Most apps use both together: Storage for assets and Databases for metadata and relationships.

Start building with Storage_

Create a bucket, upload your first file, and generate a preview URL in minutes.