Better ChatGPT

A modular userscript that adds the missing parts of ChatGPT: limits at a glance, better code blocks, long-message handling, a prompt library, batch runs and real exports.

v1.3.0PolyForm-Strict-1.0.04 min read

A modular userscript that adds the missing parts of ChatGPT: limits at a glance, better code blocks, long-message handling, a prompt library, batch runs and real exports.

Changelog · Report a bug

Install#

  1. Install Violentmonkey or Tampermonkey.
  2. Open the Install link on the project website and confirm.
  3. Open chatgpt.com. The settings button sits in the header next to ChatGPT's own buttons.

Updates arrive automatically. The script also checks on its own and offers to update.

Features#

FeatureWhat you get
Usage Quota V2Remaining counts reported by ChatGPT, your plan, and low/empty alerts; totals and reset schedules are not inferred
Code Blocks V2Language badges, syntax colours, line numbers, wrap, fold, download, indentation-safe copy
Message SplitterPaste any amount of text; split into parts or attach as a file only when needed
Prompt LibraryYour prompts plus community prompts, with a form for placeholders
Batch RunnerRun one template over a list, with pause, resume and reload recovery
Selection ToolbarAsk, explain, summarize, fact-check or quote highlighted text
ExporterMarkdown, text, Word, PDF and JSON
Draft GuardDrafts survive reloads; size meter; warning before closing with unsent text
Command PaletteSearch every action
Enter as NewlineEnter adds a line, a shortcut sends
Message QueueQueue follow-ups while an answer generates; they send one by one
RecallSearch everything you sent and reuse it
TutorialGuided tours of every feature, started from the “?” button in the header
Max WidthFull-width conversations, optional sidebar removal
Update CheckerChecks on load and every few minutes, tells you once per version
Context PacksSave sourced excerpts from conversations and assemble a previewable briefing for your next task

Shortcuts#

ActionDefault
Command paletteAlt + Shift + P
Prompt libraryAlt + Shift + L
RecallAlt + Shift + H
Send messageCtrl + Enter or Cmd + Enter

All of them can be changed from the settings dialog.

Usage Quota V2 shows reported remaining counts only; it does not invent totals or reset schedules. The /wham/usage endpoint is not displayed as the ordinary chat quota.

Privacy#

No analytics and no server of its own. The script reads ChatGPT's own responses in your session (for limits and the model in use) and talks to raw.githubusercontent.com for update checks and community prompts. Drafts, prompts and settings stay in your userscript manager's storage.

Context Packs stores only excerpts you explicitly save, with their source URL and timestamp. Saved excerpts persist locally even if they originated in a temporary chat. Libraries are separate for each userscript; copying a briefing is the manual transfer mechanism.

Troubleshooting#

  • A button is missing: open the settings dialog and check the module is on. In the browser console, betterChatgptDump() prints what the script found on the page; attach it to a bug report.
  • Export says no messages found: ChatGPT changed its layout. Run betterChatgptDump() and attach it.
  • Limits look empty: they come from ChatGPT's own responses and appear after the page loads or a message is sent.

Built on the shared packages#

Better ChatGPT is built on @nolly/core and @nolly/ai. Both are bundled into better-chatgpt.user.js at build time. Only what is specific to ChatGPT lives here: selectors, the network observer, limits, the exporter source and the header placement.

Development#

bash
bun install          # at the repository root
cd ai/chatgpt
bun run dev          # unminified, rebuilds on change
bun run typecheck
bun run build        # minified userscript in dist/

License#

PolyForm Strict License 1.0.0.

PDF reports#

PDF export opens a print-ready preview with a contents list, readable sections, code panels and tables. Use Print / Save as PDF in the preview. See PDF reports for print settings and machine-reading limitations.

Usage Quota V2#

The header usage dialog combines reported allowances, capacity evidence and observation-based recovery scenarios. See Usage Quota V2.

Answer Diff#

Compare two answers or code revisions locally, inspect exact text changes, and explicitly save a reusable baseline. Nothing is sent automatically. See Answer diff.

Send When Ready#

Hold a message and send it at a chosen time, or when a quota counter has units again. See Send when ready.

Edit this page on GitHub

Search documentation

Jump to any page or section.

