New:Microsoft Teams Notifications Are Now Available in Socket.Learn more →
Get Started

@kynth/tearline

Package Overview
Dependencies
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@kynth/tearline

Wrap any HTML in one tag and it prints out as a thermal receipt. Save it as a PNG. Zero dependencies, no build step.

latest
Source
npmnpm
Version
0.2.0
Version published
Weekly downloads
25
-89.32%
Maintainers
1
Weekly downloads
 
Created
Source

Tearline

Any HTML you wrap in this one tag prints out as a thermal receipt. Then save it as a PNG.

Zero dependencies. No build step. Works from a <script> tag. MIT.

npm i @kynth/tearline
import '@kynth/tearline';

Or with no bundler at all:

<script type="module" src="https://tearline.thecompound.tech/tearline.js"></script>

<tear-line barcode="047320260726">
  <h1>MERIDIAN</h1>
  <small>Coffee &amp; Provisions</small>
  <hr>
  <p>Cortado · 4.25</p>
  <p><strong>Total · 4.25</strong></p>
</tear-line>

Attributes

widthpaper width in px (default 330)
seedinteger; same seed gives the same tear and barcode (default 1)
barcodestring to render as bars; omit for none
tiltdegrees of rotation (default -1.15)
flatpresent means no rotation and no drop shadow, for embedding and export
animatepresent means a print-out reveal on first paint

Methods

await el.toBlob({ scale: 2 });     // Blob
await el.toDataURL({ scale: 2 });  // string
await el.download('receipt.png');  // saves it

The export event

tearline:stage fires as an export moves through its four real steps: flatten, serialise, rasterise, encode. rasterise is where the time and the failures both live.

The one constraint

Rendering to an image uses an SVG <foreignObject>, which cannot reach across the network. Any <img> inside the receipt must be a data: URI or the export will drop it. Text and CSS are inlined automatically.

Naming

Published under the studio's original scope because the registry refuses the bare name tearline: its similarity filter reads it as too close to readline. The element is <tear-line> either way. The studio is Compound Labs at thecompound.tech; the @compound scope on npm belongs to another account, so the package keeps the scope it was first published under.

Live playground: https://tearline.thecompound.tech

Keywords

receipt

FAQs

Package last updated on 13 Sep 2026

Related posts