Features
Everything Lens does
The complete capability list — from per-channel separations to plugin slots to the i18n hook. If something on this page would make your prepress workflow click, it's already in the box.
See every pixel
A viewer that respects the artwork
Pin-sharp rendering on every device, with the controls reviewers actually reach for.
Pin-sharp PDF viewing on desktop, tablet, and phone.
Smooth zoom from 25% to 400%, pinch-zoom on touch, native scroll-and-pan.
Page thumbnails with at-a-glance issue counts so reviewers go straight to what matters.
Print-ready inspection
Press-floor accuracy in the browser
Every separation, every layer, every box — interactive and instant.
True ink separations — toggle Cyan, Magenta, Yellow, Black, and every spot ink one click at a time.
Layer (OCG) toggling that responds instantly — no waiting on the server between clicks.
Trim, bleed, and crop boxes overlaid on the page with sizes in millimetres and inches.
Dieline detection callouts per artwork region.
Professional measurement
The toolset on a real lens
Measure, sample, and verify without leaving the viewer.
Ruler: drag to measure in mm, in, points, picas, or agate simultaneously.
Color picker: click anywhere to read RGB, hex, and Total Area Coverage.
Densitometer: real CMYK + spot percentages plus TAC at any point, with over-limit warnings.
TAC heatmap: see every spot on the page that exceeds your ink coverage limit at a glance.
Collaborative review
Mark up the proof, not a screenshot
Annotation tools and review flows that survive a flaky connection.
Draw on the proof: pen, arrow, rectangle, ellipse, text, highlight.
Per-page autosave so a flaky connection never costs a comment.
Sidebar thread of every annotation across every page, with one-tap jump-to-page.
Read-only share links for clients — review without the risk of accidental edits.
Works with what you have
Drop in, scale up
Useful out of the box; deeper when you wire it up.
Drop in a PDF and it just works — no backend required for basic viewing, layers, measurements, and color picking.
Plug in your own services for deeper inspection, or deploy the lens-server backend for preflight-grade separations and TAC — all rendering is delegated to lens-server, no local Ghostscript required.
Tools you haven't wired simply don't appear — no clutter, no dead buttons.
Built for your brand
Looks like yours, not ours
Themeable surfaces, accessible defaults, native on every form factor.
Your logo, your colors, your domain — every surface themeable.
Light and dark modes out of the box.
Mobile-first chrome that feels native on a phone, not a shrunken desktop site.
Accessible defaults; keyboard navigation throughout.
Extensible by design
Composable from day one
Slot architecture, shadow replacements, and a generic overlay shape.
Plugin slots for overlays, panels, toolbars, dialogs, and custom annotation sources.
Drop-in replacements: ship a third-party panel that quietly shadows the built-in one with no fork required.
Generic data shape — convert your findings, brand-spec violations, or QA notes into overlay items the viewer renders identically.
Enterprise-ready
Self-host without surprises
Stateless, cacheable, observable on your terms.
Stateless reference backend; deploy as many copies as you need.
Cloudflare-friendly out of the box — every rendered tile is immutable and tagged for one-click cache purges.
No telemetry, no phone-home — bring your own analytics hook.
Internationalisation hook for any language your team needs.
No black boxes.
Developer love
A codebase you'd want to own
Modern stack, real docs, a clean integration path.
Modern React 19, ESM-only, fully typed.
Sub-path imports so your bundle pulls only what you mount.
Live demo and a complete reference backend — run it, and you're inspecting PDFs in two commands.
Comprehensive docs, real changelog, security disclosure process, and a code of conduct.
Ready to embed it?
The docs walk through wiring ViewerServices, mounting components, and shipping your first plugin.