Reading on paper just feels better. It's slow. It's embedded in the physical. It invites raw notes.
The New Printer is a web app that turns any article URL into a clean, print-ready layout β no account, no install, no PDF export. Just open, paste, and print from your browser.
Live at thenewprinter.vercel.app
- Paste an article URL on the home page
- Choose 2 or 3 columns
- Adjust column breaks by dragging handles on the print layout
- Hit Print
The app fetches the article server-side, strips away clutter with Readability, and runs a custom text layout engine to fill columns with correctly-wrapped lines before any paint happens.
- Next.js 16 (App Router, server components)
@chenglou/pretextβ font-aware text segmentation used by the layout engine@mozilla/readabilityβ article extractionsanitize-htmlβ server-side HTML sanitizationlinkedomβ lightweight DOM for server-side parsing- Tailwind CSS v4
- Deployed on Vercel
thenewprinter/
βββ app/
β βββ page.tsx # Home β URL input form
β βββ print/page.tsx # Print view (server component)
β βββ api/extract/ # Article extraction API
βββ components/
β βββ PrintLayout.tsx # Full print canvas
β βββ Column.tsx # Single column renderer
β βββ ColumnBreakHandle.tsx # Draggable break points
β βββ ArticleBlock.tsx # Block-level renderer
β βββ UrlForm.tsx # Home form
βββ lib/
βββ extract.ts # Fetch + Readability + sanitize
βββ parse-blocks.ts # HTML β typed block tree
βββ layout-engine.ts # Column layout (line-level)
βββ types.ts
cd thenewprinter
npm install
npm run devOpen http://localhost:3000.
Contributions are welcome. Fork the repo, create a branch, open a PR.
The New Printer β because sometimes the best way to read online is offline.