bbrush is a lightweight Chrome extension that lets you draw directly on any webpage during demos, presentations, and screen sharing.
- Pen tool for freehand drawing
- Hold
Shiftwhile drawing with pen to constrain to a straight line - Eraser tool that removes complete objects (brush strokes, text, arrows, rectangles)
- In-tab whiteboard mode toggle (
W) with a separate drawing scene - Rectangle tool
- Rectangle drag and resize with selection handles
- Arrow tool
- Text tool with draggable/resizable text boxes
- Highlight tool for selected page text
Alt/Option + Dragin text mode duplicates selected text while moving- Draggable arrows
- Undo and clear actions
- Floating toolbar with shortcut help
- Clone this repository.
- Open Chrome and go to
chrome://extensions. - Enable Developer mode.
- Use Node
^20.19.0 || >=22.12.0. - Run
npm install. - Run
npm run build. - Click Load unpacked and select the
dist/folder.
- Click the extension icon to enable/disable the overlay on the active tab.
- Use the toolbar to switch tools and adjust color/size.
- Switch to whiteboard mode with
W(or toolbar button) to draw on a clean board, then switch back to page annotations anytime.
Alt + D: Toggle drawing modeAlt + Shift + B: Toggle toolbar panelB: Pen toolE: Eraser toolR: Rectangle toolA: Arrow toolT: Text toolH: Highlight text toolAlt + Click(highlight mode): Remove one highlight at pointerW: Toggle whiteboard mode- Hold
Space: Temporary click-through (interact with page without disabling tools) Alt/Option + Drag(text): Duplicate textCtrl/Cmd + Z: UndoC: Clear[ / ]: Decrease/increase active tool size?: Toggle shortcuts panelEsc: Cancel current selection/editor
This project uses Vite for bundling and still has no automated test runner.
- Required Node version:
^20.19.0 || >=22.12.0 - Install dependencies:
npm install - Build the extension:
npm run build - Rebuild in watch mode:
npm run dev - Lint:
npm run lint - Lint with fixes:
npm run lint:fix - Format:
npm run format - Check formatting:
npm run format:check
src/background/: service worker source entrysrc/overlay/: content-script entry, runtime, feature manifest, and per-feature modulessrc/popup/: popup source entrysrc/shared/: shared constants and icon catalogsrc/public/: manifest, popup HTML, toolbar CSS, and icons copied intodist/dist/: generated unpacked extension output loaded into Chrome
MIT. See LICENSE.