Better Perplexity

A modular userscript that adds the missing parts of the Perplexity web app: reliable usage tracking, better code blocks, long-message handling, a prompt library, batch runs and real exports.

v1.0.3PolyForm-Strict-1.0.03 min read

A modular userscript that adds the missing parts of the Perplexity web app: reliable usage tracking, better code blocks, long-message handling, a prompt library, batch runs and real exports.

Install · Changelog · Report a bug

Install#

  1. Install Violentmonkey or Tampermonkey.
  2. Open the Install link above and confirm.
  3. Open perplexity.ai. Click the ? button in the header for an interactive tour.

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

Features#

FeatureWhat you get
Usage statusRemaining queries per mode in the header, hover summary, details dialog, learned refill estimates
Code Block ProLanguage badges, syntax colours, line numbers, wrap, fold, download, indentation-safe selection copy
Big messagesPaste 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 and PDF, with citation styles
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
Max WidthFull-width layout, optional sidebar removal

Shortcuts#

ActionDefault
Command paletteAlt + Shift + P
Prompt libraryAlt + Shift + L
Send messageCtrl + Enter or Cmd + Enter (configurable)
Send a selection actionShift-click the action

Change the palette, prompt and send shortcuts from the userscript menu or the settings dialog.

Community prompts#

Prompts are loaded from prompts/library.json and cached for 24 hours. Suggest one with the prompt form or a pull request.

Privacy#

No analytics and no server of its own. The script talks to Perplexity from your own session, and to raw.githubusercontent.com for update checks and community prompts. Drafts, prompts and settings stay in your userscript manager's storage.

Troubleshooting#

  • A button is missing: Perplexity changes its layout often. Open the settings dialog to check the module is on, then file a bug with the console output.
  • Usage shows free-tier numbers: make sure you are signed in on the same browser profile; open “Raw API data” in the usage dialog and attach it to a bug report.
  • Export fails with an HTTP error: the export relies on Perplexity's own export endpoint. Choose “Raw thread JSON” as a fallback and report it.

Built on the shared core#

Better Perplexity is built on @nolly/core, the shared runtime used by every userscript in this repository. The core provides the feature lifecycle, storage, logging, DOM helpers, HTTP, menus, style injection and the page request observer. Better Perplexity keeps only what is specific to Perplexity: the modules, the composer and selector logic, and the UI.

You do not install the core separately. It is bundled into better-perplexity.user.js at build time, so the installed script has no extra dependencies. See Architecture for details.

Development#

The repository is a Bun workspace. Install once at the repository root, then work inside the script folder.

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

Building needs the core/ folder next to better-perplexity/. See CONTRIBUTING.md.

License#

PolyForm Strict License 1.0.0.

Edit this page on GitHub

Search documentation

Jump to any page or section.

Better Perplexity
Install
Features
Shortcuts
Community prompts
Privacy
Troubleshooting
Built on the shared core
Development
License
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
When the numbers look wrong
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
Code blocks and export
Code blocks
Exporting a thread
Citation styles
Shortcuts and settings
Default shortcuts
Enter as newline
Command palette
Selection toolbar
Layout
Architecture
What the core provides
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
Changelog
[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
Changelog
0.1.1
0.1.0