Darker cells mean a higher score for this topic on that metric.
LessMore
Last reviewed Sources & creditsMedia creditsMethodology
Quick answers
When should I pick Rough.js annotation?
When the story is: explainer highlights, ad concept frames, teaching callouts.
When should I avoid Rough.js annotation?
Skip it in cases like: dense quantitative comparison that needs precise lengths.
Who invented or popularised it?
Rough.js brought controllable sketch rendering to the open web
What does it encode?
imperfect strokes and fills as attention cues
Is it OK in ads?
Yes if one claim is visible at a glance in Meta, Google and retail print; otherwise link to a full figure.
Will a teacher accept it?
Yes for lab reports and poster boards if axes, units and a source line are present.
Rough.js annotation encodes values as imperfect strokes and fills as attention cues. Rough.js brought controllable sketch rendering to the open web.
In reports, ads and assignments it fits explainer highlights, ad concept frames, teaching callouts. Skip it when dense quantitative comparison that needs precise lengths.
Software
- Rough.js — Sketch-style canvas/SVG primitives - MIT. · MIT · github.com/rough-stuff/rough
- Rough Notation — Animate underlines and boxes for emphasis. · MIT · github.com/rough-stuff/rough-notation
- Excalidraw — Full sketch app when you need a scene, not a stroke. · MIT · github.com/excalidraw/excalidraw
- Fabric.js — Canvas object model if you build a custom annotator. · MIT · github.com/fabricjs/fabric.js
- Callout SVG — Clean teaching callouts without sketch noise. · CC0 examples · github.com/Tool-Lifes/viz-atlas
Exports
- Exports 1 — SVG
- Exports 2 — PDF
- Exports 3 — EMF/SVG into slides (no screenshots)
- Exports 4 — SVG for web, PDF for print
Accessibility
- Accessibility 1 — Never hue alone. Stack pattern, label and position.
- Accessibility 2 — 4.5:1 for text, 3:1 for large marks.
- Accessibility 3 — Short alt text on the chart; numbers also as an HTML table.
- Accessibility 4 — Motion only as emphasis. Honour prefers-reduced-motion.
Rough.js annotation: honour imperfect strokes and fills as attention cues, and switch when dense quantitative comparison that needs precise lengths.