Storage
Secure, Scalable File StorageStore and manage files of any size with automatic chunking, powerful image transformations, and flexible permissions. Built for performance and scale.

Upload anything.
Store everything.

From profile pictures to 4K videos. 5MB or 5GB. We handle the chunking, compression, and delivery automatically.
.jpg
.png
.pdf
.mp4
.webp
.gif
.zip
.svg
+ more
All file types supported. No restrictions, no limits.
Upload

Chunked automatically

Files over 5MB are automatically split into chunks. Resumable if connection drops. Works from browser, server, or mobile.
// Just pass the file - we handle the rest
const file = input.files[0];

await nx.storage.createFile({
  bucketId: 'uploads',
  fileId: ID.unique(),
  file: file  // 5MB or 5GB, doesn't matter
});
Transform

On-the-fly processing

Resize, crop, convert formats. All via URL parameters. Original stays untouched. Results are cached.
// Transform images on demand
const url = nx.storage.getFilePreviewURL({
  bucketId: 'photos',
  fileId: 'hero.jpg',
  width: 1200,
  quality: 90,
  output: 'webp'  // Auto-convert to WebP
});

Global CDN included

Every file is automatically distributed across our global CDN. Low latency downloads for users anywhere in the world. No setup required.
<50msFirst byte
99.9%Uptime SLA

Organize with buckets

Like folders, but smarter. Each bucket gets its own permissions, file restrictions, and security settings.
2permission levels (bucket + file)
buckets per project
Create a bucket with restrictions
await nx.storage.createBucket({
  bucketId: ID.unique(),
  name: 'Avatars',
  maximumFileSize: 5000000,     // 5MB max
  allowedFileExtensions: [
    'jpg', 'png', 'webp'        // Images only
  ],
  fileSecurity: true,            // Per-file permissions
  encryption: true               // Encrypt at rest
});
Access control

Public, private, or custom permissions. Lock down at bucket or file level.

File restrictions

Limit by size and type. Only accept what your app needs.

Encryption

Enable encryption for sensitive files. Automatic at rest.

Compression

Optional compression to save bandwidth and storage.

Image transformations
via URL

No image processing server needed. Just add parameters to the URL. Resize, crop, convert formats - all cached automatically.
Resize on-the-fly

?width=800

Add width or height params. Images scale automatically while preserving aspect ratio.
width=400height=300gravity=center
// Original image URL
getFileViewURL({
  bucketId: 'photos',
  fileId: 'image.jpg'
})

// Add transformations
getFilePreviewURL({
  bucketId: 'photos',
  fileId: 'image.jpg',
  width: 800,        // Resize to 800px wide
  gravity: 'center'  // Crop from center
})
// Convert to WebP for smaller size
getFilePreviewURL({
  bucketId: 'photos',
  fileId: 'large.png',  // PNG source
  output: 'webp',       // Convert to WebP
  quality: 90           // Keep quality high
})

// Result: 70% smaller file size
Format conversion

?output=webp

Convert between formats instantly. Perfect for modern formats like WebP and AVIF.
output=webpoutput=avifquality=90
Borders & styling

?borderRadius=100

Add borders, rounded corners, backgrounds. Perfect for avatars and thumbnails.
borderRadius=20borderWidth=5borderColor=000
// Create circular avatar
getFilePreviewURL({
  bucketId: 'avatars',
  fileId: 'user.jpg',
  width: 200,
  height: 200,
  borderRadius: 100,  // Fully rounded
  borderWidth: 4,
  borderColor: '3B82F6'
})

All transformations are cached

First request processes the image. Every request after that is served from cache - both on our CDN and in browsers. Fast and efficient by default.

Start Simple.
Scale your way.

Start building
Learn more
© 2025 Nuvix. All rights reserved.