Stay organized with collections Save and categorize content based on your preferences.
DescriptionUse the chrome.readingList
API to read from and modify the items in the Reading List.
readingList
To use the Reading List API, add the "readingList"
permission in the extension manifest file:
manifest.json:
{
"name": "My reading list extension",
...
"permissions": [
"readingList"
]
}
Availability
Chrome features a reading list located on the side panel. It lets users save web pages to read later or when offline. Use the Reading List API to retrieve existing items and add or remove items from the list.
Reading list showing a number of articles Concepts and usage Item orderingItems in the reading list are not in any guaranteed order.
Item uniquenessItems are keyed by URL. This includes the hash and query string.
Use casesThe following sections demonstrate some common use cases for the Reading List API. See Extension samples for complete extension examples.
Add an itemTo add an item to the reading list, use chrome.readingList.addEntry()
:
chrome.readingList.addEntry({
title: "New to the web platform in September | web.dev",
url: "https://developer.chrome.com/",
hasBeenRead: false
});
Display items
To display items from the reading list, use the chrome.readingList.query()
method to retrieve them. method.
const items = await chrome.readingList.query({});
for (const item of items) {
// Do something do display the item
}
Mark an item as read
You can use chrome.readingList.updateEntry()
to update the title, URL, and read status. The following code marks an item as read:
chrome.readingList.updateEntry({
url: "https://developer.chrome.com/",
hasBeenRead: true
});
Remove an item
To remove an item, use chrome.readingList.removeEntry()
:
chrome.readingList.removeEntry({
url: "https://developer.chrome.com/"
});
Extension samples
For more Reading List API extensions demos, see the Reading List API sample.
Types PropertiesWill be true
if the entry has been read.
The title of the entry.
The url of the entry.
hasBeenRead
boolean optional
Indicates whether to search for read (true
) or unread (false
) items.
A title to search for.
A url to search for.
The time the entry was created. Recorded in milliseconds since Jan 1, 1970.
Will be true
if the entry has been read.
The last time the entry was updated. This value is in milliseconds since Jan 1, 1970.
The title of the entry.
The url of the entry.
The url to remove.
hasBeenRead
boolean optional
The updated read status. The existing status remains if a value isn't provided.
The new title. The existing tile remains if a value isn't provided.
The url that will be updated.
chrome.readingList.addEntry(
entry: AddEntryOptions,
): Promise<void>
Adds an entry to the reading list if it does not exist.
ParametersThe entry to add to the reading list.
chrome.readingList.query(
info: QueryInfo,
): Promise<ReadingListEntry[]>
Retrieves all entries that match the QueryInfo
properties. Properties that are not provided will not be matched.
The properties to search for.
chrome.readingList.removeEntry(
info: RemoveOptions,
): Promise<void>
Removes an entry from the reading list if it exists.
ParametersThe entry to remove from the reading list.
chrome.readingList.updateEntry(
info: UpdateEntryOptions,
): Promise<void>
Updates a reading list entry if it exists.
ParametersThe entry to update.
chrome.readingList.onEntryAdded.addListener(
callback: function,
)
Triggered when a ReadingListEntry
is added to the reading list.
chrome.readingList.onEntryRemoved.addListener(
callback: function,
)
Triggered when a ReadingListEntry
is removed from the reading list.
chrome.readingList.onEntryUpdated.addListener(
callback: function,
)
Triggered when a ReadingListEntry
is updated in the reading list.
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2025-08-11 UTC.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-11 UTC."],[],[]]
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4