AI Core
What you get
Adding a site
Changelog
[0.2.5] - 2026-11-12
[0.2.4] - 2026-11-11
[0.2.3] - 2026-11-10
Code wrapping and Answer Diff update
[0.2.2] - 2026-11-10
[0.2.2] - 2026-11-10
[0.2.1] - 2026-11-10
[0.2.0] - 2026-11-10
Export and reliability
Export and reliability
[0.1.0] - 2026-11-10
Better ChatGPT
Install
Features
Shortcuts
Privacy
Troubleshooting
Built on the shared packages
Development
License
PDF reports
Usage Quota V2
Answer Diff
Send When Ready
Getting started
Usage tracking
Usage Quota V2
Status colours
Next +1, +5 and Full
What Full means
Accuracy
Account scope
Exporting a conversation
PDF workflow
Context packs
Save an excerpt
Assemble a briefing
Use it on another platform
Privacy and limits
Guided tour
Answer diff
Compare revisions
Reuse a baseline
Privacy
Limits
Tutorial
Send when ready
Schedule a message
Safety
Limits
Code Blocks V2
Copying
Reading
Guided tour
Verification
Themes and language badges
Wrapping and folding in 1.2.4
Beautiful PDF reports
Save a report
Report layout
For AI reading
Limitations
Guided tour
Troubleshooting
Code and table fixes in 1.1.2
Quota Insights migration
Architecture
Changelog
[1.3.0] - 2026-11-12
[1.2.5] - 2026-11-11
Added
Changed
Fixed
[1.2.4] - 2026-11-10
Added
Fixed
Documentation
[1.2.2] - 2026-11-10
Changed
Fixed
[1.2.1] - 2026-11-10
Added
Fixed
[1.2.0] - 2026-11-10
Changed
Fixed
[1.1.2] - 2026-11-10
Fixed
[1.1.1] - 2026-11-10
Export and reliability
Export and reliability
Added
Fixed
Documentation
[1.1.0] - 2026-11-10
Added
Fixed
[1.0.0] - 2026-11-10
Better Perplexity
Install
Features
Shortcuts
Community prompts
Privacy
Troubleshooting
Built on the shared core
Development
License
PDF reports
Usage Quota V2
Answer Diff
Send When Ready
Getting started
Install
Take the tour
Where things are
Turn modules on and off
Usage tracking
What the badge shows
Which mode is shown
Refill estimates
Refill estimates
Estimates and uncertainty
When the numbers look wrong
Updates and alerts
Update checker
Refill alerts
Pace
Usage Quota V2
Status colours
Next +1, +5 and Full
What Full means
Accuracy
Account scope
Message queue
What it protects
The panel
How it sends
Limits
Troubleshooting
Recall
Find a message
Reuse the last message
What is kept
Privacy
Clear it
Long messages
The size meter
Big messages
Sending in parts
Attaching as a file
Accuracy
Prompts and batches
Prompt library
Placeholders
Community prompts
Batch Runner
Context packs
Save an excerpt
Assemble a briefing
Use it on another platform
Privacy and limits
Guided tour
Answer diff
Compare revisions
Reuse a baseline
Privacy
Limits
Tutorial
Send when ready
Schedule a message
Safety
Limits
Code Blocks V2
Copying
Reading
Guided tour
Verification
Themes and language badges
Wrapping and folding in 1.2.4
Code blocks and export
Code blocks
Exporting a thread
Citation styles
PDF workflow
Export failures
Beautiful PDF reports
Save a report
Report layout
For AI reading
Limitations
Guided tour
Shortcuts and settings
Default shortcuts
Enter as newline
Command palette
Selection toolbar
Layout
Architecture
@nolly/core
@nolly/ai
What stays in Better Perplexity
Compatibility
Building from source
Troubleshooting
A button is missing
Usage shows free-tier numbers
My draft disappeared
Export fails
Updates do not arrive
The build cannot find @nolly/core
Reporting a bug
Quota Insights migration
Changelog
[1.3.0] - 2026-11-12
[1.2.5] - 2026-11-11
Added
Changed
Fixed
[1.2.4] - 2026-11-10
Added
Fixed
Documentation
[1.2.2] - 2026-11-10
Changed
Fixed
[1.2.1] - 2026-11-10
Added
Fixed
[1.2.0] - 2026-11-10
Changed
Fixed
[1.1.2] - 2026-11-10
Fixed
[1.1.1] - 2026-11-10
Export and reliability
Export and reliability
Added
Fixed
Documentation
[1.1.0] - 2026-11-10
Changed
Fixed
[1.0.5] - 2026-11-09
Added
Changed
[1.0.5-hotfix.1] - 2026-11-09
Fixed
[1.0.4] - 2026-11-09
Changed
[1.0.3] - 2026-11-09
Fixed
Changed
[1.0.2] - 2026-11-09
Changed
[1.0.1] - 2026-11-09
Changed
Fixed
[1.0.0] - 2026-11-08
Added
Community prompts
Suggest a prompt
Userscript Core
What you get
Quick start
Getting started
Scaffold
A feature
Wire it up
Cleanup
API reference
Runtime
Feature
Utilities
Build
Build and release
Keeping scripts updated
Notifications
Changelog
[1.0.4] - 2026-11-12
[1.0.3] - 2026-11-10
Export and reliability
Export and reliability
1.0.2
Added
0.1.1
0.1.0