MarkLayer

MarkLayer features

By Vadym Rusin · Last updated: September 2026

MarkLayer is a free web app and browser extension for drawing and commenting on any live webpage, PDF or image, then sharing it as a link. It has 16 annotation tools, threaded comments with status and priority, live cursors, voice and video, seven places to send feedback, and a 12-tool MCP server for AI coding agents. No account, no paid tier.

The 16 annotation tools

Every tool below is available on the web app and in the extension, on any page, with no account. Each answers to a single key, chosen to match Figma where Figma has an equivalent, so the muscle memory carries over. The toolbar itself drags anywhere on screen, reorders by dragging a tool, and collapses to a fan when you want the page back.

MarkLayer annotation tools and their keyboard shortcuts
ToolKeyWhat it does
MoveVScroll and click the page underneath without drawing on it.
PenPFreehand stroke, the fastest way to circle something.
Highlight⇧HA translucent marker pass over anything on the page.
LineLA straight segment between two points.
ArrowA or ⇧LThe same line with a head on it, for pointing at a thing.
RectangleRA box around a region.
CircleOAn ellipse from its centre out.
TextTA typed label placed directly on the page.
CommentCA pinned thread with replies, status, priority and an owner.
SelectionSSelect real text and comment on it, or propose an exact rewrite.
AreaG or FDraw a region and attach a note to the whole of it.
EraserERemove strokes without clearing the page.
InspectorICapture one element's CSS selector, styles and a prompt for a coding agent.
Multi-selectXMarquee several elements and copy them as one agent task.
MeasureMPixel distances and gaps between two elements, the way Figma shows them.
GuideUDrag a ruler guide out to check alignment. Everyone on the link sees it.

Undo and redo are ⌘Z and ⌘⇧Z, and Clear all empties the page in one step. Everything you draw is an operation in one stream, which is why a ruler guide you drag out appears on everyone else's screen too rather than staying a private overlay on yours.

Comments that behave like work, not like sticky notes

A comment pin is a thread. It has replies, and it carries the fields a review actually needs to move: five statuses (open, in progress, resolved, approved, dismissed) and four priorities (low, medium, high, urgent). Assign one to a teammate or to an AI agent. @mention anyone already working on the page. Attach up to four images per comment, or paste a screenshot straight from the clipboard.

Each comment also records the browser, operating system and viewport size it was written on, so a bug report that only reproduces at one width says so without anyone having to ask.

The selection tool goes one step further. Select real text on the page, then either comment on it or write the exact replacement you want. MarkLayer renders that as a diff, and the same diff travels into the Markdown export and into an AI agent's view of the thread, so nobody retypes the correction.

Real-time collaboration, voice and video

Open the same link as someone else and you see each other's cursors move, with names, as the marks appear. There is no collaborator limit and no seat to buy.

Voice and video run peer to peer over WebRTC, negotiated through the same room. You get microphone and camera selection, an output device picker, a speaking indicator, and a connection-quality readout. It falls back to a TURN relay when a network refuses a direct connection. Nobody installs anything to join.

Sharing, access control and how long a link lives

Sharing is a link. The unguessable id in it is the access token, which is why a recipient needs no account and no extension, and why there is no invite flow to sit through. You can also have MarkLayer email the link.

A link is deleted 90 days after the last time anyone opened it, and any view, comment or edit resets that clock, so an active review never expires underneath you. You can set a shorter expiry explicitly, up to 30 days, when a link should not outlive the round.

If you want more control than that, signing in with a magic link (no password) lets you claim a link, switch it between can edit and can view, set its own expiry date, and see everything you own in one dashboard. The room enforces view-only everywhere a write could land, not just by hiding the toolbar. The account is optional and free; annotating and viewing never require one.

Send feedback to Slack, Teams, Discord, Linear, GitHub or Jira

Connect a destination from the panel on any share link. Chat destinations post on their own as annotations arrive. Issue trackers wait for you to pick a specific annotation and file it, which is what stops a review from manufacturing forty tickets nobody asked for.

Where MarkLayer can send annotations, and when
DestinationFiresWhat happens
SlackAutomaticPosts each new batch of annotations to an incoming webhook.
Microsoft TeamsAutomaticThe same batch, formatted for a Teams incoming webhook.
DiscordAutomaticThe same batch, trimmed to fit Discord’s 2,000-character ceiling.
WebhookAutomaticA structured JSON body to any public endpoint you control.
LinearYou pick oneFiles a single annotation as a Linear issue and hands you the link.
GitHubYou pick oneOpens a GitHub issue on a repository from one annotation.
JiraYou pick oneCreates a Jira issue in the project and issue type you name.

