Bulk delete, archive and rename your ChatGPT chats without the "Too many requests" lockout. Read each chat first, queue your changes, and let them run at a safe pace.
See the codeRead every chat before you decide. Queue deletes, archives and renames, and let them run at a pace ChatGPT tolerates.
ChatGPT has no way to select several chats at once. Deleting hundreds of them one by one is slow, and doing it quickly gets you this:
Too many requests. You're making requests too quickly. We've temporarily limited access to your conversations to protect your data.
Triage is a free userscript that adds a cleanup workspace to chatgpt.com. You go through your chats oldest first, read each one in a side panel, and mark it: delete, archive, rename or protect. Nothing changes until you press Run Queue. Then Triage works through the queue one change at a time. When ChatGPT says "too many requests", it stops, waits as long as ChatGPT asks, and carries on by itself.

Try the demo (a fake ChatGPT account, nothing real is touched) · Install · How it handles the limit
D, A, R). Rename is handy for all those chats called "New chat".P and a chat can never be queued, even by select all.Deleting chats in ChatGPT's own sidebar sets off a burst of extra requests to reload the chat list, and that list is what ChatGPT locks when there are too many requests (details on the OpenAI forum). Triage avoids the burst:

Alt + Shift + T.Updates install themselves through your userscript manager.
Triage is also listed on Greasy Fork and OpenUserJS. Both install this same file and pick up every update from here.
F12 (or Ctrl + Shift + J, Cmd + Option + J on a Mac), then the Console tab.allow pasting and press Enter.You'll need to paste it again after reloading the page. Only paste code you've read or trust; this file is one readable script with no hidden parts.

| Key | Does |
|---|---|
↑ ↓ or J K | Move through the list; the chat opens on the right |
Shift + ↑ ↓ | Select as you move |
Space or X | Select or unselect |
D | Queue delete, then move on |
A | Queue archive (unarchive in the Archived tab) |
R | Queue a new name |
P | Protect or unprotect |
C | Clear the queued change |
/ | Search |
Esc | Clear the selection, or close a menu or dialog |
? | All shortcuts (also ? Shortcuts at the bottom right) |
Alt + Shift + T | Open or close Triage |
The demo/ folder is a stand-in for chatgpt.com with a fake account of about 280 made-up chats. demo/mock-api.js answers the same requests ChatGPT does, inside the page, and can simulate the hard cases:
| Add to the demo URL | Simulates |
|---|---|
?ratelimit=on&max=6&window=30 | "Too many requests" after 6 requests in 30 seconds, with a Retry-After header. Like every wait in the demo, it runs at the demo's speed. |
?ratelimit=noheader | The same, without saying how long to wait |
?expire=30 | Sign-in tokens that expire every 30 seconds |
?fail=0.2 | 20% of changes failing with a server error |
?ghost=0.3 | 30% of changes reporting success without taking effect |
?listlag=20 | The chat list still showing archived and deleted chats for 20 seconds, as chatgpt.com does |
?chats=3000 | A bigger account, to try Triage on a long history |
?speed=50 | Every wait, including ChatGPT's, runs 50 times faster. The demo defaults to 4× and says so in its footer; ?speed=1 runs at real speed. |
To run it locally, serve the folder and open the demo:
python -m http.server 8000
Then visit http://localhost:8000/demo/.
Bug reports and ideas are welcome in Issues. If ChatGPT changes something and Triage stops working, an issue with what the Network panel shows helps most. Leave out anything private.
MIT © Nasir Yar Khan (@NASIRCISSISTIC).
Triage is an independent project. It isn't affiliated with, endorsed by, or sponsored by OpenAI. ChatGPT is a trademark of OpenAI.
JavaScript
100.0%
Bulk delete, archive and rename your ChatGPT chats without the "Too many requests" lockout. Read each chat first, queue your changes, and let them run at a safe pace.
See the codeRead every chat before you decide. Queue deletes, archives and renames, and let them run at a pace ChatGPT tolerates.
ChatGPT has no way to select several chats at once. Deleting hundreds of them one by one is slow, and doing it quickly gets you this:
Too many requests. You're making requests too quickly. We've temporarily limited access to your conversations to protect your data.
Triage is a free userscript that adds a cleanup workspace to chatgpt.com. You go through your chats oldest first, read each one in a side panel, and mark it: delete, archive, rename or protect. Nothing changes until you press Run Queue. Then Triage works through the queue one change at a time. When ChatGPT says "too many requests", it stops, waits as long as ChatGPT asks, and carries on by itself.

Try the demo (a fake ChatGPT account, nothing real is touched) · Install · How it handles the limit
D, A, R). Rename is handy for all those chats called "New chat".P and a chat can never be queued, even by select all.Deleting chats in ChatGPT's own sidebar sets off a burst of extra requests to reload the chat list, and that list is what ChatGPT locks when there are too many requests (details on the OpenAI forum). Triage avoids the burst:

Alt + Shift + T.Updates install themselves through your userscript manager.
Triage is also listed on Greasy Fork and OpenUserJS. Both install this same file and pick up every update from here.
F12 (or Ctrl + Shift + J, Cmd + Option + J on a Mac), then the Console tab.allow pasting and press Enter.You'll need to paste it again after reloading the page. Only paste code you've read or trust; this file is one readable script with no hidden parts.

| Key | Does |
|---|---|
↑ ↓ or J K | Move through the list; the chat opens on the right |
Shift + ↑ ↓ | Select as you move |
Space or X | Select or unselect |
D | Queue delete, then move on |
A | Queue archive (unarchive in the Archived tab) |
R | Queue a new name |
P | Protect or unprotect |
C | Clear the queued change |
/ | Search |
Esc | Clear the selection, or close a menu or dialog |
? | All shortcuts (also ? Shortcuts at the bottom right) |
Alt + Shift + T | Open or close Triage |
The demo/ folder is a stand-in for chatgpt.com with a fake account of about 280 made-up chats. demo/mock-api.js answers the same requests ChatGPT does, inside the page, and can simulate the hard cases:
| Add to the demo URL | Simulates |
|---|---|
?ratelimit=on&max=6&window=30 | "Too many requests" after 6 requests in 30 seconds, with a Retry-After header. Like every wait in the demo, it runs at the demo's speed. |
?ratelimit=noheader | The same, without saying how long to wait |
?expire=30 | Sign-in tokens that expire every 30 seconds |
?fail=0.2 | 20% of changes failing with a server error |
?ghost=0.3 | 30% of changes reporting success without taking effect |
?listlag=20 | The chat list still showing archived and deleted chats for 20 seconds, as chatgpt.com does |
?chats=3000 | A bigger account, to try Triage on a long history |
?speed=50 | Every wait, including ChatGPT's, runs 50 times faster. The demo defaults to 4× and says so in its footer; ?speed=1 runs at real speed. |
To run it locally, serve the folder and open the demo:
python -m http.server 8000
Then visit http://localhost:8000/demo/.
Bug reports and ideas are welcome in Issues. If ChatGPT changes something and Triage stops working, an issue with what the Network panel shows helps most. Leave out anything private.
MIT © Nasir Yar Khan (@NASIRCISSISTIC).
Triage is an independent project. It isn't affiliated with, endorsed by, or sponsored by OpenAI. ChatGPT is a trademark of OpenAI.
JavaScript
100.0%