The readingList permission allows an extension to read and modify items in Chrome's "Reading list" feature.
What it does
- Read: Query for all entries in the user's reading list.
- Add: Add new pages to the reading list, including a URL and title.
- Update: Change the status of an entry (e.g., mark it as read).
- Remove: Delete entries from the reading list.
When to use it
This is for extensions that want to integrate with or provide an alternative interface for the native Reading List.
Examples:
- An extension that syncs Chrome's Reading List with a third-party "read it later" service (like Pocket or Instapaper).
- A custom New Tab Page that displays items from the reading list.
- An extension that automatically adds links from a specific site to the reading list.
Manifest Declaration
This permission may trigger a warning on installation.
{
"name": "My Reading List Helper",
"version": "1.0",
"manifest_version": 3,
"permissions": [
"readingList"
],
"action": {}
}Security & Privacy
Why is it risky?
The articles and pages you save to your reading list can reveal your personal interests, work projects, and hobbies. This permission gives an extension full access to read, add, and delete items from your list.
A malicious extension could spy on your saved articles to build a profile about you for advertising or other purposes. It could also add spammy links to your list, or replace your list with links to malicious sites. While not as dangerous as accessing your history or passwords, you should still be mindful about which extensions you allow to manage your reading list.
API Usage Example
This example adds the current tab to the reading list when the user clicks the extension's icon.
// background.js
// Add the current tab to the reading list when the action icon is clicked
chrome.action.onClicked.addListener(async (tab) => {
if (tab.url && tab.title) {
try {
await chrome.readingList.addEntry({
url: tab.url,
title: tab.title,
hasBeenRead: false
});
console.log(`Added "${tab.title}" to the reading list.`);
// Optional: Show a visual confirmation to the user
chrome.action.setBadgeText({ text: 'Added', tabId: tab.id });
setTimeout(() => chrome.action.setBadgeText({ text: '', tabId: tab.id }), 2000);
} catch (error) {
console.error('Failed to add to reading list:', error);
}
}
});
// Example function to log all unread items from the reading list
async function logUnreadItems() {
try {
const entries = await chrome.readingList.query({ hasBeenRead: false });
console.log('Unread Reading List Entries:', entries);
} catch (error) {
console.error('Failed to query reading list:', error);
}
}
// You could call this from a popup or another event.
logUnreadItems();Extensions with the readingList permission
Here are some popular browser extensions that use the "readingList" permission. To explore more, try our Advanced search.