Object Storage

Meet S3

Store unlimited data with S3-compatible API. Zero egress fees, automatic replication, and native integration with Koder Edge CDN.

import boto3

s3 = boto3.client('s3',
    endpoint_url='https://s3.koder.dev',
    aws_access_key_id='KODER_ACCESS_KEY',
    aws_secret_access_key='KODER_SECRET_KEY',
)

s3.upload_file(
    'backup.tar.gz',
    'my-bucket',
    'backups/2026-03-28.tar.gz'
)
# Uploaded 2.4 GB in 8.2s

Features

Everything you need for object storage, built from the ground up.

S3-Compatible API

Drop-in replacement for AWS S3. Works with all existing S3 SDKs, CLIs, and tools — boto3, AWS CLI, rclone, Cyberduck, and more.

💰
Zero Egress Fees

No charges for data transfer out. Download your data as much as you want without surprise bills at the end of the month.

🌐
Multi-Region Replication

Automatic cross-region data replication for durability and low-latency access. Configure replication rules per bucket or prefix.

📄
Versioning

Object versioning with lifecycle policies. Recover from accidental deletes, track changes, and maintain compliance with retention rules.

🔗
Presigned URLs

Generate secure temporary access links for uploads and downloads. Perfect for sharing files without exposing credentials.

🔔
Event Notifications

Webhooks on upload, delete, and modify events. Trigger workflows, update indexes, or sync data in real time.

Lifecycle Policies

Auto-transition objects between storage tiers. Move infrequently accessed data to cold storage and auto-expire old objects.

Edge Integration

Serve objects directly via Koder Edge CDN. One-click CDN enablement per bucket with automatic cache invalidation on updates.

Upload & Download

Use any S3-compatible SDK or tool. Drop-in replacement — just change the endpoint.

  • Multipart uploads for large files
  • Server-side encryption (SSE-S3)
  • Content-type auto-detection
import boto3

s3 = boto3.client('s3',
    endpoint_url='https://s3.koder.dev')

# Upload with metadata
s3.put_object(
    Bucket='assets',
    Key='images/logo.png',
    Body=data,
    ContentType='image/png',
    Metadata={'project': 'website'}
)

# Download
obj = s3.get_object(
    Bucket='assets',
    Key='images/logo.png')

Presigned URLs

Generate temporary, secure links for uploads and downloads without exposing credentials.

  • Configurable expiration time
  • Restrict by IP, content type, or size
  • Perfect for direct browser uploads
# Generate a presigned download URL
url = s3.generate_presigned_url(
    'get_object',
    Params={
        'Bucket': 'reports',
        'Key': 'q1-2026.pdf'
    },
    ExpiresIn=3600  # 1 hour
)

# Generate a presigned upload URL
url = s3.generate_presigned_url(
    'put_object',
    Params={
        'Bucket': 'uploads',
        'Key': 'user-avatar.jpg'
    },
    ExpiresIn=900  # 15 min
)

Lifecycle & Versioning

Automate storage management with lifecycle rules and keep full history with versioning.

  • Transition between storage classes
  • Auto-expire old versions
  • Protect against accidental deletes
# Enable versioning
s3.put_bucket_versioning(
    Bucket='documents',
    VersioningConfiguration={
        'Status': 'Enabled'
    }
)

# Set lifecycle rule
s3.put_bucket_lifecycle_configuration(
    Bucket='documents',
    LifecycleConfiguration={
        'Rules': [{
            'ID': 'archive-old',
            'Status': 'Enabled',
            'Transitions': [{
                'Days': 90,
                'StorageClass': 'COLD'
            }]
        }]
    }
)

How It Compares

See how Koder S3 stacks up against the competition.

FeatureKoder S3AWS S3Cloudflare R2MinIOBackblaze B2Wasabi
S3-compatible API
Zero egress feesPartial
Multi-region replicationPartial
Object versioning
Presigned URLs
Event notificationsPartial
Lifecycle policiesPartial
Built-in CDN integrationPartial
Self-hosted / on-premise
No minimum storage duration

Frequently Asked Questions

Yes. Koder S3 implements the full S3 API specification. Just change the endpoint URL in your existing code or configuration — boto3, AWS CLI, rclone, Cyberduck, and all other S3-compatible tools work without modification.

Like R2, Koder S3 offers zero egress fees and S3 compatibility. Unlike R2, Koder S3 supports object versioning, lifecycle policies, event notifications, and can be deployed on-premise. Plus, it integrates natively with the entire Koder ecosystem.

Absolutely. Enable static website hosting on any bucket and serve it directly or through Koder Edge CDN for global low-latency delivery with automatic TLS certificates.

Koder S3 stores data with erasure coding for 99.999999999% (11 nines) durability. Multi-region replication adds geographic redundancy so your data survives even complete region failures.

Yes. The free tier includes 10 GB of storage, unlimited egress, and 1 million requests per month. No credit card required to get started.

Yes. Use rclone, AWS CLI, or the Koder S3 migration tool to sync data from any S3-compatible provider. Live migration with zero downtime is supported via continuous replication.

Ready to store without limits?

S3-compatible object storage with zero egress fees

Get Started View on Flow