MarkLayer

Product

MarkLayer featuresConnect MarkLayer to your coding agentWhat's new in MarkLayerPricingSupport the projectAbout MarkLayerPrivacy

Guides

All guidesHow MarkLayer works, in plain EnglishWebsite feedback tools in 2026, twenty-one comparedHow to annotate a website, four waysHow to annotate a PDF for freeHow to annotate an image or screenshotThe best free website annotation tools in 2026, auditedCollecting website feedback without making anyone log inThe Markup.io price hike: what changed and what it costs nowMCP servers for bug reports and visual feedback, comparedGive your AI coding agent visual feedback from a live webpageSending MarkLayer annotations to Jira, Linear, Slack and moreOpen-source website annotation tools in 2026

Use cases

All use casesHow to get client feedback on a staging site without asking them to install anythingPoint an AI coding agent at a UI element on your local dev serverMarkLayer for Design ReviewMarkLayer for QA Bug ReportingMarkLayer for Client FeedbackMarkLayer for Remote TeamsMarkLayer for StudentsMarkLayer for EducatorsMarkLayer for ResearchersMarkLayer for Content CreatorsMarkLayer for MarketersMarkLayer for AgenciesMarkLayer for Freelance Web DesignersMarkLayer for Product Teams

Compare

All comparisonsMarkup.io review: MarkLayer is a free Markup.io alternativePastel vs MarkLayer: a free Pastel alternativeBugHerd vs MarkLayer: a free BugHerd alternativeAnnotateWeb vs MarkLayer: a free AnnotateWeb alternativeJam.dev vs MarkLayer: a free Jam.dev alternativeMarker.io vs MarkLayer: a free Marker.io alternativeUserback vs MarkLayer: a free Userback alternativeRuttl vs MarkLayer: a free Ruttl alternativeLoom vs MarkLayer: a free Loom alternativeHypothesis vs MarkLayer: a free Hypothesis alternativeUsersnap vs MarkLayer: a free Usersnap alternativestagewise vs MarkLayer: a free stagewise alternativeVolley vs MarkLayer: a free Volley alternativeSuperflow vs MarkLayer: a free Superflow alternativeFeedbucket vs MarkLayer: a free Feedbucket alternativeFigma vs MarkLayerHuddlekit vs MarkLayer: a free Huddlekit alternativeAtarim vs MarkLayer: a free Atarim alternativezipBoard vs MarkLayer: a free zipBoard alternativeWebvizio vs MarkLayer: a free Webvizio alternativeBugSmash vs MarkLayer: a free BugSmash alternativeYbug vs MarkLayer: a free Ybug alternativeSureFeedback vs MarkLayer: a free SureFeedback alternativeSimpleCommenter vs MarkLayer: a free SimpleCommenter alternativePageProofer vs MarkLayer: a free PageProofer alternativeInflight vs MarkLayer: a free Inflight alternative

Alternatives

All alternativesFree Markup.io alternative: 5 tools comparedFree Pastel alternativesFree AnnotateWeb alternativesFree Jam.dev alternativesThe best free Marker.io alternative, plus 3 more picksFree Userback alternativesFree Hypothesis alternativesBugHerd free alternative: 4 picks, 3 that cost nothingFree Ruttl alternativesFree Usersnap alternativesFree stagewise alternativesFree Loom alternativesThe closest free Huddlekit alternative, plus 3 more picksThe closest free SureFeedback alternative, plus 3 more picksThe closest free Atarim alternative, plus 3 more picksThe closest free Feedbucket alternative, plus 3 more picksThe closest free PageProofer alternative, plus 3 more picksThe closest free Superflow alternative, plus 3 more picksThe closest free Ybug alternative, plus 3 more picksThe closest free SimpleCommenter alternative, plus 3 more picks

MarkLayer features

By Dean Rusin · Last updated: October 2026

MarkLayer is a free web app and Chrome 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, eleven places to send feedback, and a 17-tool MCP server for AI coding agents. No account, no paid tier.
On this page

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.

Some bugs are easier to show than to describe, so a comment can also carry a video note: up to two minutes from the camera or the screen, transcribed so an agent reading the room can act on what was said. When the notes pile up, the board in the annotation panel lays every one out by status, and you can change a card's status or assignee from its menu.

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 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, rather than by hiding the toolbar. The account is optional and free; annotating and viewing never require one.