Be clear about the direction: this is one way out. MarkLayer creates the Linear, GitHub or Jira issue and gives you the link to it, and nothing about that issue's later life comes back. If you need a comment to close when the ticket closes, you want a bug tracker, and the honest recommendation is BugHerd orMarker.io.

One detail worth knowing, because most tools do the opposite: for Linear, GitHub and Jira the API token never reaches our server. The room stores only the repository, project key or team id. The token stays in the browser of whoever set it up. A room holds five destinations at once.

What an AI coding agent can do with a link

MarkLayer ships an MCP server, marklayer-mcp, that turns a review into a work queue an agent can actually work through rather than just read. Install it in Claude Code with one line:

claude mcp add marklayer -- npx -y marklayer-mcp
The twelve tools an AI agent gets over MCP
ToolWhat the agent can do
marklayer_connect_roomJoin a share link, by URL or by bare id.
marklayer_room_infoRead the page under review, its viewport and its timestamps.
marklayer_read_pageRead the page’s headings, text, links and controls with their selectors.
marklayer_list_annotationsBackfill everything outstanding, filtered by status.
marklayer_get_annotationPull one annotation in full, including the reply thread.
marklayer_watch_annotationsLong-poll for new work and for anything handed to this agent by name.
marklayer_acknowledgeMark a comment in progress so the human sees it has been picked up.
marklayer_resolveClose a comment and post the summary as a reply.
marklayer_dismissDecline a comment, with a reason that is required rather than optional.
marklayer_replyAsk a clarifying question without moving the status.
marklayer_create_annotationLeave a comment of its own, anchored to an element.
marklayer_suggest_editPropose exact replacement text, shown to the human as a diff.

The part that matters is that the human watching sees all of it happen. A comment flips to in progress when the agent picks it up, and lands as resolved with a written summary underneath. When an agent asks a question, it appears as a reply on the thread the person already has open.

Feeding it is the inspector. Point at any element and MarkLayer captures its CSS selector, its computed styles, a text fingerprint and, on a React or Vue page, the component behind it, then formats the lot as a prompt. Multi-select does the same for a whole set of elements and copies them as one task. There is also a plain HTTP API with no auth, so an assistant can mint share links for a list of URLs on its own. Seehow that compares to other tools' MCP servers.

PDFs, images and multi-page projects

Paste a link to a PDF or an image, or upload one up to 25MB. PDF text stays selectable, so a highlight binds to the words rather than to a coordinate, and every mark records which page it was made on. Images accept PNG, JPEG, GIF, WebP and AVIF.

One share link can hold a project of up to 50 pages, switched through a tab strip. Add a page by pasting its URL, and the Markdown export covers the whole project with a section per page.

Two tools switch off on a file, and it is better to say so than to let you find out: the element inspector and measure need HTML elements to point at, and a PDF has none. Annotations sit in a layer over the file rather than being written into it, so there is no annotated PDF to download afterwards. Readhow to annotate a PDF andhow to annotate an image for the full picture.

Marks that survive a responsive reflow

Preview a page at desktop, tablet or mobile width from the viewer, without touching the annotations. This is the part of MarkLayer that took the most work and shows the least: a comment binds to the element it was left on, by CSS selector with a text fingerprint as a fallback, plus a fractional offset inside that element's box. When the layout reflows or a single-page app re-renders the DOM underneath, the mark re-resolves and lands back on the right thing instead of floating off to a coordinate that no longer means anything.

Getting the feedback out

Comments do not have to stay in MarkLayer. From the panel on any share link you can copy every comment, reply and highlighted selection as Markdown or download it as a .md file, with statuses, authors, device metadata and suggested edits as diff blocks. You can also export the annotated page as a PNG, which captures the live page with the drawings over it.

The web app and the extension

The web app is the main route: paste a URL at marklayer.app and MarkLayer fetches the page, overlays the canvas, and gives you the address bar as the share link before you have drawn anything. Nothing to install, for you or for the people you send it to.

The free extension exists for the pages a proxy cannot reach: anything behind a login, internal tools, and localhost. It annotates in place in the browser you are already signed into, and it asks for only three permissions (activeTab, scripting, contextMenus), none of which grant standing access to your browsing. Both routes produce the same share link, and the recipient installs nothing either way.

