Client-side JavaScript application for uploading files directly to S3 buckets using multipart upload with a modern web UI.
- Client-side JavaScript: Runs entirely in the browser, pushes files directly to S3
- Multipart Upload: Efficient upload for large files (100MB chunks)
- Real-time Progress: Progress bar with upload speed and ETA
- Drag & Drop: Easy file selection with drag and drop support
- Direct S3 Upload: No backend server required - uploads straight from browser to bucket
- Conditional Writes: Prevents accidental overwrites using S3 conditional headers
- Responsive Design: Works on desktop and mobile devices
- Error Handling: Graceful permission and network error handling
Add this CORS configuration to your S3 bucket:
[
    {
        "AllowedHeaders": ["*"],
        "AllowedMethods": [
            "GET", 
            "PUT", 
            "POST", 
            "DELETE"
        ],
        "AllowedOrigins": ["https://your-domain.com"],
        "ExposeHeaders": [
            "ETag",
            "x-amz-request-id"
        ],
        "MaxAgeSeconds": 3000
    }
]Serve the HTML files using any web server or open index.html directly in your browser.
- Enter your AWS credentials
- Select region and bucket name
- Choose a file (or drag & drop)
- Click "Start Upload"
- s3:PutObject- Upload files (includes multipart operations)
- s3:PutObject- Upload files
- s3:AbortMultipartUpload- Clean up failed uploads
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:AbortMultipartUpload"
            ],
            "Resource": "arn:aws:s3:::your-bucket-name/*"
        }
    ]
}This is a pure client-side JavaScript application that uses the AWS SDK to upload files directly from the browser to your S3 bucket. The upload happens client-side without any backend server - your files go straight from your browser to S3.
- ✅ Chrome 60+
- ✅ Firefox 60+
- ✅ Safari 12+
- ✅ Edge 79+
Requires support for:
- File API
- Blob slicing
- Promises/async-await
- Drag & Drop API
- Language: Pure JavaScript (no build process required)
- AWS SDK: Loaded from CDN, uses S3 Multipart Upload API
- Part Size: 100MB chunks for efficient large file handling
- Concurrency: 3 simultaneous part uploads
- Progress Tracking: Real-time with speed and ETA calculation
- Direct Upload: Files stream from browser directly to S3 bucket