A link you own can also take a password. Anyone opening it, including an agent connecting over MCP, has to enter it first, and repeated wrong guesses are throttled. Changing or removing the password signs out everyone who had unlocked it, so it works as a way to cut access after a review, not only before one.

Send feedback to Slack, Teams, Linear, GitHub, Jira, Trello, Notion and more

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.
ZapierAutomaticThe same JSON to a catch hook, to start a Zap. Needs a paid Zapier plan.
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.
TrelloYou pick oneAdds a card to the list you name from one annotation.
NotionYou pick oneFiles one annotation as a page under the Notion page you name.
ClickUpYou pick oneFiles one annotation as a task in the ClickUp list you name.

This is one way out. MarkLayer creates the issue, card, page or task 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 or Marker.io.

Unlike most tools, MarkLayer never sends the API token for Linear, GitHub, Jira, Trello, Notion or ClickUp to its server. The room stores only the repository, project key, list or page id. The token stays in the browser of whoever set it up. A room holds five destinations at once.

Every share link is also an MCP server, at the same address plus /mcp. It turns a review into a work queue an agent can actually work through rather than just read, and connecting Claude Code needs nothing installed:

claude mcp add --transport http marklayer https://marklayer.app/s/<id>/mcp

The Details panel on every link shows that command with the id filled in, and the MCP setup pagehas the same for Claude, Codex, Cursor and VS Code. For a client that only runs local servers, the same tools ship on npm as marklayer-mcp, installed once for every room:claude mcp add marklayer -- npx -y marklayer-mcp.

The 17 tools an AI agent gets over MCP
ToolWhat the agent can do
marklayer_read_pageThe page's headings, text, links and controls, each with the selector that finds it.
marklayer_room_infoThe URL under review, the viewport it was annotated at, and timestamps.
marklayer_list_annotationsEverything left on the page, filtered by status.
marklayer_get_annotationOne annotation in full, with its reply thread and any attached images.
marklayer_get_feedbackOne read of the room: counts by status, open items, checklist progress, poll tallies.
marklayer_watch_annotationsWait for new comments, and for anything assigned to the agent by name.
marklayer_acknowledgeFlip a comment to in progress so the reviewer sees it was picked up.
marklayer_resolveClose a comment and post what changed as a reply.
marklayer_dismissDecline a comment. The reason is required, and the reviewer reads it.
marklayer_replyAsk a question on the thread without moving its status.
marklayer_create_annotationLeave its own comment, pinned to an element, one per finding.
marklayer_suggest_editPropose exact replacement text, shown to the reviewer as a diff to accept.
marklayer_share_previewOpen a review room on a preview URL and return the link to send a human.
marklayer_set_next_stepsPublish a checklist of planned changes, each tied to the comments it answers.
marklayer_complete_next_stepTick a step off while the reviewers watch.
marklayer_askPut a multiple-choice question to the room and read the votes back.
marklayer_connect_roomSwitch to another share link by URL or id.

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.

It works the other way too. When an agent has built something, it can open a review room on the preview URL and send you the link instead of describing the change. A later preview of the same repository and branch becomes the next version of that room, and reviewers step between versions. The agent can post its plan as a checklist that ticks off as the work lands, and ask the room to vote when it needs a decision rather than an opinion.

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, the extension and a script tag

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.

The third route is for your own site. Paste one script tag into a page, or into every page of a project, and visitors comment on the live site itself, with no extension and no account. Copy the tag from the share popover, which also notes what a strict Content Security Policy has to allow.

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, GitHub or Trello. 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, GitHub or Trello?
Yes. Open the panel on a share link, connect Linear, GitHub, Jira or Trello, 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, GitHub and Trello tokens get stored on your server?
No. For the four 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, Jira or Trello 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?
17 things, over MCP. 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, propose an exact text edit rendered as a diff, open a review room on a preview it built, publish a checklist of planned changes and tick it off, and put a poll to the reviewers. Every share link is the server, at its own address plus /mcp, so connecting needs nothing installed: claude mcp add --transport http marklayer https://marklayer.app/s/<id>/mcp. The same tools ship on npm as marklayer-mcp for clients that only run local servers. Setup for Claude, Codex, Cursor and VS Code is at marklayer.app/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.

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.