What MarkLayer does not do

It captures no console logs and no network requests, which is what the $39 to $79 tier at Marker.io and BugHerd is priced for. Nothing syncs back from Jira, Linear or GitHub. Both surfaces are desktop only today, and a phone will tell you so. There is no list of your past links unless you sign in, because without an account there is nothing to look them up against. And on a PDF or an image, the inspector, measure and multi-select are off.

If every comment needs an owner, a status and a ticket in a tracker that stays in step, buy the tracker. MarkLayer is the visual feedback layer in front of it. Thefull audit of 21 feedback tools, with prices read off each vendor's own page, includes what MarkLayer does worse.

What all of this costs

Nothing. There is no paid plan, no trial, no per-seat price, no usage cap and no feature held back for a tier that does not exist. MarkLayer is Apache-2.0 licensed, so it cannot be withdrawn from under a workflow you have built on it, and you can self-host the whole thing on your own Cloudflare account. See pricing and theaudit of what "free" means at other tools.

Frequently asked questions

How many annotation tools does MarkLayer have?
Sixteen, and every one of them is free. Move, pen, highlight, line, arrow, rectangle, circle, text, comment, selection, area, eraser, inspector, multi-select, measure and guide. Each has a single-key shortcut, and the toolbar can be dragged anywhere on screen and reordered to suit how you work.
Can MarkLayer send annotations to Jira, Linear or GitHub?
Yes. Open the panel on a share link, connect Linear, GitHub or Jira, then file any single annotation as an issue and MarkLayer hands you the link to it. This is one way out: MarkLayer creates the issue, and nothing about that issue flows back. Slack, Microsoft Teams, Discord and a plain JSON webhook work differently, posting every new batch of annotations automatically. A room can hold five destinations at once.
Do the Jira, Linear and GitHub tokens get stored on your server?
No. For the three issue trackers, the room stores only the parts that are not secret, such as the repository name or the project key. The API token stays in the browser of whoever set it up and is sent straight to Linear, GitHub or Jira when they file something. Chat webhooks are different: the webhook URL is the credential, so it is stored with the room, and anyone holding the share link can see its last four characters and remove it.
What can an AI coding agent do with a MarkLayer link?
Twelve things, over the marklayer-mcp server. An agent can join the room, read the page, list and watch annotations, acknowledge one so the human sees it is being worked on, resolve it with a summary, dismiss it with a reason, reply with a question, leave comments of its own, and propose an exact text edit rendered as a diff. Install it with: claude mcp add marklayer -- npx -y marklayer-mcp
Can I get my comments out of MarkLayer?
Yes, two ways, both in the panel on the right of any share link. Copy or download every comment, reply and highlighted selection as Markdown, where a suggested edit arrives as a fenced diff block that pastes straight into a ticket or a coding agent. Or export the annotated page as a PNG, which captures the page and the drawings over it.
Does a comment have a status and an owner?
Yes. Every comment carries one of five statuses (open, in progress, resolved, approved, dismissed) and one of four priorities (low, medium, high, urgent). You can assign it to a person or to an AI agent, @mention anyone already working on that page, and attach up to four images per comment. Approved is the one status an agent never sets: it is the person who asked for the change confirming the fix.
Do I need an account to use any of this?
No. Every feature on this page works with no sign-up, no email and no install, for you and for anyone you send a link to. An optional account exists if you want it: sign in with a magic link and you can claim your links, switch one to view only, set its expiry and see them all in one dashboard. Nothing behind the account costs money, and nothing in front of it is degraded to sell it.
Does MarkLayer work on more than one page at a time?
Yes. A share link can hold a project of up to 50 pages, each with its own annotations, switched through a tab strip at the top of the viewer. Add a page by pasting its URL. The Markdown export covers every page in the project in one document, with a section per page.

Read next

How MarkLayer works, in plain EnglishBug report MCP servers comparedTwenty-one website feedback tools, prices checkedAnnotating localhost for AI coding agentsMarkLayer compared to other toolsWhat's new in MarkLayer

Try MarkLayer

Paste any URL at marklayer.app and annotate the live page in your browser. No install, no account, no sign-up. Recipients of your share links don't need to install anything either.

Annotate a page

Or add the free Chrome extension for sites the web app cannot embed, such as pages behind a login.