How uploads work
When you upload a file to Zipline, the following process occurs:- File reception - The server receives your file and saves it to a temporary directory
- Validation - The file is checked against quotas, size limits, and disabled extensions
- Processing - Optional processing like image compression or GPS removal is applied
- Filename generation - A unique filename is generated based on your configured format
- Storage - The file is moved to your configured datasource (local or S3)
- Database record - File metadata is saved to the database
- URL generation - A shareable URL is returned
Upload methods
Web dashboard
The easiest way to upload files is through the web interface:- Navigate to your Zipline dashboard
- Click the upload button or drag and drop files
- Configure optional settings (folder, expiration, password protection)
- Click “Upload” to complete the process
API upload
For automation and integration with tools like ShareX, use the upload API:ShareX integration
Zipline is fully compatible with ShareX. Download your ShareX configuration from the dashboard to get started.File processing
Image compression
Zipline can automatically compress images during upload to save storage space:Image compression is configured server-wide and can be customized per-upload using the
X-Zipline-Image-Compression header.- Detects image files by MIME type (
image/*) - Applies quality settings (default format is JPG)
- Stores the compressed version instead of the original
- Returns compression statistics in the API response
src/server/routes/api/upload/index.ts:110-124.
GPS metadata removal
For privacy, Zipline can automatically strip GPS data from images:Upload configuration
File naming formats
Zipline supports multiple filename generation strategies:- Random - Random alphanumeric characters (default)
- Date - Timestamp-based names using the configured date format
- UUID - Universally unique identifiers
- Name - Original filename (sanitized)
- Random words - Human-readable random words
File restrictions
Size limits
Disabled extensions
Expiration
Files can automatically delete after a specified time:1h, 24h, 7d, 30d, or never.
Configuration:
Upload options
Password protection
Protect files with a password:Max views
Automatically delete files after a certain number of views:featuresDeleteOnMaxViews is enabled).
Folder upload
Organize uploads by uploading directly to a folder:Original filename
Preserve the original filename for downloads:Chunked uploads
For large files, Zipline supports chunked (partial) uploads:Chunked uploads are handled by
/api/upload/partial and allow uploading files in multiple pieces.- Client splits large file into chunks
- Each chunk is uploaded with range headers
- Server reassembles chunks in a worker thread
- Final file is processed and stored
src/server/routes/api/upload/partial.ts for implementation details.
Quotas
Users can have upload quotas configured:- By bytes - Total storage limit (e.g., “10GB”)
- By files - Maximum number of files (e.g., 1000)
- URLs - Maximum number of shortened URLs
src/lib/api/upload/checkQuota.
Response format
Successful uploads return:Anonymous uploads
If a folder hasallowUploads enabled, anonymous users can upload to it without authentication:
FAQs
What happens if I upload a file that already exists?
What happens if I upload a file that already exists?
Each upload generates a new unique filename, so duplicate files won’t overwrite existing ones. However, if you use the
name format with the same filename, the database will create a new record but the physical file may be overwritten in storage.Can I change the file after upload?
Can I change the file after upload?
No, files are immutable after upload. You can update metadata (like password, expiration) but not the file contents. Upload a new file if you need to make changes.
What's the difference between /u and /raw routes?
What's the difference between /u and /raw routes?
The
/u route (configurable via filesRoute) may redirect to a view page if the user has embeds enabled or the file requires a password. The /raw route always returns the raw file content.How do I enable image compression?
How do I enable image compression?
Image compression is controlled by the
featuresImageCompression setting. It can be enabled server-wide or per-upload using the X-Zipline-Image-Compression header with quality percentage.