--- title: "Rocket Chat File Upload Recommendations" slug: "recommendations-for-file-upload" description: "Learn best practices for file uploads in Rocket Chat. Ensure secure communications, compliance, and efficient collaboration." updated: 2026-01-06T09:43:38Z published: 2026-01-06T09:43:38Z canonical: "docs.rocket.chat/recommendations-for-file-upload" --- > ## Documentation Index > Fetch the complete documentation index at: https://docs.rocket.chat/llms.txt > Use this file to discover all available pages before exploring further. # Recommendations for File Upload Rocket.Chat supports various file storage types to manage [file uploads](/v1/docs/file-upload). Each system has its strengths and limitations. This guide outlines some of these options and provides recommendations based on scalability and production requirements. To configure the file upload storage type in your workspace, visit [File Upload](/v1/docs/file-upload). > [!NOTE] > **Amazon S3** and **Google Cloud Storage** are the recommended options for file upload in Rocket.Chat. ## GridFS GridFS is a MongoDB specification for storing and retrieving large files such as images, audio, and video. While it functions like a file system, GridFS stores its data within MongoDB collections. It is designed to handle files that exceed MongoDB's document size limit of **16MB**. GridFS divides a file into smaller chunks and stores each chunk of data in a separate document, each with a maximum size of **255KB**. It uses two collections to store files: - `fs.files` stores the file’s metadata - `fs.chunks` stores the binary chunks > [!NOTE] > Visit the [GridFS documentation](https://www.mongodb.com/docs/manual/core/gridfs/) to learn more. By default, GridFS is used in Rocket.Chat for file storage because MongoDB offers this functionality with zero configuration. However, it is **not recommended for production environments** due to the high load it places on the database. GridFS can only be suitable if: - A retention policy is in place to manage file storage. - You are storing only a small number of lightweight files each week. ## File System The File System stores uploaded files directly on the local storage of the server running the Rocket.Chat instance. It is simple to configure and works well for small-scale, single-server deployments. Files are stored in a designated folder on the server's file system, and Rocket.Chat retrieves them directly as needed. ### Configuring File System storage To use File System as the storage type, navigate to **Manage** ![Screenshot 2025-12-23 130522.png](https://cdn.us.document360.io/6ae79a05-7252-45d0-96e8-8f375e07b1b2/Images/Documentation/Screenshot%202025-12-23%20130522.png) > **Administration** > **Settings** > **File Upload** and continue with the following steps : 1. Go to **General** and select **File System** as the **Storage Type**. 2. Navigate to **FileSystem** and specify a valid **System Path** on the server where files will be uploaded. For example, setting the path to `/uploads` will save files in an `uploads` directory at the root of your server. 3. Click **Save Changes** and restart the Rocket.Chat server. Uploaded files will now be saved to the specified system path. > [!NOTE] > Accessing the Rocket.Chat server to confirm the uploaded files varies based on your [deployment method](/v1/docs/deploy-rocketchat): > > - For **Docker** deployments, access the Rocket.Chat container with `docker exec -it <container-name> sh`. When scaling Rocket.Chat to multiple servers, the File System becomes challenging: - The file storage directory must be accessible to all Rocket.Chat servers. This requires setting up shared storage solutions such as Network File System (NFS). - Managing shared storage introduces additional configuration and infrastructure overhead. > [!NOTE] > **FileSystem** is recommended only when you are running a single Rocket.Chat instance.