LabelCraft
A powerful label data editor and print tool. Design, edit, and print professional labels on standard sticker sheets - everything runs right in your browser.
LabelCraft covers the full label workflow - from data entry and image editing to pixel-accurate printing - without any external software.
Clean Data Entry
Three label types: Text (4 lines), Image with caption, or Mixed. The entry form is pure data - no formatting clutter. Just type and save.
Image Editor
Crop (with aspect-ratio lock), rotate, flip, adjust brightness/contrast/saturation, and remove backgrounds to transparent PNG.
CSV Import & Export
Import hundreds of labels from any spreadsheet instantly. Export all entries back to CSV for re-importing or use in other apps.
Per-Line Print Formatting
In the print dialog, set Bold, Italic, and size % independently for each line position (Line 1-4). Toggle any line off to skip it entirely from printing. Settings persist across sessions.
Pixel-Accurate Print
Preview and print use the exact same formula. Fixed cell sizes match your label sheet precisely. Line-height tuned for complex scripts like Gujarati, Devanagari, and Arabic.
Sheet Presets + Custom
8 built-in Avery and L-series formats, plus a fully custom sheet builder - set columns, rows, label size, margins, and gaps.
Groups
Organise entries into color-coded groups. In the print dialog, filter which groups to include - print just one category at a time from the same file.
Undo / Redo
50-step history for every action - add, delete, drag-reorder, fill sheet, bulk repeat, CSV import, and more. Ctrl+Z / Ctrl+Y.
Fill Sheet & Bulk Repeat
Auto-distribute entries to fill exactly one page, or set a repeat count on all entries at once with Bulk x.
Save & Restore
Save your full session as JSON - entries, images, groups, and all print settings. In supported browsers, Save writes straight back to the same file on disk - no re-downloading. Use Save As to pick a new name or location anytime. The app never reopens your last file automatically, but offers a one-click recovery banner if it finds unsaved work from before.
Multi-Page Preview
See all print pages at once in the dialog, updating live as you change settings. Supports Start-at-cell N for partially-used sheets.
Font Color & Bold Override
Pick a global font color for all label text. Override bold for all lines at once - Auto, Force Bold, or Force Normal - independent of per-line settings.
Five steps from blank page to printed labels.
Add label entries
Use the left sidebar to add entries. Three types available:
- Text: Up to 4 lines of plain text. Line 1 is the main heading.
- Image: Upload a photo or logo with an optional caption.
- Mixed: Image combined with up to 3 text lines.
The entry form is intentionally plain - just type your data. All formatting (bold, italic, size, color, line visibility) is handled in the print dialog, keeping data and presentation cleanly separated. Assign a Group to each entry for filtering at print time.
Organise your entries
The main table lets you manage all entries:
- Drag the :: handle to reorder rows.
- Click a thumbnail to edit that image.
- Click the pencil button to edit an entry's text and formatting.
- Click the duplicate button to copy an entry.
- Set the x column to repeat a label N times when printing.
- Use Fill Sheet to auto-distribute repeats for exactly one page.
- Use Groups (toolbar button) to create color-coded groups, assign entries to them, and filter which groups print in the print dialog.
- Use Export CSV in the header to download all entries as a spreadsheet.
Edit images (optional)
Click any image thumbnail or the [edit] Edit button to open the image editor:
- Rotate: -90 deg, +90 deg, 180 deg, or fine-tune with the rotation slider.
- Crop: Drag to select. Tick "Lock aspect ratio" to constrain proportions.
- Adjustments: Brightness, contrast, saturation sliders.
- Remove BG: Click "Remove BG", set tolerance, click the background area. Transparent pixels are shown on a checkerboard. Click Undo to revert.
Save your session
Click Save (Ctrl+S) to write the file - if it's already open from disk, this updates that same file in place with no dialog. Use Save As (Ctrl+Shift+S) to choose a name and location, e.g. for a brand-new file or a copy. Click Open JSON to load a saved session. The app always starts empty on load - it never reopens your last file automatically, though a recovery banner will offer to restore any unsaved work if it finds some left over from before.
Configure and print
Click Print Labels (or Ctrl+P). The print dialog has several sections:
- Sheet Format: Pick a preset (Avery 5160, L7160, etc.) or define a custom sheet with your own columns, rows, label size, margins, and gaps.
- Font: Choose family (or upload a .ttf/.otf font), set base font size with the slider, pick a font color, and set Global Bold Override (Auto / Force Bold / Force Normal).
- Line Formatting & Visibility: Four rows, one per line position. Each has a B (bold) toggle, I (italic) toggle, size % input (relative to base size - default Line 1 = 130%, Line 2/3 = 100%, Line 4 = 80%), and a Print checkbox. Uncheck Print on any line to skip it across all labels. These settings are remembered between sessions.
- Cell Style: Border style, cell padding, vertical alignment (Top/Center/Bottom), and text alignment (Left/Center/Right).
- Group Filter: Tick/untick groups to include only selected groups in the current print run.
- Start at cell N: Skip the first N cells on page 1 - useful for partially-used sheets.
The multi-page preview on the right updates live as you change any setting. Scroll to check all pages before printing.
Click Print Now. In your browser's print dialog set margins to None and scale to 100%.
All major actions have keyboard shortcuts.
All 8 presets use exact manufacturer specifications.
| Name | Grid | Label Size | Page | Region |
|---|---|---|---|---|
| Avery 5160 | 3 x 10 = 30 | 66.7 x 25.4 mm | Letter | US |
| Avery 5163 | 2 x 5 = 10 | 101.6 x 50.8 mm | Letter | US |
| Avery 5164 | 2 x 3 = 6 | 101.6 x 84.7 mm | Letter | US |
| Avery 5167 | 4 x 20 = 80 | 45.7 x 12.7 mm | Letter | US |
| Avery 5371 | 2 x 5 = 10 | 88.9 x 50.8 mm | Letter | US |
| L7160 (A4) | 3 x 7 = 21 | 63.5 x 38.1 mm | A4 | EU |
| L7163 (A4) | 2 x 7 = 14 | 99.1 x 38.1 mm | A4 | EU |
| L7181 (A4) | 4 x 8 = 32 | 45.7 x 21.2 mm | A4 | EU |
In the Print dialog, scroll to the Custom Sheet panel. Enter columns, rows, label W/H, margins and gaps in mm. Click Apply Custom. Settings save with your JSON file.
Accepts comma, semicolon, tab, or pipe-delimited files, with or without a header row. Each row becomes one text label.
- Columns map to Line 1 -> Line 4. Extra columns are ignored.
- Empty cells produce blank lines, which are omitted from the label.
- Fields with commas must be quoted:
"Smith, John" - You can paste CSV directly into the text area - no file needed.
- The Repeat setting applies to every imported row.
- Imported entries are always type Text. Add image labels manually.
Your data lives in your browser's memory while the page is open, plus a local-only recovery copy in your browser's storage (never sent anywhere). That recovery copy never opens automatically - the app always starts empty, and if it finds leftover data from a previous session it shows a banner so you can choose to recover or discard it. Always use Save (or Save As) before closing the tab to keep a permanent copy. Images are stored as base64 inside the JSON file.
Misalignment is almost always caused by browser print settings. Fix: in the browser print dialog set Margins -> None, Scale -> 100%, and Paper size to match your sheet (Letter or A4). Do not use "Fit to page". Print a test on plain paper first and hold it up against the label sheet to confirm alignment before printing on stickers.
In the Print dialog, set Start at cell N to the number of already-used cells. For example, if the top row of a 3-column sheet is used, enter 3. Your labels will start from the next available cell. The multi-page preview updates immediately to show the result.
Two ways: set the x (repeat) column on individual rows manually, or click Fill Sheet in the toolbar to automatically distribute repeats so exactly one sheet page is filled. You can also use Bulk x to set the same repeat count for every entry at once.
Yes. In the Print dialog under Font, click Upload Font and choose a .ttf, .otf, .woff, or .woff2 file. It's loaded into the preview instantly, added to the font dropdown, and embedded in the print document so it prints correctly even if not installed on your system.
The Remove BG tool uses a flood-fill algorithm on canvas pixels. Click "Remove BG" in the image editor, then click any background area. It samples the clicked color and removes all connected pixels within the tolerance range. Increase tolerance for gradients or uneven backgrounds. Click multiple times to refine edges. Use Undo to revert. The result is saved as a transparent PNG.
LabelCraft intentionally clips text at the cell border to match the physical label - wrapped text would overflow the adhesive area. Fix: reduce font size in the Print dialog, split long text across multiple lines (Line 2, 3, 4), or choose a sheet format with larger labels. The preview shows exactly what will print.
Works best on desktop browsers:
- Google Chrome - recommended, best print fidelity
- Microsoft Edge - excellent
- Firefox - fully supported
- Safari - supported; print margins may need manual adjustment
Mobile browsers are not recommended for printing. Use a desktop browser.
Use the Custom Sheet panel in the Print dialog. You'll need your sheet's spec sheet from the manufacturer - look for: columns, rows, label width/height, top/left margin, and horizontal/vertical gap (all in mm). Enter these values and click Apply Custom. Save as JSON to keep the settings for next time.
JSON size depends on image count and resolution. A 1MB image becomes ~1.3MB as base64. For large sessions, resize images to ~400x400 px before uploading - no visible quality loss at label scale, but dramatically smaller file size. Text-only sessions are typically under 50KB regardless of entry count.
| :: | # | Img | Content | Type | Group | x | Actions |
|---|
No label entries yet
Use the sidebar to add entries, or import a CSV.