---
title: Write File
slug: /write-file
---
import Icon from "@site/src/components/icon";
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
import PartialParams from '@site/docs/_partial-hidden-params.mdx';
import PartialDevModeWindows from '@site/docs/_partial-dev-mode-windows.mdx';
In Langflow version 1.7.0, this component was renamed from **Save File** to **Write File**.
The **Write File** component creates a file containing data produced by another component.
Several file formats are supported, and you can store files in [Langflow storage](/memory), AWS S3, Google Drive, or the local file system.
To configure the **Write File** component and use it in a flow, do the following:
1. Connect [`Table`](/data-types#table), [`JSON`](/data-types#json), or [`Message`](/data-types#message) output from another component to the **Write File** component's **Input** port.
You can connect the same output to multiple **Write File** components if you want to create multiple files, save the data in different file formats, or save files to multiple locations.
2. Click **Storage Location**, and then select **Local**, **AWS**, or **Google Drive**.
If required, enter your cloud provider's credentials.
For more information, see [Configure file storage](/concepts-file-management#configure-file-storage).
3. In **File Name**, enter a file name and an optional path.
The **File Name** parameter controls where the file is saved.
It can contain a file name or an entire file path:
* **Default location**: If you only provide a file name, then the file is stored in the Langflow data directory. For example,`~/Library/Caches/langflow/data` on macOS.
* **Subdirectory**: To store files in subdirectories, add the path to the **File Name** parameter.
If a given subdirectory doesn't already exist, Langflow automatically creates it.
For example, `files/my_file` creates `my_file` in `/data/files`, and it creates the `files` subdirectory if it doesn't already exist.
* **Absolute or relative path**: To store files elsewhere in your environment or local file storage, provide the absolute or relative path to the desired location.
For example, `~/Desktop/my_file` saves `my_file` to the desktop.
Don't include an extension in the file name.
If you do, the extension is treated as part of the file name; it has no impact on the **File Format** parameter.
4. Select the desired file format, and then click **Close**.
The available **File Format** options depend on the input data type:
* `Table` can be saved to CSV (default), Excel (requires `openpyxl` [custom dependency](/install-custom-dependencies)), JSON (fallback default), or Markdown.
* `JSON` can be saved to CSV, Excel (requires `openpyxl` [custom dependency](/install-custom-dependencies)), JSON (default), or Markdown.
* `Message` can be saved to TXT, JSON (default), or Markdown.
:::warning Overwrites allowed
If you have multiple **Write File** components, in one or more flows, with the same file name, path, and extension, the file contains the data from the most recent run only.
Langflow doesn't block overwrites if a matching file already exists.
To avoid unintended overwrites, use unique file names and paths.
:::
5. To test the **Write File** component, click **Run component**, and then click **Inspect output** to get the filepath where the file was saved.
The component's literal output is a `Message` containing the original data type, the file name and extension, and the absolute filepath to the file based on the **File Name** parameter.
For example:
```text
DataFrame saved successfully as 'my_file.csv' at /Users/user.name/Library/Caches/langflow/data/my_file.csv
```
If the **File Name** contains a subdirectory or other non-default path, this is reflected in the `Message` output.
For example, a CSV file with the file name `~/Desktop/my_file` could produce the following output:
```text
DataFrame saved successfully as '/Users/user.name/Desktop/my_file.csv' at /Users/user.name/Desktop/my_file.csv
```
5. Optional: If you want to use the saved file in a flow, you must use an API call or another component to retrieve the file from the given filepath.