QA and testers report bugs visually — developers and AI get structured context to fix them fast.
Highlight broken text, pin problem elements, draw on the page, record video. Ano exports everything as structured JSON that you paste into a ticket, a Slack thread, or an AI chat. One script, zero dependencies.
Give your QA team one of these — they report bugs visually, you get structured JSON with selectors, environment, and video.
One click to start reporting. Testers click the icon to activate Ano on any tab, click again to remove it. Badge shows when active.
Toggle bug reporting on any tab. No setup needed — works instantly on every page.
chrome://extensionsextension/ folderNo code changes needed. Give this to any tester — they drag it to their bookmarks bar or paste the code in the browser console.
Ship Ano in your site behind a secret URL parameter. End users never see it — your QA team activates it by appending ?ano=1 to any page.
<script>
if (new URLSearchParams(location.search).has('ano')) {
var s = document.createElement('script');
s.src = 'https://ano.phpless.digitalno.de/dist/ano.min.js';
s.onload = function () { Ano.init(); };
document.head.appendChild(s);
}
</script>
?ano=1 in the URL — if absent, nothing loadshttps://yoursite.com/page?ano=1 with your QA team?debug or ?feedback<script src="https://ano.phpless.digitalno.de/dist/ano.min.js"></script>
<script>Ano.init();</script>
| Option | Default | Description |
|---|---|---|
highlightColor |
#fde047 |
Default highlight color |
pinColor |
#3b82f6 |
Default pin color |
drawColor |
#ef4444 |
Drawing stroke color |
drawWidth |
3 |
Drawing stroke width in pixels |
shortcuts |
true |
Enable keyboard shortcuts |
videoRecording |
false |
Enable video recording during sessions |
sessionMaxDuration |
300000 |
Max session duration in ms (5 min) |
| Method | Description |
|---|---|
Ano.init(options) |
Initialize Ano with optional config. Returns the API object. |
Ano.destroy() |
Remove Ano entirely from the page and clean up all listeners. |
Ano.setMode(mode) |
Switch mode: 'highlight', 'pin', 'draw', or 'navigate'. |
Ano.startSession() |
Start a new annotation session. |
Ano.endSession() |
End the current session and show the report dialog. |
Ano.getAll() |
Return all annotations as an array. |
Ano.toJSON() |
Return structured export object — paste into an LLM or save to a file. |
Ano.export() |
Download annotations as JSON + video files. |
Ano.share() |
Upload annotations and video to a shareable link. |
Ano.import(data) |
Import annotations from a JSON object. |
Ano.importFile() |
Open a file picker to import a JSON file. |
Ano.clear() |
Remove all annotations from the current page. |
Testers point at the problem. Ano captures the structured context — selectors, DOM info, viewport, environment — so a developer or AI has everything needed to reproduce and fix it.
Select the exact text that's wrong. Export includes the quote, text-position selectors, and surrounding context.
Pin any element with a note. Captures the CSS selector and DOM metadata so a dev or LLM can locate it.
Circle areas or draw arrows. Stroke data and viewport dimensions are included in the export.
Record the issue as a video. Upload it alongside the JSON when sharing, or export as a separate .webm file.
Group annotations into timed sessions that track clicks, navigation, console errors, and page transitions.
Browser, OS, screen resolution, viewport size, timezone, language, connection speed — captured automatically.
| Shortcut | Action |
|---|---|
| Alt + H | Highlight mode |
| Alt + P | Pin mode |
| Alt + D | Drawing mode |
| Alt + N | Navigate mode (deselect tool) |
| Alt + S | Start / end session |
| Alt + E | Export annotations |
| Esc | Close popover / end session / dismiss dialog |