---
title: Local File Read
description: "Pick a local file through the browser's file picker and read it into the workflow."
---

Let the person running the workflow pick a file from their computer and read it in.

## What it does

When the node runs, it opens your computer's file picker. You choose one file (or several, if allowed), and the node reads it as text, a data URL or base64.

You always choose the file yourself. A workflow can never name or open a file on its own, so the node needs no special permission. It is the reading counterpart of [Download as file](/nodes/builtin/datatransformation/downloadasfile/).

## When to use it

* Feed a CSV, JSON or text file from your disk into a workflow.
* Hand an image or PDF to a workflow without uploading it anywhere first.
* Not for unattended runs: a scheduled or background workflow cannot open a picker. Use an [Http Request](/nodes/builtin/core/http-request/) to fetch files from a URL instead.

## Inputs and settings

* **Read as**: pick *Text* for CSV, JSON, XML and plain text. Pick *Data URL* for images and PDFs, so later nodes keep the file type. *Base64* gives the raw bytes as base64 with no type prefix.
* **Accepted file types**: list extensions with a leading dot, for example `.csv,.json`. Extensions are the reliable choice here.

## Outputs

With one file, the output is a single object:

| Field | Description |
| --- | --- |
| `name` | The file name, for example `report.csv`. |
| `size` | The size in bytes. |
| `type` | The file's type, for example `text/csv`. Can be empty for unknown types. |
| `content` | The file content, read as chosen in **Read as**. |

With **Allow multiple files** on, the output is a list of these objects, so the next node runs once per file. Use `{{ $input.content }}` to pass the content on.

## Dependencies and credentials

None. This node needs no connection and has no slots for other nodes.

## Example workflow

1. Start with a [When Started](/nodes/builtin/trigger/whenstarted/) trigger and run the workflow yourself.
2. **Local File Read** with **Read as** *Text* and **Accepted file types** `.csv`.
3. [Extract From File](/nodes/builtin/datatransformation/extractfromfile/) on *Auto-detect* turns the CSV into one item per row.
4. [Limit](/nodes/builtin/datatransformation/limit/) with **Max Items** `20` keeps the first 20 rows for the next steps.

## Common issues

* **"Local File Read needs an interactive run in a Chromium-based browser (File System Access API unavailable)."** The file picker only exists in Chromium-based browsers such as Chrome or Edge. Run the workflow there.
* **"File selection cancelled."** The picker was closed without choosing a file. Run again and pick one.
* **The picker does not open on a scheduled run.** The browser only opens a picker after you click or press a key. Start the workflow yourself.
* **The picker fails when Accepted file types contains a type like `text/csv`.** Use extensions with a leading dot instead, for example `.csv`.

## Related nodes

* [Extract From File](/nodes/builtin/datatransformation/extractfromfile/): turn the picked file into items.
* [Download as file](/nodes/builtin/datatransformation/downloadasfile/): save data to a file.
* [PDF Parser](/nodes/builtin/datatransformation/pdfparser/): read text from a picked PDF.