---
title: Readwise / Reader
description: Save highlights to Readwise (batch) and full articles to Reader, carrying source URL, title and author.
---

Save highlights to [Readwise](https://readwise.io) and whole articles to [Reader](https://readwise.io/read), with their source, title and author.

Pick a saved connection in the **Credential** field, or create one from there. It signs in with a Bearer Token.

## What it does

The node has two parts (**Resource**), each with one operation:

* **Readwise (Highlights) → Save highlights**: turns the incoming items into highlights and sends them all to Readwise in one go. Each highlight carries its source page, title and author when known.
* **Reader (Articles) → Save document**: adds a page to your Reader library. Give it the page's HTML to save exactly what you captured, or just the **URL** and let Reader fetch the page.

For highlights, each field you fill applies to every highlight in the run. A field you leave empty is read from each incoming item instead:

| Setting | Read from the item when empty |
| --- | --- |
| **Highlight text** | `text`, `highlight`, `content`, `selection` or `quote` |
| **Title** | `title` or `source_title` |
| **Author** | `author` or `byline` |
| **Source URL** | `source_url`, `sourceUrl`, `url` or `link` |
| **Note**, **Location**, **Highlighted at** | `note`, `location`, `highlighted_at` or `highlightedAt` |

Items without any highlight text are skipped.

## When to use it

* Send the sentence you highlighted on a page to Readwise, linked to the page.
* Save quotes picked out by an AI node from a long article, all at once.
* Save the article you are reading to Reader, with a summary and tags.
* Archive a page's captured HTML in Reader before it changes or disappears.

To keep plain bookmarks instead, use [Raindrop](/nodes/builtin/integration/raindrop/).

## Inputs and settings

Call the Readwise / Reader API yourself with the HTTP Request node, and pick the same connection in its **Credential** field.

* **Highlighted at** is a date and time such as `2026-09-10T14:30:00Z`.
* **Tags** (Reader) is one text with tags separated by commas, for example `ai, research, to-read`.
* In **Save document**, **Title** and **Author** are only taken from these fields; they are not read from the incoming item. Use an expression such as `{{ $input.title }}` to pass them on.
* **HTML** is optional. Fill it with a page's HTML, for example from [Get All HTML](/nodes/extension/getallhtml/), to save what you see, including content behind a login.

## Outputs

* **Save highlights** returns `saved`, the number of highlights sent, and `results`, Readwise's reply (the books or articles the highlights were filed under).
* **Save document** returns Reader's reply, including the new document's `id` and its `url` in Reader.

## Dependencies and credentials

* **Credential** (connection, Bearer Token): required. See [Connect Readwise / Reader](/app/connections/readwise/).

Get your access token at [readwise.io/access\_token](https://readwise.io/access_token) and save it as a Bearer Token credential. The same token works for Readwise and Reader. It gives full access to your Readwise account, so keep it private. See [Create a credential](/app/connections/create/).

## Example workflow

1. A [Context Menu](/nodes/builtin/trigger/contextmenu/) trigger with **Menu Contexts** `Selection` adds "Save highlight" to the right-click menu when you highlight text.
2. [Get Page Metadata](/nodes/extension/getpagemetadata/) reads the page's `title`.
3. Readwise / Reader, **Readwise (Highlights) → Save highlights**, **Highlight text** `{{ $('Context Menu').selectionText }}`, **Source URL** `{{ $('Context Menu').pageUrl }}`, **Title** `{{ $input.title }}`.

## Common issues

* **"No highlight text to save — set the Highlight text field or connect items that carry a text/highlight field."** No item had text in the fields listed above. Fill **Highlight text**, often with an expression, or rename the field with [Rename Keys](/nodes/builtin/datatransformation/renamekeys/).
* **"Readwise API Error: 401 … the access token was rejected".** The token is wrong or was replaced. Copy it again from readwise.io/access\_token.
* **"Readwise API Error: 429 … rate limited".** Too many requests in a short time. Wait a minute, or add a [Wait](/nodes/builtin/flow/wait/) between runs.
* **Highlights show no source or title.** Fill **Source URL** and **Title**, or make sure the incoming items carry `url` and `title`.
* **The run is blocked in the web app.** Readwise runs through the browser extension. Install the extension and allow Readwise for this workflow when asked, or run the workflow from the extension. See [Running extension-only integrations in the web app](/app/troubleshooting/extension-only-integrations-in-the-web-app/).

## Related nodes

* [Get Selected Text](/nodes/extension/getselectedtext/): the text you highlighted on a page.
* [Raindrop](/nodes/builtin/integration/raindrop/): bookmarks with tags and covers.
* [Obsidian](/nodes/builtin/integration/obsidian/): keep highlights in your local notes.
* [Get All HTML](/nodes/extension/getallhtml/): capture a page's HTML for Reader.