FluentStorage is free, but powered by your donations
FluentStorage is a fully managed polycloud .NET cloud storage library, optimized for speed. It helps you interface with multiple cloud providers from a single unified API, allowing you to switch cloud providers or support multiple cloud providers without any logic changes.
It provides a single unified API for Object storage and Queue messaging across all cloud storage providers like AWS S3, AWS SQS, GCP Storage, FTP, FTPS, SFTP, Local Disk, Azure Blob, Azure Files, Azure Queue, Azure Service Bus, Azure Data Lake, Azure Key Vault, Cloudflare R2, DigitalOcean Spaces, MinIO, Wasabi, Backblaze B2, Hetzner, Vultr, MongoDB GridFS, Alibaba OSS. Each provider has its own Nuget package with zero configuration required.
It provides extensive Object manipulation commands, File uploads/downloads, File streaming/seeking, Unified path system, Object metadata, Object versioning, Object tags, Object storage tier/class, Presigned URL generation, Directory listing & Directory manipulation, File permissions/CHMOD and more.
Its API is fully asynchronous and has identical behavior across all providers. It also implements in-memory and local disk providers, so you can test on a local machine or access attached NAS/EBS drives.
It is written entirely in C#, with few external dependencies. No configuration files are required.
FluentStorage is released under the permissive MIT License, so it can be used in both proprietary and free/open source applications.
FluentStorage supports the following cloud storage providers:
| Documentation Link | Factory class | Store class | GetClient() returns |
|
|---|---|---|---|---|
| AWS S3 | AwsS3Storage |
S3Store |
AmazonS3Client |
|
| Azure Blobs | AzureBlobStore |
AzureBlobStore |
BlobServiceClient |
|
| Azure Files | AzureFilesStorage |
AzureFilesStore |
ShareServiceClient |
|
| Azure DataLake | AzureDataLakeStorage |
AzureDataLakeStore |
ExtendedSdk |
|
| GCP | GoogleCloudStorage |
GoogleCloudStore |
StorageClient |
|
| MinIO (native) | MinioStorage |
MinioStore |
MinioClient |
|
| MinIO (S3) | MinioS3Storage |
S3Store |
AmazonS3Client |
|
| Cloudflare R2 | CloudflareR2Storage |
S3Store |
AmazonS3Client |
|
| DigitalOcean Spaces | DigitalOceanSpacesStorage |
S3Store |
AmazonS3Client |
|
| Wasabi | WasabiStorage |
S3Store |
AmazonS3Client |
|
| Backblaze B2 | BackblazeB2Storage |
S3Store |
AmazonS3Client |
|
| Hetzner | HetznerStorage |
S3Store |
AmazonS3Client |
|
| Vultr | VultrStorage |
S3Store |
AmazonS3Client |
|
| MongoDB GridFS | MongoGridStorage |
MongoGridStore |
MongoClient |
|
| Alibaba OSS | AlibabaStorage |
AlibabaStore |
OssClient |
|
| FTP | FtpStorage |
FtpStore |
AsyncFtpClient |
|
| SFTP | SftpStorage |
SftpStore |
SftpClient |
|
| Local Disk | StorageFactory |
DiskStore |
IFileSystem |
To add support for a new S3-compatible provider, search for [ADD STORAGE PROVIDER] across all code files.
This table shows the API supported by IStore across various cloud and server providers.
This table shows the API supported by specific cloud providers:
Stable binaries are released on NuGet, and contain everything you need to use Cloud Storage in your .NET app.
This table shows the API and the provider-specific concept it maps to:
| Concept | AWS S3 | Azure Blob | GCP |
|---|---|---|---|
| Versioning API | Object Versions | Blob Versions | Object Generations |
| Tagging API | Object Tags | Blob Index Tags / Blob Tags |
Custom Metadata |
| Metadata API | Object Metadata | Blob Metadata | Object Metadata |
| Storage Tier | Storage Class | Access Tier | Storage Class |
| Retention API | Object Lock Retention | Immutability Policy | Retention Policy |
| Locking API | Object Lock Configuration / Legal Hold |
Legal Hold + Immutability Policy |
Object Holds |
This table shows the FluentStorage StorageTier enum and the provider-specific tier it maps to:
| Concept | AWS S3 | Azure Blob | GCP |
|---|---|---|---|
StorageTier.Standard |
STANDARD |
Hot |
STANDARD |
StorageTier.Intelligent |
INTELLIGENT_TIERING |
AutoTiering |
AUTOCLASS |
StorageTier.Nearline |
STANDARD_IA |
Cool |
NEARLINE |
StorageTier.Cold |
GLACIER_IR |
Cold |
COLDLINE |
StorageTier.Archive |
GLACIER |
Archive |
ARCHIVE |
StorageTier.DeepArchive |
DEEP_ARCHIVE |
Archive |
ARCHIVE |
FluentStorage works on .NET and .NET Standard/.NET Core.
| Platform | Binaries Folder |
|---|---|
| .NET 7.0 | net70 |
| .NET 8.0 | net80 |
| .NET 9.0 | net90 |
| .NET Standard 2.0 | netstandard2.0 |
| .NET Standard 2.1 | netstandard2.1 |
FluentStorage is also supported on these platforms: (via .NET Standard)
- Mono 4.6
- Xamarin.iOS 10.0
- Xamarin.Android 10.0
- Universal Windows Platform 10.0
Binaries for all platforms are built from a single Visual Studio Project. You will need the latest Visual Studio to build or contribute to FluentStorage.
Today, most cloud applications and services are developed against vendor-specific APIs like Amazon S3 API or Azure Blob API for cloud storage capabilities.
Using multiple vendor-specific APIs can increase your vendor lock-in, and makes your application more complex and harder to maintain. And sometimes these APIs may not offer all the functionality you need for your application. Polycloud also becomes very hard to implement.
What if we had a single, consistent API to deal with all types of cloud storage? That would solve these issues and bring more flexibility in switching cloud providers or cloud services.
Thus was born the idea for FluentStorage.
You can use a single, consistent API to interact with multiple cloud providers, where each provider is supported through its own special Nuget package.
Check the Wiki.
In 2026, we added:
- Version 8 with a massive redesign of the entire API and behaviour
- MongoDB GridFS provider using native MongoDB Driver
- MinIO provider using native Minio SDK
- Alibaba OSS provider using native Aliyun SDK
- Cloudflare R2 provider using S3-compatible SDK
- Backblaze B2 provider using S3-compatible SDK
- Hetzner provider using S3-compatible SDK
- Vultr provider using S3-compatible SDK
- Azure.Identity support for Azure Files with token credential, client secret, and managed identity authentication.
- Wiki pages per provider
- Removed unused packages: Databricks, EventHub, DataLake Gen 1, ServiceFabric
In 2025, we added:
- Azure.Identity support for Azure Blobs with token credential, client secret, and managed identity authentication.
In 2024, we added:
- DigitalOcean Spaces provider
- MinIO provider
- Wasabi provider
In 2023, we added:
- SFTP provider SSH.NET added
- FTP provider FluentFTP updated to v44
- AWS Nuget bumped to latest versions
- Wiki created for documentation
- Platform support updated to
netstandard2.0,netstandard2.1,net50,net60
- Foundatio - Caching, Messaging, Queues and Storage library with AWS, Azure and many other providers
- SlimMessageBus - Messaging library with providers like RabbitMQ, Kafka, Azure EventHub, MQTT, Redis
- ManagedCode.Storage - Storage library with AWS, Azure, GCP and other providers
FluentStorage has received major sponsorship from these generous organizations:
Microsoft Corporation
|
Has FluentStorage made a difference for you or your organization? If so, consider becoming a sponsor to help keep the project thriving. Even a small monthly contribution, like $20, can make a meaningful impact.
Special thanks to these awesome people who helped create FluentStorage!



Microsoft Corporation