Pin sticky notes directly onto any webpage — right where you need them.
A premium, privacy-first Chrome & Firefox extension for contextual, persistent, floating notes.
"Post-its, but for the web."
NotePin lets you pin floating sticky notes directly onto any webpage — anchored exactly where they matter. Hold right-click for 1 second on any element, add your note, and it stays there. Close the tab, come back later, and your note is waiting.
Everything runs 100% locally. Your notes never leave your device unless you enable Chrome Sync. No accounts. No tracking. No telemetry.
- 🏷️ Tags:
chrome-extension·firefox-addon·notes·sticky-notes·productivity·annotation·privacy-first·offline-first - 🌐 Homepage: https://nrnworld.one/p/notepin
- 🛡️ Privacy Policy: https://nrnworld.one/NotePin/privacy.html
|
Hold right-click anywhere on a page for 1 second and NotePin's menu appears — no conflict with the normal context menu. Notes tie to the exact URL you create them on. Open the page later and they pop up right where you left them. Glassmorphism design, 5 vibrant accent colors, micro-animations, minimise, resize and layer controls. |
|
Every keystroke is saved the instant you type it. Never lose a thought. Search, filter, delete and jump to the source page of any note from a single popup dashboard. Keep everything strictly offline on your machine, or opt-in to Chrome Sync to carry notes across devices. |
|
One-click JSON backup & restore — your data is always portable. Full UI in English, Svenska, Español, and Français. Zero network calls. Zero analytics. Zero server round-trips. Read the code and see for yourself. |
👉 Install from Chrome Web Store
👉 Available on AMO (addons.mozilla.org) — search NotePin or use the source zip in this repo.
- Download this repo and open a terminal in
notepin/ - Install & build:
npm install npm run build
- Open
chrome://extensions→ enable Developer mode → Load unpacked - Select the
notepin/distfolder
- Create a note → On any webpage, hold right-click for 1 second → click Add Sticky Note
- Type instantly → Click inside the note and start writing. Everything auto-saves.
- Move / resize → Drag the top handlebar to move. Drag the bottom-right corner to resize.
- Bring to front → Click any note to layer it above others.
- Minimize / delete → Use the icon buttons in the top-right of each note.
- Find notes later → Click the NotePin extension icon → Saved Notes → search → Go to page to jump back.
| Layer | Tech |
|---|---|
| Framework | React 19 + TypeScript |
| Build | Vite 6 |
| Styling | Tailwind CSS 4 + custom glassmorphism |
| Animations | Motion (Framer) |
| Icons | lucide-react |
| Storage | chrome.storage.local / chrome.storage.sync |
| Manifest | MV3 (Chrome) + Gecko-compatible (Firefox) |
NotePin/
├── notepin/
│ ├── public/ # manifest.json, icons, _locales, loader.js
│ ├── src/
│ │ ├── components/ # Note.tsx, ContextMenu.tsx
│ │ ├── App.tsx # Main UI, state, storage sync
│ │ ├── content.tsx # Shadow DOM bootstrap + hold-to-open logic
│ │ └── background.ts # Service worker
│ └── package.json
└── NotePin_v1.0.8.zip # Built & ready for Chrome Web Store
- 🗂️ NEW Custom categories for Saved Notes: create your own, assign from a dropdown, or drag a note straight onto a category.
↕️ NEW Drag-and-drop sorting of Saved Notes (grab the handle); the order is saved.- 🎨 NEW Redesigned popup, welcome screen and Saved Notes list; SVG flags (Windows has no flag emoji); fixed popup size so the layout no longer jumps between languages.
- 🌐 English is now the default language until you choose another one.
- 🐛 FIXED Notes could revert to an older version:
storage.synchas an 8 KB per-item limit. Notes are now stored instorage.local(existing synced notes are migrated automatically). - 🐛 FIXED Clicking inside a note's text box ended editing (shadow DOM click detection); resizing a note or the panel stopped after the first mouse move; keystrokes in a note triggered the host page's hotkeys; text is now auto-saved while typing.
- 🐛 FIXED Context menu is kept inside the viewport.
- 🐛 FIXED Notes created on a web page no longer "leak" and render inside the popup window — they only show up under Saved Notes, exactly as expected.
- 🔄 FIXED Saved Notes dashboard now reliably refreshes from storage every time you open it, and live-syncs across all open tabs via
chrome.storage.onChanged. - 🎯 FIXED Drag-and-drop now works smoothly on every note — brand-new or previously created. Replaced the built-in Motion.js drag handler with a custom capture-phase implementation that correctly uses page-absolute coordinates and never interrupts mid-drag when React re-renders.
- 🏷️ Unified version numbers across
manifest.json,package.json, and UI chips (v1.0.6 everywhere). - 📱 Added
es,frlocales. - 🖼️ New screenshots, logos, promo banner, Firefox release zips included in the repo.
- Initial public release.
- Hold-to-create, Saved Notes dashboard, Export/Import, English + Swedish.
Your notes. Your device. Your rules.
NotePin is built so that:
- ✅ No data ever leaves your device unless you explicitly enable Chrome Sync (which is handled entirely by Google's encrypted sync pipeline — we see nothing).
- ✅ Zero network requests from the extension to any server.
- ✅ Zero analytics, zero telemetry, zero cookies.
- ✅ Read the audit yourself — every line is in this repository.
Full privacy policy → https://nrnworld.one/NotePin/privacy.html
If NotePin saves you time every day, consider supporting an independent developer. Every coffee fuels late nights polishing the UI, squashing bugs, and keeping the extension free & ad-free forever.
| Channel | Link |
|---|---|
bynrnworld@gmail.com |
|
| 🌐 Website | https://nrnworld.one |
| 💻 GitHub | https://github.com/nRn-World |
| 🐙 NotePin Repo | https://github.com/nRn-World/NotePin |
⭐ Star this repo if you found NotePin useful — it really helps!
Created with ❤️ & lots of ☕ by Robin Ayzit · nRn World © 2026
Licensed under CC BY-NC 4.0.




