diff --git a/content/en/administration/data/bucket/creation.md b/content/en/administration/data/bucket/creation.md
index 46804ffcf..97caf8b40 100644
--- a/content/en/administration/data/bucket/creation.md
+++ b/content/en/administration/data/bucket/creation.md
@@ -1,5 +1,5 @@
---
-title: "RustFS Bucket Creation"
+title: "Create a Bucket"
description: "Create buckets using the RustFS UI, rc, or the S3 API."
---
@@ -10,11 +10,11 @@ This guide explains how to create buckets using the RustFS UI, `rc`, or the S3 A
- A running RustFS instance (see [Installation Guide](../../../installation/index.md)).
- [`rc`](/operations/rc) installed and configured with an alias for the command-line workflow.
-## Using the RustFS UI
+## Use the RustFS Console
1. Log in to the RustFS Console.
2. On the Buckets page, in the top right corner, select **Create Bucket**.
-3. Enter the bucket name and click **Create** to complete bucket creation.
+3. Enter a bucket name and select **Create**.

@@ -49,4 +49,4 @@ aws s3api create-bucket \
--endpoint-url http://localhost:9000
```
-Verify the bucket creation in the RustFS Console.
+Confirm that the bucket appears in the RustFS Console.
diff --git a/content/en/administration/data/bucket/deletion.md b/content/en/administration/data/bucket/deletion.md
index b2234a810..2bb4fdaf9 100644
--- a/content/en/administration/data/bucket/deletion.md
+++ b/content/en/administration/data/bucket/deletion.md
@@ -10,14 +10,18 @@ This guide explains how to delete buckets using the RustFS UI, `rc`, or the S3 A
- Install and configure [`rc`](/operations/rc) before using the command-line workflow.
- Empty the target bucket before deleting it, or use `--force` only after reviewing the objects that will be removed.
-**Warning**: Deleting a bucket is irreversible and may break applications relying on it. Ensure you have backed up any necessary data before proceeding.
+:::warning[Deletion is permanent]
+
+Deleting a bucket is irreversible and can break applications that depend on it. Back up any data you need before you continue.
+
+:::
## Using the RustFS UI
1. Log in to the RustFS Console.
2. On the homepage, select the bucket you want to delete.
3. On the far right, select the **Delete** button.
-4. In the popup dialog, click **Confirm** to complete bucket deletion.
+4. In the confirmation dialog, select **Confirm**.

diff --git a/content/en/administration/data/object/creation.md b/content/en/administration/data/object/creation.md
index b0c5ca07b..546a1aacf 100644
--- a/content/en/administration/data/object/creation.md
+++ b/content/en/administration/data/object/creation.md
@@ -22,7 +22,7 @@ Objects are the fundamental storage units in RustFS, containing data, metadata,

-Click on an object to view its details.
+Select an object to view its details.

@@ -63,7 +63,7 @@ Verify the upload in the RustFS Console.
See [Object Deletion](./deletion.md).
-Use the following API for file deletion:
+To delete an object with the S3 API, use:
```http
DELETE /{bucketName}/{objectName} HTTP/1.1
@@ -78,4 +78,4 @@ aws s3api delete-object \
--endpoint-url http://localhost:9000
```
-You can confirm the file has been deleted on the RustFS UI.
+Confirm in the RustFS Console that the object no longer appears.
diff --git a/content/en/administration/data/object/deletion.md b/content/en/administration/data/object/deletion.md
index 5e3106239..fa53e3672 100644
--- a/content/en/administration/data/object/deletion.md
+++ b/content/en/administration/data/object/deletion.md
@@ -13,9 +13,9 @@ This guide covers object deletion.
## Using the RustFS UI
1. Log in to the RustFS Console.
-2. Select the bucket containing the file to be deleted.
+2. Select the bucket that contains the object you want to delete.
3. On the bucket page, select the file to be deleted.
-4. Click **Delete Selected Items** in the upper right corner, then click **Confirm** in the popup dialog.
+4. Select **Delete Selected Items** in the upper-right corner, and then select **Confirm**.

diff --git a/content/en/administration/data/object/multipart-upload.md b/content/en/administration/data/object/multipart-upload.md
index d4a6af66e..93877a8bd 100644
--- a/content/en/administration/data/object/multipart-upload.md
+++ b/content/en/administration/data/object/multipart-upload.md
@@ -27,7 +27,7 @@ RustFS accepts part numbers from `1` through `10000`. `ListParts` and `ListMulti

