Plannotator lets you share plans and annotations with teammates via URL. Small plans are encoded entirely in the URL hash — no backend, no accounts, no server stores anything. Large plans can optionally use short URLs via the paste service.
How sharing works
When you share a plan:
- Plan markdown + annotations are serialized to a compact JSON format
- The JSON is compressed using
deflate-rawvia the browser’s nativeCompressionStream - The compressed bytes are base64url-encoded (URL-safe:
+/=replaced with-_) - The result is appended as a URL hash fragment
The share URL looks like:
https://share.plannotator.ai/#eNqrVkrOz0nV...
All data lives entirely in the URL. The share portal is a static page that reads the hash and renders it — it makes no network requests.
Sharing a plan
- Click Export in the header bar (or use the dropdown arrow for quick actions)
- In the Export modal, go to the Share tab
- Click Copy Link to copy the share URL
- Send the URL to your teammate
The URL size is shown so you can gauge if it’s too large for your messaging platform.
Importing a teammate’s review
When a teammate shares their annotated plan with you:
- Click the Export dropdown arrow → Import Review
- Paste the share URL
- Their annotations load into your current session
This lets you see exactly what a teammate flagged, merge their feedback with your own, and send a combined review back to the agent.
Disabling sharing
If you want to prevent sharing (e.g., for sensitive plans), set:
export PLANNOTATOR_SHARE=disabled
When sharing is disabled:
- The Share tab is hidden from the Export modal
- The “Copy Share Link” quick action is removed
- The Import Review option is hidden
Short URLs for large plans
When a plan is too large for a URL (~2KB+ compressed), messaging apps like Slack and WhatsApp may truncate it. Plannotator can create a short link by temporarily storing the compressed plan in a paste service.
How it works
- Click Export → Share
- If the URL is large, you’ll see a notice: “This plan is too large for a URL”
- Click Create short link to confirm
- The compressed plan is temporarily stored, then automatically deleted after the configured TTL
- A short URL like
share.plannotator.ai/p/aBcDeFgHis generated - Both the short URL and the full hash URL are shown — the short URL is safe for messaging apps
Privacy & encryption
- Plans are end-to-end encrypted (AES-256-GCM) in your browser before upload — the paste service stores only ciphertext it cannot read
- A single-use encryption key is generated in your browser via the Web Crypto API. The key never leaves the browser — it is never sent to the paste service or any server. It exists only in the URL fragment (
#key=...), which browsers never include in HTTP requests per the HTTP specification. Not even the service operator can decrypt stored plans. - Plans are only uploaded when you explicitly click “Create short link” — no data leaves your machine until you confirm
- Pastes auto-expire and are permanently deleted (hosted: 7 days, self-hosted: configurable via
PASTE_TTL_DAYS) - The paste service is fully open source — you can audit exactly what it does
- Self-hosters can run their own paste service for complete control — see the self-hosting guide
- If the paste service is unavailable, the full hash URL is always available as fallback
Self-hosting the share portal
By default, share URLs point to https://share.plannotator.ai. You can self-host the portal and point Plannotator at your instance. See the self-hosting guide for details.
Privacy model
- Plans and annotations are never sent to any server — the data lives entirely in the URL hash
- The share portal is a static page — it only reads the hash and renders client-side
- No analytics, no tracking, no cookies on the share portal
- Short URLs are opt-in — data is only uploaded when you explicitly click “Create short link” (see Short URLs for large plans for details)
- Short URLs use end-to-end encryption (AES-256-GCM) — the decryption key is embedded in the URL fragment and never sent to the server. The paste service stores only opaque ciphertext, similar to PrivateBin