I use claude.ai a lot, and the sidebar is one long list of chats. There are no folders, so I could not group chats by project. I built a small Chrome extension, Chat Folders for Claude, to add that. This post covers what it does and the parts that were harder than expected.
Not affiliated with Anthropic. This is an independent project, not endorsed by or connected to Anthropic.
What it does
- Adds a Folders section to the claude.ai sidebar: create, rename, delete, collapse.
- File the open chat into a folder (a chat lives in one folder at a time). Deleting a folder never deletes a conversation.
- Search chat titles (not message text).
- Export the open chat as a Markdown file, or export a folder as a list of titles and links.
The hard part: the message list is virtualised
The Markdown export looked simple: read the messages, convert to Markdown, save a file. But the chat page only keeps a few message rows in the DOM at a time (roughly 3 to 7). If you read the page as it is, you get the part you are looking at and nothing else.
Each row has a data-index, so the export works like this:
- Find the scroll container of the message list.
- Jump to the top, then scroll down in steps of 0.8 of the visible height so consecutive views overlap.
- Wait a moment after each step for the list to draw the new rows, and collect each row once, keyed by
data-index. - Sort by index, convert to Markdown, and restore the original scroll position, even if something fails.
If fewer messages were read than the chat has, the file says so ((n of N messages captured)) instead of pretending it is complete. The site markup can change without notice, so the extension looks for structure rather than class names. If it cannot find what it needs, the feature hides itself instead of producing a broken file.
Privacy and permissions
- Two permissions only:
storageand host access tohttps://claude.ai/*. - No network requests: no server, no analytics, no remote code. It does not call the site's internal APIs and does not read cookies.
- Folders are saved in
chrome.storage.localon your device. For each filed chat it stores the ID, the title as shown in the sidebar, and the time you added it. - Message text is read only when you press an export button, only for the chat you have open, and it becomes a file your browser saves. The extension does not keep it.
The repository has no build step and no dependencies, and there are unit tests for the storage logic, search, Markdown conversion and the scrolling collector (against a fake virtualised list).
Note: the screenshot above was made on a stand-in page with invented chats, not on a real account.
Try it
- Chrome Web Store: Chat Folders for Claude
- Details: devjar.dev/lab/chat-folders
It is early (version 0.2.2). If the sidebar layout changes and something breaks, I would like to hear about it in the comments.

Top comments (0)