Complete Asset Platform

Images. Video. Private files.
One SDK.

Upload, transform, transcode, and stream—without stitching together Cloudinary, Mux, and S3. Type-safe SDK with edge delivery from 400+ locations.

$0.25/GB storage|$0.50/1K transforms|$0.005/min transcoding
hero-banner.png2.4 MB
0%
1
2
3
4
5
6
7
8
9
10
11
12
import { Stack0 } from '@stack0/sdk'
const stack0 = new Stack0()
const asset = await stack0.cdn.upload({
projectSlug: 'my-project',
file: fileBuffer,
filename: 'hero.png',
mimeType: 'image/png',
})
// asset.cdnUrl → 'https://cdn.stack0.io/...'
Asset Types

Every file type. One platform.

Stop managing separate services for images, video, and documents

Images

Upload, resize, crop, convert, and optimize on-the-fly

WebP/AVIF auto-convertSmart croppingWatermarksEffects

Video

HLS adaptive streaming and MP4 progressive download

360p to 4K variantsH.264 & H.265ThumbnailsAudio extraction

Audio

Extract audio tracks or upload standalone audio files

MP3, AAC, WAVExtract from videoPodcast hostingCDN delivery

Documents

PDFs, office docs, and any file type with CDN delivery

Any file typeFolder organizationTags & metadataFast delivery

Private Files

Secure storage with presigned URLs—no public CDN access

Presigned download URLs1 hour to 7 day expiryAccess logsPerfect for contracts
Image Transforms

Transform via URL parameters

No API calls needed. Generate transform URLs client-side and let the CDN edge handle processing. First request generates the image, subsequent requests serve from cache with sub-20ms latency.

Resize width, height, fit (cover, contain, fill, inside, outside)
Smart Crop attention, entropy, center—AI finds the focus
Format auto, webp, avif, jpeg, png—browser-optimized
Quality 1-100 for lossy formats, balance size vs. clarity
Effects blur, sharpen, brightness, saturation, grayscale
Rotate -360 to 360 degrees, flip horizontal/vertical
transform.ts
// No API call - pure client-side
const thumbnailUrl = stack0.cdn
.getTransformUrl(asset.cdnUrl, {
width: 400,
height: 300,
fit: 'cover',
format: 'webp',
quality: 85,
crop: 'attention', // AI focus
});
// Result: cached at 400+ edge locations

Smart snapping: dimensions auto-snap to common breakpoints (400, 800, 1200, 1600) for better cache hit rates.

Try it: Adjust transforms in real-time

GET/hero.png
PNG
Original2.4 MB
resizecropblurrotatewatermark
Video Streaming

HLS adaptive streaming. No Mux, no Vimeo.

Upload your video, we transcode to multiple quality variants and generate an HLS manifest. Your users get smooth playback at any connection speed—with your branding, not YouTube's.

Quality Variants

360p640×360
~800 Kbps
480p854×480
~1.5 Mbps
720p1280×720
~3 Mbps
1080p1920×1080
~6 Mbps
4K3840×2160
~15 Mbps

Transcode to HLS

typescript
const job = await stack0.cdn.transcode({
projectSlug: 'my-project',
assetId: 'video-asset-id',
outputFormat: 'hls',
variants: [
{ quality: '720p', codec: 'h264' },
{ quality: '1080p', codec: 'h264' },
{ quality: '4k', codec: 'h265' },
],
generateThumbnails: true,
thumbnailCount: 5,
});
// Poll for completion or use webhook

Adaptive Bitrate

Automatically switches quality based on network speed

Thumbnail Generation

Auto-generate preview frames at configurable intervals

Audio Extraction

Extract audio tracks to MP3, AAC, or WAV

upload-with-watermark.ts
const watermarked = await stack0.cdn.upload({
projectSlug: 'my-project',
file: photoBuffer,
filename: 'branded-photo.jpg',
mimeType: 'image/jpeg',
watermark: {
assetId: 'logo-asset-id',
position: 'bottom-right',
opacity: 50,
sizingMode: 'relative',
width: 15, // 15% of image width
rotation: 0,
},
});
Position options
top-left
top-center
top-right
center-left
center
center-right
bottom-left
bottom-center
bottom-right
Watermarking

Brand protection built in

Add watermarks during upload—no post-processing needed. Perfect for photography portfolios, user-generated content, and protecting high-value images.

9 position options

Place your logo exactly where you want it

Relative or absolute sizing

Set width as percentage or fixed pixels

Opacity and rotation

Subtle branding or bold protection

@stack0/elements

Ready-to-use React components

Drop-in components for common upload patterns. Built on shadcn/ui, fully customizable, with built-in CDN transform support.

npx shadcn@latest add https://stack0.io/r/file-upload

FileUpload

Drag-and-drop with progress tracking, validation, and multi-file support

typescript
<FileUpload
onUpload={handleUpload}
accept="image/*"
maxSize={10 * 1024 * 1024}
/>

AvatarUpload

Circular avatar with built-in cropping and fallback initials

typescript
<AvatarUpload
src={user.avatarUrl}
fallback={user.name}
onUpload={handleAvatarChange}
/>

ImageGallery

Responsive grid with lightbox, lazy loading, and CDN transforms

typescript
<ImageGallery
images={productImages}
columns={3}
enableLightbox
/>
Private Files

Secure storage with controlled access

Not everything belongs on a public CDN. Store contracts, reports, and sensitive documents with presigned download URLs that expire after a configurable time.

Contracts & legal docs

Share with specific recipients via time-limited URLs

User data exports

Generate GDPR exports and share securely

Premium content

Gated downloads for paid subscribers

private-file-upload.ts
// Upload as private
const privateDoc = await stack0.cdn.upload({
projectSlug: 'my-project',
file: contractPdf,
filename: 'contract.pdf',
mimeType: 'application/pdf',
isPrivate: true,
});
// Generate time-limited download URL
const downloadUrl = await stack0.cdn
.getPresignedDownloadUrl({
projectSlug: 'my-project',
assetId: privateDoc.id,
expiresIn: '24h', // 1h to 7d
});
// Share with recipient - expires in 24 hours
Pricing

Pay for what you use

No monthly minimums per feature. Same rates on every plan.

Storage
$0.25/GB

Storage + bandwidth combined

Transforms
$0.50/1K

Image resize, crop, convert

Transcoding
$0.005/min

Video to HLS/MP4

Streaming
$0.05/GB

Video delivery bandwidth

What typical apps pay

SaaS with avatars
~$3/mo

5GB storage, 10K transforms, no video

E-commerce
~$15/mo

25GB storage, 50K transforms, product images

Video course platform
~$50/mo

50GB storage, 500 min transcoding, 100GB streaming

Ready to consolidate your asset stack?

Stop juggling Cloudinary, Mux, and S3. One SDK for images, video, and private files.

Plans start at $5/month. No credit card required to explore.