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.
Every file type. One platform.
Stop managing separate services for images, video, and documents
Images
Upload, resize, crop, convert, and optimize on-the-fly
Video
HLS adaptive streaming and MP4 progressive download
Audio
Extract audio tracks or upload standalone audio files
Documents
PDFs, office docs, and any file type with CDN delivery
Private Files
Secure storage with presigned URLs—no public CDN access
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.
// No API call - pure client-sideconst 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
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
Transcode to HLS
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
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 widthrotation: 0,},});
Brand protection built in
Add watermarks during upload—no post-processing needed. Perfect for photography portfolios, user-generated content, and protecting high-value images.
Place your logo exactly where you want it
Set width as percentage or fixed pixels
Subtle branding or bold protection
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-uploadFileUpload
Drag-and-drop with progress tracking, validation, and multi-file support
<FileUploadonUpload={handleUpload}accept="image/*"maxSize={10 * 1024 * 1024}/>
AvatarUpload
Circular avatar with built-in cropping and fallback initials
<AvatarUploadsrc={user.avatarUrl}fallback={user.name}onUpload={handleAvatarChange}/>
ImageGallery
Responsive grid with lightbox, lazy loading, and CDN transforms
<ImageGalleryimages={productImages}columns={3}enableLightbox/>
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
// Upload as privateconst privateDoc = await stack0.cdn.upload({projectSlug: 'my-project',file: contractPdf,filename: 'contract.pdf',mimeType: 'application/pdf',isPrivate: true,});// Generate time-limited download URLconst downloadUrl = await stack0.cdn.getPresignedDownloadUrl({projectSlug: 'my-project',assetId: privateDoc.id,expiresIn: '24h', // 1h to 7d});// Share with recipient - expires in 24 hours
Pay for what you use
No monthly minimums per feature. Same rates on every plan.
Storage + bandwidth combined
Image resize, crop, convert
Video to HLS/MP4
Video delivery bandwidth
What typical apps pay
5GB storage, 10K transforms, no video
25GB storage, 50K transforms, product images
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.