-The observed Console upload dialog supports up to 10,000 selected files and reports a 512 GB maximum for a single file. These are Console upload limits; S3 clients can have different local limits.
+The Console upload dialog supports up to 10,000 files and reports a 512 GB maximum for a single file. These are Console upload limits; S3 clients can have different local limits.
After upload starts, **Task Management** groups tasks into Pending, Processing, Completed, Failed, and Canceled states. Each processing task shows progress and a **Cancel** action. Canceling an active multipart task aborts the current part request and marks the task as canceled.
@@ -42,7 +42,7 @@ rc object copy /path/to/hello.txt rustfs/my-bucket/hello.txt
rc object stat rustfs/my-bucket/hello.txt --json
```
-:::note[rc 0.1.29 multipart boundary]
+:::note[Multipart limitations in rc 0.1.29]
`rc 0.1.29` does not expose create, upload-part, complete, list-parts, or abort multipart commands. A validated 20 MiB `rc object copy` used a single `PutObject` request rather than multipart upload. Use the Console or an S3 SDK when explicit multipart behavior is required; use `rc object stat` to verify the completed object.
diff --git a/content/en/administration/data/object/object-lock.md b/content/en/administration/data/object/object-lock.md
index 5db3468a1..c769ae64f 100644
--- a/content/en/administration/data/object/object-lock.md
+++ b/content/en/administration/data/object/object-lock.md
@@ -29,7 +29,7 @@ COMPLIANCE retention cannot be bypassed or shortened before its retain-until dat
2. Select **Create Bucket** and enter the bucket name.
3. Enable **Object Lock**. The Console also enables **Version** because Object Lock requires versioning.
4. To apply retention automatically to new object versions, enable **Retention**.
-5. Select **COMPLIANCE** or **GOVERNANCE**, enter the validity, and select **Day** or **Year**.
+5. Select **COMPLIANCE** or **GOVERNANCE**, enter the retention period, and select **Day** or **Year**.
6. Select **Create**.

@@ -48,7 +48,7 @@ rc alias set rustfs http://localhost:9000 \
--region us-east-1 --bucket-lookup path
```
-:::note[rc 0.1.29 bucket creation boundary]
+:::note[Bucket creation limitation in rc 0.1.29]
`rc bucket create --with-lock` and `--with-versioning` appear in the `rc 0.1.29` help output but return `not implemented` when executed. Create the Object Lock bucket in the Console. The upload headers shown below are supported and were validated against RustFS.
diff --git a/content/en/administration/data/object/scanner.md b/content/en/administration/data/object/scanner.md
index 6330c38f6..5bccea986 100644
--- a/content/en/administration/data/object/scanner.md
+++ b/content/en/administration/data/object/scanner.md
@@ -3,30 +3,30 @@ title: "Object Scanning"
description: "Guide to the RustFS object scanner, including design, implementation, and monitoring."
---
-This guide covers the design and implementation of the RustFS object scanner, including its integration with Erasure Coding, Scrub & Repair mechanisms, scheduling strategies, monitoring metrics, and troubleshooting.
+This guide covers the design and implementation of the RustFS object scanner, including how it works with erasure coding, scrubbing and repair, scheduling, metrics, and troubleshooting.
## Overview
The RustFS object scanner is built into the storage engine and is responsible for periodically checking object integrity and executing scheduled operations.
-Scanning tasks include disk usage statistics, lifecycle management rule evaluation, object replication execution, and triggering corrupted object self-healing.
+The scanner collects disk usage statistics, evaluates lifecycle rules, performs object replication, and triggers healing for corrupted objects.
## Architecture and Design Principles
### Scanner Architecture
The RustFS scanner uses a hash sampling mechanism, selecting one out of every 1024 objects for inspection based on object name hashing to minimize performance impact.
-The scanner is deeply integrated with the Erasure Coding module, utilizing redundant shards for online reconstruction when detecting lost or corrupted shards, ensuring high data availability and consistency.
+The scanner works with the erasure coding layer: when it detects a missing or corrupted shard, it rebuilds the shard online from the remaining redundant shards.
## Data Verification and Recovery
-The RustFS data verification mechanism checks metadata consistency and performs bit-by-bit reading and verification to discover hidden bad blocks. The object scanner detects issues like bit rot and triggers repair processes when necessary.
+The RustFS data verification mechanism checks metadata consistency and reads and verifies data bit by bit to detect latent bad sectors. The object scanner detects issues like bit rot and triggers repair processes when necessary.
## Scanning Modes and Scheduling
-RustFS supports three scanning modes: online scanning during reads, background periodic scanning, and manual full scanning, balancing performance and reliability.
-Similar to the `osd_scrub_begin_hour` configuration in Ceph, administrators can set scanning start times and frequency. For example, light verification is set to once daily by default.
+RustFS supports three scanning modes that balance performance and reliability: inline checks during reads, periodic background scans, and manual full scans.
+Similar to the `osd_scrub_begin_hour` configuration in Ceph, administrators can set scanning start times and frequency. For example, a lightweight check runs once a day by default.
## Monitoring and Metrics
-Scanner statistics include total task count, failure count, and time distribution, exposing metrics through the Prometheus data model such as `rustfs_scanner_jobs_total`, `rustfs_scanner_failures_total`, and `rustfs_scanner_duration_seconds`.
-Combined with monitoring systems, alerts can be set based on scanning failure rates and duration to promptly discover and locate potential issues at the storage or network levels.
\ No newline at end of file
+The scanner reports the total number of tasks, the number of failures, and duration distribution as Prometheus metrics, such as `rustfs_scanner_jobs_total`, `rustfs_scanner_failures_total`, and `rustfs_scanner_duration_seconds`.
+Configure alerts on scan failure rate and duration so you can detect and diagnose storage or network problems early.
\ No newline at end of file
diff --git a/content/en/administration/data/object/versioning.md b/content/en/administration/data/object/versioning.md
index b891c7567..b6a5130ba 100644
--- a/content/en/administration/data/object/versioning.md
+++ b/content/en/administration/data/object/versioning.md
@@ -25,7 +25,7 @@ Suspending versioning stops normal creation of new version IDs but preserves exi
3. Enable **Version**.
4. Select **Create**.
-### Enable or suspend an existing bucket
+### Enable or suspend versioning on an existing bucket
1. Open **Buckets**, locate the bucket, and select **Settings**.
2. Under **Data Protection**, locate **Versioning**.
@@ -94,7 +94,7 @@ rc bucket version suspend rustfs/my-bucket
rc bucket version info rustfs/my-bucket
```
-:::warning[rc 0.1.29 version deletion boundary]
+:::warning[Version deletion limitation in rc 0.1.29]
`rc object remove --versions` is listed in the `rc 0.1.29` help output but returns `not implemented`. Use the Console or an S3 SDK to permanently delete selected version IDs. Do not remove an entire version history unless you have verified retention, replication, and recovery requirements.
diff --git a/content/en/administration/data/s3-tables.md b/content/en/administration/data/s3-tables.md
index 47d1403f9..bcccb465d 100644
--- a/content/en/administration/data/s3-tables.md
+++ b/content/en/administration/data/s3-tables.md
@@ -3,7 +3,7 @@ title: "S3 Tables"
description: "Enable a RustFS table bucket and connect Iceberg clients to the built-in REST catalog."
---
-RustFS S3 Tables manages **Apache Iceberg** tables through a built-in REST catalog. Table data, manifests, and Iceberg metadata remain S3 objects in RustFS. This guide enables a dedicated table bucket and explains client connections, permissions, and maintenance boundaries.
+RustFS S3 Tables manages **Apache Iceberg** tables through a built-in REST catalog. Table data, manifests, and Iceberg metadata remain S3 objects in RustFS. This guide shows how to enable a dedicated table bucket and explains client connections, permissions, and maintenance limits.
:::note[Preview and version scope]
diff --git a/content/en/administration/index.md b/content/en/administration/index.md
index d2f55515c..51cc9aaf6 100644
--- a/content/en/administration/index.md
+++ b/content/en/administration/index.md
@@ -12,6 +12,6 @@ Use this section to manage RustFS through the Console, administer buckets and ob
- [S3 Tables](/administration/data/s3-tables) covers table buckets and the built-in Iceberg REST catalog.
- [Protocol Support](./protocols/s3.md) covers S3, WebDAV, FTPS, and SFTP access.
- [CORS Configuration](./cors/index.md) covers cross-origin access to RustFS services.
-- [Virtual-Host Access](/integration/virtual) covers domain-based S3 addressing.
+- [Virtual-hosted–style requests](/integration/virtual) cover domain-based S3 addressing.
For identity, encryption, transport security, and auditing, continue with [Security & Compliance](/security-compliance).
diff --git a/content/en/administration/protocols/s3.md b/content/en/administration/protocols/s3.md
index 0148cd28b..cb7d2f2b5 100644
--- a/content/en/administration/protocols/s3.md
+++ b/content/en/administration/protocols/s3.md
@@ -22,7 +22,7 @@ RustFS covers the common S3 data plane used by applications, backup tools, and S
| Objects | Put, get, head, copy, delete, multi-delete, range reads, conditional requests, and user metadata |
| Listing | `ListObjects`, `ListObjectsV2`, prefixes, delimiters, markers, and pagination |
| Large objects | Create, upload, copy, list, complete, and abort multipart uploads |
-| Data management | Versioning, lifecycle rules, bucket and object tags, checksums, and object lock |
+| Data management | Versioning, lifecycle rules, bucket and object tags, checksums, and Object Lock |
| Access control | IAM credentials and policies, bucket policies, public access block, and presigned GET/PUT URLs |
| Integration | CORS, bucket notifications, replication configuration, and server-side encryption workflows |
diff --git a/content/en/developer/integration/others/index.md b/content/en/developer/integration/others/index.md
index 65a45a2de..02b8e1e08 100644
--- a/content/en/developer/integration/others/index.md
+++ b/content/en/developer/integration/others/index.md
@@ -8,7 +8,7 @@ Integration guides that do not fit the other categories.
## Guides
- [capo (Python)](./capo.md) — connect the community-driven capo SDK to RustFS with synchronous or asynchronous clients.
-rclone](./rclone.md) — sync, mount, and serve RustFS buckets from the command line.
+- [rclone](./rclone.md) — sync, mount, and serve RustFS buckets from the command line.
- [tusd](./tusd.md) — receive resumable uploads into a RustFS bucket over the tus protocol.
- [JuiceFS](./juicefs.md) — mount a POSIX filesystem backed by a RustFS bucket.
- [Nextcloud](./nextcloud.md) — use RustFS as S3 external storage for Nextcloud files.
diff --git a/content/en/developer/mcp.md b/content/en/developer/mcp.md
index fd997b019..12ac3b370 100644
--- a/content/en/developer/mcp.md
+++ b/content/en/developer/mcp.md
@@ -1,15 +1,15 @@
---
title: "RustFS MCP"
-description: "RustFS MCP Usage Guide"
+description: "Connect AI assistants to RustFS object storage with the RustFS MCP server."
---
-**RustFS MCP Server** is a high-performance [Model Context Protocol (MCP)](https://www.anthropic.com/news/model-context-protocol) server that provides AI/LLM tools with seamless access to S3-compatible object storage operations. Built with Rust for performance and security, it enables AI assistants like Claude Desktop to interact with cloud storage through standardized protocols.
+**RustFS MCP Server** is a [Model Context Protocol (MCP)](https://www.anthropic.com/news/model-context-protocol) server that gives AI assistants, such as Claude Desktop, access to S3-compatible object storage.
### What is MCP?
The Model Context Protocol is an open standard that enables AI applications to establish secure, controlled connections with external systems. This server acts as a bridge between AI tools and S3-compatible storage services, providing structured access to file operations while maintaining security and observability.
-## ✨ Features
+## Features
### Supported S3 Operations
@@ -128,7 +128,7 @@ rustfs-mcp --log-level debug --region us-west-2
### Using with Docker
-[RustFS MCP officially provides a Dockerfile](https://github.com/rustfs/rustfs/tree/main/crates/mcp) that can be used to build container images for using RustFS MCP.
+RustFS MCP provides an [official Dockerfile](https://github.com/rustfs/rustfs/tree/main/crates/mcp) that you can use to build a container image.
```bash
# Clone RustFS repository code
@@ -138,11 +138,11 @@ git clone https://github.com/rustfs/rustfs.git
docker build -f crates/mcp/Dockerfile -t rustfs/rustfs-mcp .
```
-After successful build, you can configure it in the MCP configuration of AI IDEs.
+After the build succeeds, add the server to your IDE's MCP configuration.
#### Configuring MCP in AI IDEs
-Currently, mainstream AI IDEs such as Cursor, Windsurf, Trae, etc. all support MCP. For example, in Trae, add the following content to the MCP configuration (**MCP --> Add**):
+Many AI IDEs, such as Cursor, Windsurf, and Trae, support MCP. For example, in Trae, add the following content to the MCP configuration (**MCP --> Add**):
```json
{
@@ -174,23 +174,23 @@ Currently, mainstream AI IDEs such as Cursor, Windsurf, Trae, etc. all support M
}
```
-> `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY` are RustFS access keys. You can refer to the [Access Key Management chapter](../security-compliance/iam/access-token.md) for creation.
+> `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY` are RustFS access keys. To create them, see [Access Key Management](../security-compliance/iam/access-token.md).
-If added successfully, you can list the [available tools](#️-available-tools) on the MCP configuration page.
+If the server is added successfully, the MCP configuration page lists its [available tools](#️-available-tools).
-
+
-In Trae, you can use the corresponding tools by entering the corresponding prompts. For example, in Trae's chat dialog, enter:
+To invoke an MCP tool in Trae, enter a prompt in the chat. For example:
```text
Please help me list the buckets in the current rustfs instance, thank you!
```
-Returns the following response:
+Trae returns the following response:

-Trae uses **Builder with MCP** mode, calling the `list_buckets` tool to list all buckets in the configured RustFS instance. The same applies to calls to other tools.
+Trae uses **Builder with MCP** mode, calling the `list_buckets` tool to list all buckets in the configured RustFS instance. Other tools work the same way.
## 🛠️ Available Tools
diff --git a/content/en/developer/sdk/go.md b/content/en/developer/sdk/go.md
index b40cab279..1652d6ccd 100644
--- a/content/en/developer/sdk/go.md
+++ b/content/en/developer/sdk/go.md
@@ -1,9 +1,9 @@
---
-title: "Golang SDK Guide"
+title: "Go SDK Guide"
description: "Use the AWS SDK for Go v2 to operate on RustFS instances, including creating and deleting buckets and objects."
---
-RustFS ships no first-party Go SDK — it is fully S3-compatible, so you use the official AWS SDK for Go v2 configured to point at your RustFS server. Through the SDK, you can operate on RustFS, including creating and deleting buckets/objects, uploading and downloading files, etc.
+RustFS ships no first-party Go SDK — it is fully S3-compatible, so you use the official AWS SDK for Go v2 configured to point at your RustFS server. With the SDK, you can create and delete buckets, and upload and download objects.
## Prerequisites
@@ -104,7 +104,7 @@ Buckets:
You can now perform bucket and object operations. The snippets below run inside the `main` function above, reusing `client` and `ctx`.
-## Create Bucket
+## Create a bucket
```go
_, err = client.CreateBucket(ctx, &s3.CreateBucketInput{
diff --git a/content/en/developer/sdk/index.md b/content/en/developer/sdk/index.md
index f57b4164b..c67e66723 100644
--- a/content/en/developer/sdk/index.md
+++ b/content/en/developer/sdk/index.md
@@ -1,43 +1,41 @@
---
-title: "RustFS SDK Overview"
+title: "SDKs"
description: "Overview of supported S3 SDKs for RustFS."
---
-RustFS is a distributed object storage system fully compatible with the S3 protocol. Users can:
+RustFS is a distributed object storage system fully compatible with the S3 protocol. You can:
-- Manage RustFS through the Console management interface.
+- Manage RustFS in the Console.
- Manage RustFS through S3 clients.
-- Implement object storage operations and management on the business side through SDKs.
+- Use an S3 SDK to manage buckets and objects from your application.
-Currently, the SDKs provided by RustFS include:
+The following guides explain how to use S3 SDKs with RustFS:
- [Java SDK](./java.md)
- [JavaScript SDK](./javascript.md)
- [Python SDK](./python.md)
- [Rust SDK](./rust.md)
- [TypeScript SDK](./typescript.md)
-- [Golang SDK](./go.md)
+- [Go SDK](./go.md)
## Terminology
-Amazon S3 (Simple Storage Service) was the first widely adopted object storage service. Its API has become the de facto standard for object storage. In this documentation, "S3" refers to the protocol.
+Amazon Simple Storage Service (Amazon S3) was the first widely adopted object storage service. Its API has become the de facto standard for object storage. In this documentation, "S3" refers to the protocol.
## SDK Recommendations
We recommend using the official AWS S3 SDKs. These SDKs are mature, well-maintained, and highly optimized.
-If you have a familiar and trusted SDK from a vendor, you can use it.
+You can also use a vendor SDK you know and trust, provided it supports the S3 operations you need.
Some third-party SDKs may have non-standard implementations. We recommend avoiding SDKs that are not strictly S3-compliant.
## Compatibility with MinIO SDKs
-Yes, RustFS is fully compatible with MinIO SDKs.
+RustFS is fully compatible with the MinIO SDKs.
-If you are using MinIO SDKs, you can modify the Endpoint, AK, and SK to be directly compatible with RustFS.
+To connect a MinIO SDK to RustFS, set the endpoint, access key, and secret key to your RustFS values.
## Handling Incompatible SDKs
-If you encounter an SDK that does not support standard S3, MinIO, or RustFS:
-
-We recommend switching to a standard AWS S3 SDK.
+If an SDK does not work with standard S3, MinIO, or RustFS, we recommend switching to a standard AWS S3 SDK.
diff --git a/content/en/developer/sdk/java.md b/content/en/developer/sdk/java.md
index 938a7f166..982873e0f 100644
--- a/content/en/developer/sdk/java.md
+++ b/content/en/developer/sdk/java.md
@@ -46,7 +46,7 @@ Add AWS SDK dependencies in `pom.xml`:
```
-> Recommend using AWS SDK v2, which has more complete features and supports async, reactive, and other patterns.
+We recommend AWS SDK for Java v2, which is more complete and supports asynchronous and reactive programming.
---
@@ -133,14 +133,14 @@ Deleted hello.txt
---
-## 3. Common Issues and Troubleshooting
+## 3. Troubleshooting
| Issue | Cause | Solution |
| -------------------------------------- | ------------------------------------ | ----------------------------------------- |
| `S3Exception: 301 Moved Permanently` | Path-style not enabled or region error | Set `.forcePathStyle(true)` and use region `us-east-1` |
| `ConnectException: Connection refused` | RustFS not started or incorrect port | Check RustFS status and port |
-| `403 Forbidden` | AccessKey / SecretKey error | Check authentication configuration |
-| Upload fails with no response | SDK defaults to HTTPS, RustFS only supports HTTP (or needs certificates) | Use `http://` address and configure `endpointOverride` |
+| `403 Forbidden` | Incorrect access key or secret key | Check your credentials |
+| Upload fails with no response | The SDK defaults to HTTPS, and RustFS only supports HTTP (or needs certificates) | Use an `http://` address and set `endpointOverride` |
---
@@ -148,38 +148,38 @@ Deleted hello.txt
### 4.1 Maven Package and Run
-Package project:
+Package the project:
```bash
mvn clean package
```
-Execute:
+Run it:
```bash
java -cp target/rustfs-java-s3-demo-1.0-SNAPSHOT.jar com.example.RustfsS3Example
```
-### 4.2 RustFS Configuration Recommendations
+### 4.2 Recommended RustFS settings
-* Ensure SSL validation is disabled when service uses HTTP protocol.
+* If RustFS is serving plain HTTP, disable TLS certificate validation in the SDK.
* Enable CORS support (if used for web frontend).
-* Recommend setting limits like `max_object_size` and `max_part_size` to prevent large file transfer failures.
+* We recommend setting limits such as `max_object_size` and `max_part_size` to prevent large-file transfer failures.
---
The following advanced examples cover:
* Presigned URL generation and usage
-* Multipart Upload complete process
+* The complete multipart upload workflow
---
-## 5. Java Advanced Features Examples
+## 5. Advanced examples
### 5.1 Generate and Use Presigned URLs
-> Presigned URLs allow clients to temporarily access private objects without exposing credentials, widely used for browser direct upload or download file scenarios.
+Presigned URLs give clients temporary access to private objects without exposing credentials. They are commonly used for direct uploads and downloads from a browser.
#### 5.1.1 Generate Download Link (GET)
@@ -229,11 +229,11 @@ System.out.println("Presigned URL: " + presignedRequest.url());
Presigned URL: http://localhost:9000/my-bucket/hello.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&...
```
-> 🔗 Open the link in browser to access the object.
+Open the URL in a browser to access the object.
#### 5.1.2 Upload Presigned URL (PUT)
-Similarly, you can also generate upload URLs:
+You can also generate upload URLs:
```java
import software.amazon.awssdk.services.s3.model.PutObjectRequest;
@@ -259,7 +259,7 @@ System.out.println("Upload URL: " + presignedPut.url());
### 5.2 Implement Multipart Upload
-> Multipart Upload is the recommended way for large file uploads, enabling resume from breakpoint during network fluctuations.
+Multipart upload is the recommended way to upload large files. If the network is interrupted, you can retry failed parts instead of restarting the whole upload.
The examples below reuse the `s3` client from section 2 and need these additional imports:
diff --git a/content/en/developer/sdk/javascript.md b/content/en/developer/sdk/javascript.md
index f010b46fa..108d5de15 100644
--- a/content/en/developer/sdk/javascript.md
+++ b/content/en/developer/sdk/javascript.md
@@ -3,11 +3,11 @@ title: "JavaScript SDK Guide"
description: "Use the official AWS SDK for JavaScript v3 with RustFS."
---
-## I. Overview
+## Overview
RustFS ships no first-party JavaScript SDK — it is S3-compatible, so you use the official AWS SDK for JavaScript (v3) configured to point at your RustFS server. This guide shows how to connect to RustFS and perform common object storage operations.
-## II. Prerequisites
+## Prerequisites
* Node.js 18 or later
* A running RustFS instance (see the [Installation Guide](../../installation/index.md)) — the S3 API listens on port `9000`, the Console on port `9001`
@@ -19,9 +19,9 @@ If you did not set credentials at install time, the server defaults to `rustfsad
:::
-### 2.1 SDK Installation
+### Install the SDK
-Install the required AWS SDK v3 modules with NPM:
+Install the required AWS SDK v3 modules with npm:
```bash
npm install @aws-sdk/client-s3 @aws-sdk/s3-request-presigner
@@ -31,7 +31,7 @@ The examples below use ES modules (`import`). Set `"type": "module"` in your `pa
---
-## III. Initializing the Client
+## Initialize the client
The following is a complete, runnable script. Replace `localhost` with your server's IP address if RustFS runs on another machine, and fill in your own access keys:
@@ -67,7 +67,7 @@ All snippets below reuse this `s3` client.
---
-## IV. Basic Operations
+## Basic operations
### 4.1 Create Bucket
@@ -167,11 +167,11 @@ File deleted
---
-## V. Advanced Features
+## Advanced features
### 5.1 Generate Presigned URLs
-> Allows frontend or third parties to use temporary links for uploading/downloading files
+Presigned URLs let browser clients or third parties upload or download objects through temporary links.
#### Download (GET)
@@ -275,11 +275,11 @@ Multipart upload completed
---
-## VI. Common Issues and Notes
+## Troubleshooting
| Problem | Cause | Solution |
| --------------------------- | -------------------- | --------------------------------------- |
-| SignatureDoesNotMatch | Wrong signature version | JS SDK v3 uses v4 by default, ensure RustFS supports v4 |
+| SignatureDoesNotMatch | Signature version mismatch | AWS SDK for JavaScript v3 uses Signature Version 4 by default. Confirm that RustFS accepts SigV4. |
| EndpointConnectionError | Endpoint address misconfigured or not started | Check if RustFS address is accessible |
| NoSuchKey | File does not exist | Check if `Key` is spelled correctly |
| InvalidAccessKeyId / Secret | Credentials misconfigured | Check `accessKeyId` / `secretAccessKey` configuration |
@@ -287,9 +287,9 @@ Multipart upload completed
---
-## VII. Appendix: Frontend Upload Adaptation
+## Appendix: Browser uploads
-Using presigned URLs allows browsers to upload files directly without passing AccessKey.
+With presigned URLs, browsers can upload objects directly without access to your credentials.
Frontend (HTML+JS) upload example:
diff --git a/content/en/developer/sdk/other.md b/content/en/developer/sdk/other.md
index 4b4380965..9d1152761 100644
--- a/content/en/developer/sdk/other.md
+++ b/content/en/developer/sdk/other.md
@@ -1,43 +1,43 @@
---
title: "Other SDKs"
-description: "This article mainly explains the usage of various other language SDKs in RustFS."
+description: "Learn how to connect to RustFS from languages without an official AWS SDK."
---
-If AWS S3 doesn't officially support your language, you can adopt the following strategies to integrate with RustFS:
+If AWS does not provide an official SDK for your language, you can use one of the following approaches to integrate with RustFS:
-## 1. Use HTTP Interface Direct Requests (Based on S3 API Protocol)
+## 1. Send HTTP requests directly to the S3 API
-The S3 protocol is a standard RESTful API. You can encapsulate access logic yourself using any language that supports HTTP requests (such as C, Rust, Lua, Erlang).
+The S3 protocol is a standard RESTful API. You can implement the client logic yourself in any language that can send HTTP requests (such as C, Rust, Lua, or Erlang).
-### Key points include:
+### Key steps
-* **Signature Algorithm**: Implement AWS Signature Version 4 signature (more complex)
-* **Construct correct Headers and Canonical Request**
-* **Use HTTPS/HTTP client to send requests**
+* **Request signing**: Implement AWS Signature Version 4 (the most complex part).
+* **Headers and canonical request**: Build the canonical request and the required headers.
+* **HTTP client**: Send the signed request with an HTTP or HTTPS client.
-👉 Recommended to reference open-source project signature implementations, for example:
+We recommend consulting existing open-source implementations of request signing, such as:
* [https://docs.aws.amazon.com/general/latest/gr/sigv4-signed-request-examples.html](https://docs.aws.amazon.com/general/latest/gr/sigv4-signed-request-examples.html)
---
-## 2. Call CLI Tools or Middleware Services of Existing SDKs
+## 2. Use the AWS CLI or a service built on an existing SDK
If you don't want to implement signatures yourself, you can:
-### 2.1. Use AWS CLI tools with existing language support:
+### 2.1. Call the AWS CLI
-For example, call through Shell:
+For example, run the following command from your application using a shell:
```bash
aws s3 cp local.txt s3://mybucket/myfile.txt --endpoint-url http://rustfs.local:9000
```
-Or write a simple relay service using Node.js/Python SDK, and your language uploads/downloads by calling this service.
+Alternatively, build a small relay service with an SDK for Node.js or Python, then call it from your application to upload or download objects.
-### 2.2. Set up a Proxy (such as Flask, FastAPI, Express)
+### 2.2. Run a proxy service (for example, Flask, FastAPI, or Express)
-Let clients that don't support S3 call your encapsulated HTTP API:
+Expose an HTTP API that clients without S3 support can call:
```http
POST /upload -> Service internally calls SDK to upload objects to RustFS
@@ -48,31 +48,31 @@ GET /presigned-url -> Generate presigned URL for frontend/client use
## 3. Find Third-Party Community SDKs
-Although AWS doesn't have official SDKs, some language communities have developed unofficial S3 clients. For example:
+For languages without an official AWS SDK, look for community-maintained S3 clients. For example:
* Haskell: `amazonka-s3`
* Rust: `rusoto` (deprecated) or `aws-sdk-rust`
-* OCaml: May implement through `cohttp` yourself
-* Delphi: Has commercial libraries supporting S3 protocol
+* OCaml: Build your own client on top of `cohttp`
+* Delphi: Commercial libraries with S3 support are available
Community SDKs vary greatly in stability, so you should evaluate activity, documentation, and compatibility before use.
---
-## 4. Delegate Core Upload Logic to Platform Hosting
+## 4. Upload directly from clients with presigned URLs
For example:
-* Delegate frontend (Web/Mobile) upload tasks to browser or App side execution (using presigned URLs)
-* Backend uses Node.js/Python/Go and other proxies to implement upload logic
+* Use presigned URLs to upload directly from a browser or mobile app.
+* Implement the upload logic in a backend service (for example, Node.js, Python, or Go)
---
-## Summary Recommendations
+## Choose an approach
-| Scenario | Recommended Solution |
+| Situation | Recommended approach |
| ------------- | ---------------------------------- |
-| Need complete control/embedded environment | Implement Signature V4 self-signing |
-| Weak language support but has Shell | Call upload through AWS CLI |
-| Can deploy relay service | Use Python/Node to build S3 API gateway |
+| You need full control, or you target an embedded environment | Implement SigV4 signing yourself |
+| Limited SDK support, but a shell is available | Upload with the AWS CLI |
+| You can deploy a relay service | Build a small S3 gateway with Python or Node.js |
| Frontend upload | Use presigned URLs |
diff --git a/content/en/developer/sdk/python.md b/content/en/developer/sdk/python.md
index 672504524..f239d1d1d 100644
--- a/content/en/developer/sdk/python.md
+++ b/content/en/developer/sdk/python.md
@@ -204,7 +204,7 @@ curl -X PUT --upload-file /path/to/hello.txt "http://localhost:9000/my-bucket/up
### 5.2 Multipart Upload
-Suitable for files larger than 10 MB, allows manual control of each part.
+Use multipart upload for files larger than 10 MB when you need control over each part.
```python
file_path = 'largefile.bin'
@@ -260,13 +260,13 @@ Multipart upload complete.
---
-## 6. Common Issue Troubleshooting
+## 6. Troubleshooting
| Issue | Cause | Solution |
| ------------------------- | ----------------- | -------------------------------------------------------------- |
| `SignatureDoesNotMatch` | Not using v4 signature | Set `signature_version='s3v4'` |
| `EndpointConnectionError` | Wrong RustFS address or service not started | Check endpoint and RustFS service status |
-| `AccessDenied` | Wrong credentials or insufficient permissions | Check AccessKey/SecretKey or bucket policies |
+| `AccessDenied` | Wrong credentials or insufficient permissions | Check the access key, secret key, and bucket policies |
| `PermanentRedirect` / wrong bucket URL | Path-style not enabled | Set `s3={'addressing_style': 'path'}` in the `Config` |
---
diff --git a/content/en/developer/sdk/rust.md b/content/en/developer/sdk/rust.md
index 9d8181348..47b1f3056 100644
--- a/content/en/developer/sdk/rust.md
+++ b/content/en/developer/sdk/rust.md
@@ -1,9 +1,9 @@
---
title: "Rust SDK Guide"
-description: "Operate RustFS instances through the AWS SDK for Rust, including creation and deletion of buckets and objects."
+description: "Use the AWS SDK for Rust to create and delete buckets and objects in RustFS."
---
-RustFS ships no first-party Rust client crate — it is fully S3-compatible, so you use the official AWS SDK for Rust (`aws-sdk-s3`) configured to point at your RustFS server. Through the SDK, you can operate RustFS, including creation and deletion of buckets/objects, file upload and download, etc.
+RustFS ships no first-party Rust client crate — it is fully S3-compatible, so you use the official AWS SDK for Rust (`aws-sdk-s3`) configured to point at your RustFS server. With the SDK, you can create and delete buckets and upload, download, and delete objects.
## Prerequisites
diff --git a/content/en/developer/sdk/typescript.md b/content/en/developer/sdk/typescript.md
index d26b7a938..bf78c7cd4 100644
--- a/content/en/developer/sdk/typescript.md
+++ b/content/en/developer/sdk/typescript.md
@@ -1,14 +1,14 @@
---
-title: "RustFS TypeScript SDK Usage Guide"
+title: "TypeScript SDK Guide"
description: "Operate RustFS from TypeScript with the AWS SDK for JavaScript v3, including creation and deletion of buckets and objects."
---
-RustFS ships no first-party TypeScript SDK — it is fully S3-compatible, so you use the official AWS SDK for JavaScript v3 (which ships its own TypeScript type definitions) configured to point at your RustFS server. Through the SDK, you can operate RustFS, including creation and deletion of buckets/objects, file upload and download, etc.
+RustFS ships no first-party TypeScript SDK — it is fully S3-compatible, so you use the official AWS SDK for JavaScript v3 (which includes TypeScript type definitions) configured to point at your RustFS server. With the SDK, you can create and delete buckets, and upload and download objects.
## Prerequisites
- Node.js 18 or later (the examples use ES modules — set `"type": "module"` in your `package.json`)
-- An available RustFS instance (refer to [Installation Guide](../../installation/index.md) for installation) — the S3 API listens on port `9000`, the Console on port `9001`
+- A running RustFS instance (see the [Installation Guide](../../installation/index.md)) — the S3 API listens on port `9000`, the Console on port `9001`
- Access keys, set at install time via the `RUSTFS_ACCESS_KEY` / `RUSTFS_SECRET_KEY` environment variables (refer to [Access Key Management](../../security-compliance/iam/access-token.md) for creation)
:::tip[Local test]
diff --git a/content/en/index.mdx b/content/en/index.mdx
index da087cfc6..aa0e7f4ec 100644
--- a/content/en/index.mdx
+++ b/content/en/index.mdx
@@ -6,8 +6,8 @@ description: "Install RustFS on Linux, containers, Kubernetes, macOS, or Windows
- RustFS is a distributed object storage system written in Rust and built
- for S3-compatible workloads. This documentation covers installation,
+ RustFS is a distributed, S3-compatible object storage system written in Rust.
+ This documentation covers installation,
administration, security, and operations for RustFS clusters.