Website feedback without the screenshot thread.
Draw, highlight, and comment on any live webpage. Share one link and review together in real time, with no account required.
Try MarkLayer · Add to Chrome · Build from source
MarkLayer turns any webpage into a collaborative review surface. Instead of passing screenshots back and forth, send a link. Teammates or clients can open the original page in their own browser, leave feedback where it belongs, and see changes land live.
- For client feedback: let clients point to exactly what they mean, without an account or extension.
- For design review: sketch ideas, highlight details, and keep the conversation attached to the page.
- For QA: pin reproducible issues to the actual UI, then share a clean link with the team.
- For AI-assisted work: inspect an element to copy its stable selector and an AI-ready markdown snapshot.
- Open a page: paste any public URL at marklayer.app, or use the Chrome extension on the page you are already viewing.
- Make the feedback visible: draw, highlight text, measure space, pin a threaded comment, or inspect an element.
- Share one link: collaborators join the same board and see cursors, marks, replies, and calls in real time.
No sign-up. No trial clock. No client install.
| Annotate freely | Pen, highlighter, eraser, shapes, arrows, text, and text-selection highlights. |
| Keep feedback in context | Pin threaded comments to the page, reply inline, and track status. |
| Review live | Real-time cursors, drawings, and comments via WebSocket, plus peer-to-peer voice and video chat. |
| Hand off precise implementation context | Inspect an element for a stable selector, computed styles, parent layout, viewport details, and framework component information. |
| Measure the UI | Check element dimensions and edge-to-edge gaps between two elements. |
| Share or export | Create shareable links with preview cards, or export annotations to PNG. |
| Make it yours | Reorder toolbar tools; drafts persist locally and restore when you return. |
- No accounts or tracking: start reviewing immediately.
- Links expire thoughtfully: shared boards expire 90 days after their last view.
- Open source and self-hostable: MarkLayer is released under Apache-2.0, so your workflow is not tied to a pricing change.
Want the non-technical version? Read How MarkLayer works.
git clone https://github.com/thevrus/MarkLayer.git
cd MarkLayer
bun install
bun run devFor the Chrome extension in development:
- Build or run the extension app.
- Open
chrome://extensions/and turn on Developer mode. - Choose Load unpacked and select
apps/extension/.output/chrome-mv3-dev.
├── apps/extension/ Chrome extension (WXT + Preact)
├── apps/worker/ Cloudflare Worker, API, real-time rooms, proxy, OG generator
├── apps/site/ Static marketing site (Astro)
└── packages/types/ Shared TypeScript types
| Area | Technologies |
|---|---|
| Frontend | Preact, Signals, Tailwind CSS, Vite |
| Extension | WXT, Chrome APIs |
| Backend | Cloudflare Workers, Hono, Durable Objects |
| Storage | D1 (SQLite), R2 |
| Real-time | WebSockets, WebRTC |
| Command | What it does |
|---|---|
bun run dev |
Run the workspace in development mode |
bun run build |
Build all apps |
bun run check |
Type-check the workspace |
bun run lint |
Lint and format-check with Biome |
bun run lint:fix |
Apply lint and formatting fixes |
cd apps/worker && bun run deploy |
Deploy the Worker to Cloudflare |
Found a bug or have an idea? Open an issue. Contributions are welcome.
Apache License 2.0 © Vadym Rusin
Try MarkLayer · Add to Chrome · Report a bug · Request a feature
