Handplot Open the app

For Bambu Lab, Prusa, Creality, Voron and 400+ printers

Real handwriting, written by your 3D printer.

Handplot turns your 3D printer into a pen plotter. Type a note and it writes it with a pen, in handwriting that actually looks real.

  • Free
  • Nothing to install
  • Every move safety-checked
Seen from above, 6× speed

How it works

Four steps from text to paper

About five minutes, all in your browser. The app shows you around the first time you open it.

1

Type your text

Type or paste it in. The app tells you how many words fit on a page; longer text continues on page 2, 3 and so on.

2

Pick a handwriting

Choose from 45 styles. Neatness and line wobble make it tidier or more casual.

3

Set printer and paper

Choose your printer and paper size, then drag the paper on the build-plate preview to where it will sit.

4

Save and print

Click Save G-code and run the file like any other. The printer pauses so you can place the paper and attach the pen.

4 of the 45 styles · tap one to see it written See all 45 styles in the app →

A quick tour of the app

The Handplot app: text box, handwriting styles and sliders on the left, the build-plate preview with the written page on the right 123 456 7

Swipe to see the whole app →

  • 1Text. Type or paste what you want written. Characters the model can't write are listed under it.
  • 2Handwriting. Click a style to use it.
  • 3Neatness and letter size. Line wobble and spacing are under More options just below. What each one does.
  • 4Build-plate preview. The page as it will be written. Drag the paper, scroll to zoom, click a word to move, resize or restyle it. On a phone, the full-screen button zooms onto the paper.
  • 5New version / Save G-code. New version rewrites the same text with fresh handwriting. Save G-code makes the file.
  • 6Printer settings. The pen offset, pen heights, pauses and speeds.
  • 7Time estimate. How long the page takes, including the pauses.

Make the page yours

Edit any word or line

Click a word in the preview and a small bar opens right under it. Move it, resize it, give it another handwriting or write it again. The rest of the page stays exactly as it is.

Click, drag, resize, restyle: the editor bar in the app
  • Move it

    Drag the word, or nudge it with the arrow keys: 0.5 mm a press, 5 mm with Shift. It can't be dragged off the paper.

  • Make it bigger or smaller

    A− and A+ change it in 10% steps, from 30% to 400%. The lines below make room for a big word.

  • Give it another handwriting

    Pick any of the 45 styles for just that word, or go back to the page's own.

  • Write it again

    A fresh version of just that word, if one came out wrong.

  • Change a whole line

    Switch the bar to Whole line to resize, move or restyle the line the word is on: a bigger title, a smaller footnote.

  • Add a word or a line

    Add word puts new words right after it. With Whole line on, Add line puts a new line under that line. Your text box updates too.

Changed your mind? Ctrl+Z undoes a change, Ctrl+Shift+Z redoes it. Your changes are kept in this browser: they stay when you reload, press New version or edit other words, and the Text card counts them with a Reset all. Moved and resized words go through the same safety checks as the rest of the page before any G‑code is made.

What you need

Print the pen holder

Handplot is set up for Plotter by Elli: a pen holder that clips onto the print head of the A1 and A1 mini, no screws. It's made for Stabilo pens and fits similar-sized markers. To fit it, take the front cover off the print head.

Pen offset X 1 · Y −25 mm

Its pen offset, X 1 · Y −25 mm, is already the app's default, so with this holder you can skip calibrating.

Designed by Elli and shared free on MakerWorld, so it's downloaded from there.

Download the pen holder

The guide

Everything else, when you need it

Setting up, placing the paper, printing and every setting, step by step. Open just the part you need.

Before your first print

Calibrate the pen offset

The pen sits a little beside the nozzle, usually in front of it. The app needs to know by how much, so the writing lands where the preview shows it and the pen never runs off the front of the plate.

Using the Plotter holder? Its offset is X 1, Y −25 mm, already filled in (if you opened the app before, type it into Printer settings → Pen offset). If BambuPlot already works for you, copy its “tool offset” there instead. Otherwise, print the offset test once:

BACK OF PRINTER A4 PORTRAIT push into this corner aimed drawn 87mm 100.5 mm FRONT · YOU STAND HERE
Long line
Y = 60 − 87 = −27 mm
Short mark
X = 100.5 − 105 = −4.5 mm

Save your G-code again after changing the offset: files saved before still use the old one. The test is the same for every printer; on an A1 mini the short mark is aimed at 90 mm instead of 105 mm.

Placing the paper

Reading the preview

The preview shows the build plate from above with the front of the printer at the bottom, drawn where the pen tip can reach. Drag the paper to where it will sit, or click Place paper automatically to put it where the pen reaches so writing starts at your top border.

  • Red dashes: where you'll slide the paper back, only with Long pages ticked.
The easy way to line it up: in pause 1 the head stops with the pen holder right above where the first letter goes. Put the paper so that spot matches the preview, then tape all four corners. The paper must not move while the pen writes.
pen can't reach ↓ the pen stops here in pause 1 FRONT OF PRINTER

Running the file

What happens when you print

Send the .gcode file to the printer the same way as other plain G-code (for example on the SD card). The pauses are timed: the printer carries on by itself when the time is up. With Printer sounds on, it plays a tune at each pause.

FRONTBACK pen out of the holderthe nozzle touches the plateto find its height pause 1 · 30 splace the paper underthe pen holder, tape it pause 2 · 30 sslide the pen down tothe paper, then clamp it

Seen from the side: the head moves and lifts the pen between strokes; the bed stays put.

Change the pause lengths in Printer settings → Pauses during printing. For long pages with Long pages ticked, there's a third pause: the pen stops over the last mark it wrote; slide the paper toward the back until that mark is right under the pen tip.

First time on a printer? Click Printing → Save reach check and run that file with no pen and no paper: the head visits the far corners of the page's writing at the height it travels at, slowly, so you can see the pen holder clears the bed clips, wiper and frame. Then do a dry run: tick Printing → Dry run and save: the pen is clamped as usual, then stays 8 mm above the paper the whole way. Watch it with a hand near the stop button.

Reference

What each setting does

The settings are on the left of the app. Each card shows the main ones; the rest are under More options, which names any you have changed. Every gap is an average: real handwriting never repeats exactly, so each word and line still varies a little, more with higher line wobble.

Neatness

How carefully the hand writes. Higher is tidier and more regular; lower is messier, with more variation between letters. Each style starts at the neatness it looks best at.

0 to 2

Line wobble

How human the page layout is: lines that slope and bow a little, ragged starts, words that drift in size and slant. 0 gives ruler-straight lines.

0 to 2 · default 1

Word and line spacing

Word spacing is the average gap between words, in letter heights. Line spacing is the distance from one line to the next, in mm; it must be at least 1.5 × the letter size.

words 1.0 · lines 8 mm

Letter size

The height of small letters like a, e and x (the x-height), in mm. Capitals and tall letters are about twice that.

1 to 20 mm · default 2.8

Pen heights

Writing height is the nozzle's height while the pen is down; the pen is clamped touching the paper at this height in pause 2. Pen-up height is used between strokes, about 2 mm higher.

10 mm · 12 mm

Pen offset

Where the pen tip is compared with the nozzle. X is left/right (negative = pen to the left); Y is front/back (negative = pen in front). Measure it with the offset test.

X 1 · Y −25 (Plotter holder)

Everything else

SettingWhat it doesDefault
Page (left panel)
PrinterWhich printer the file is for: pick the maker, then the printer. A Bambu Lab, or any of the 400+ printers OrcaSlicer knows (Prusa, Creality, Voron, Elegoo, Qidi…). Its bed, keep-out areas and firmware are used for every safety check, so only run the file on that printer.Bambu Lab A1
Paper · OrientationA4, A5, A6, US Letter, a 4×6 in card or Custom, portrait or landscape.A5 portrait
Border ↔ / ↕Blank margin left and right (↔) and top and bottom (↕) of the page.15 mm · 15 mm
Printer soundsBambu's own start and finish tunes, plus a tune at each pause. A1, A1 mini and P2S only.On
Long pagesFor pages longer than the pen reaches (A4 on an A1). Off: the text continues on the next page. On: the printer pauses mid-page so you can slide the paper back.Off
LinesPlain paper, or the ruling of lined paper (6 to 10 mm). With lined paper, measure where its first printed line (↓ from the top edge) and margin line (→ from the left edge) are: every line of writing then sits on a printed line. Picking one also sets letters that suit it (2.3 mm for 8 mm lines).Plain paper
Header · Page numbersA line at the top of every sheet: your header text on the left, “Page 1”, “Page 2”… on the right. Each sheet's is written afresh.Off
Printing (left panel)
Dry runSaves files that do everything except write: the pen is clamped as usual, then stays 8 mm above the paper.Off
Save reach checkSaves a file to run with no pen and no paper: after homing, the head visits the written points nearest the four corners of this page's writing, at pen-up height, slowly, waiting 3 s at each. Check the pen holder clears everything before the first real run on a printer.
Start at lineSaves this page from that line on, after the pen ran out or the run stopped. Lines above it turn grey in the preview and aren't written again.1
New versionWrites the same text again with fresh handwriting and layout. Use it if a word comes out garbled.
Save G-code · Save all pagesSaves the page on screen, or every page as a zip (1_page.gcode, 2_page.gcode, …). Print them in order with a fresh sheet each time.
Printer settings → Pauses during printing
Pause 1: place the paperHow long the head waits above the first letter so you can place and tape the paper.30 s
Pause 2: attach the penHow long it waits at writing height so you can slide the pen down to the paper and clamp it.30 s
Pause 3: slide the paperOnly with Long pages on: time to slide the paper back between passes.45 s
Printer settings → Speeds
Writing speedPen speed while writing. 1500 is about the speed of real handwriting; each stroke varies a little.1500 mm/min
Travel speedSpeed of pen-up moves between strokes.6000 mm/min
Up/down speedHow fast the pen is lifted and lowered.600 mm/min
Pen settle timeA tiny wait after every pen down and up so the ink starts and stops cleanly. Raise it if strokes start faint.60 ms
Printer settings → Custom sizes
Bed width, depth, max heightOnly used when the printer is Custom.
Paper width, heightOnly used when the paper is Custom.

More you can do

Lined paper, two pens and other extras

Small things that save a page, or make it look more like your own notebook.

Code, for programming assignments

Paste your program and turn on Code under the text box. Every line and indent stays as typed, and digits and the symbols the handwriting model never learned, like # < > { } [ ] = + * / _ & |, are drawn by hand in the page's own slant and size, a little differently each time. A line too long for the paper carries on one step further in, and the Indent slider under the text box sets how far in each tab goes.

Lined paper

Under Page → Lines, pick your paper's ruling, then measure two things with a ruler: how far its first printed line is below the top edge, and where its margin line is. Every line of writing then sits on a printed line, right of the margin, and the letter size drops to suit the lines if it was bigger.

Underline, and a second pen

Type _like this_ to underline words with a hand-drawn line, and *like this* to write them with a second pen, a red one say. The printer writes everything in the first pen, then lifts so you can swap pens, and writes the rest. A * or _ on its own, as in 5 * 3, is simply written.

Header and page numbers

Fill in Page → Header (your name and the date, say) and tick Page numbers. Every sheet starts with that line, written afresh each time, with “Page 1”, “Page 2” and so on at the right.

Edit any word or line

Click a word in the preview: drag it or nudge it with the arrow keys, make it bigger or smaller, give it another handwriting, write it again, or add words after it. Switch to Whole line for its whole line, or to add a line under it. See how it works.

Start again from a line

If the pen runs dry or the run stops, leave the paper taped down, fit a new pen and set Printing → Start at line to the line it stopped on. The lines above it turn grey and aren't written again.

Dry run

Tick Printing → Dry run to save a file that does everything except write: the pen is clamped as usual, then stays 8 mm above the paper. Check where it goes before you use any ink.

Every file also switches the nozzle heater off right after homing, so the hotend stays cold next to your pen holder.

Supported printers

Works with 404 printers

Bambu Lab, and every printer OrcaSlicer knows with a rectangular bed, each with its own writing area, keep-out areas and firmware. Among them: Bambu Lab A1, P1P / P1S and X1 Carbon / X1E, Prusa MK4, MINI and CORE One, Creality Ender-3 V3, Ender-3 Neo and K1, Anycubic Kobra Neo, Kobra 2 and Kobra 3, Elegoo Centauri Carbon and Neptune 4, Voron 2.4 350 and Trident 300, Qidi Q1 Pro, Sovol SV06 and SV07, Flashforge Adventurer 5M and Artillery Sidewinder X2.

See all 404 printers and find yours →

Troubleshooting

Questions

The pen goes off the front of the plate on the last lines

The pen offset is missing or wrong. Run the offset test, save the offset, then save your G-code again: files saved before still use the old offset.

Not all of my text is on the page

It continues on the next page. Use the arrows above the preview to see each page and Save all pages to get them all. For one long A4 page instead, tick Long pages and slide the paper when asked.

A word looks garbled or has a stray mark

The model occasionally slips. Click that word in the preview and choose Write again, or New version for the whole page. Raising Neatness a little also helps.

The pen ran out halfway down the page

Leave the paper taped where it is. Fit a new pen, set Printing → Start at line to the line it stopped on and save again: the new file writes from that line on, starting over its first letter.

Some characters are missing

The model writes letters and ! " ' ( ) , - . : ; ?, and the app draws digits, # < > { } [ ] = + * / \ % & | ^ ~ _ @ $ and capital Q, X and Z by hand in the same slant and size. Accents are dropped (é becomes e), and anything else, such as other alphabets or emoji, is skipped. The app lists what it skipped under the text box.

Can it write code for a programming assignment?

Yes: C, C++, Java, Python and the rest. Paste the program and turn on Code under the text box. Every line and indent stays as typed, _ and * are written instead of underlining, and symbols like #include <stdio.h>, braces and operators are drawn by hand to match the handwriting. A line too long for the paper carries on one step further in, and the Indent slider sets how far in each tab goes. See Code, for programming assignments.

The nozzle shows a temperature

The G-code never heats anything, and it switches the nozzle heater off right after homing. Any heat you still see is left over from a print and cools down by itself. If your pen holder is printed in PLA, keep it away from the hotend.

Can I move a word, or make one line bigger?

Yes. Click the word in the preview: a bar opens under it to move it (drag it or use the arrow keys), make it bigger or smaller, give it another handwriting, write it again or add words after it. Switch the bar to Whole line to change its whole line or add a new line under it. See Edit any word or line.

Which printers does it work with?

Bambu Lab printers (A1, A1 mini, P1P / P1S, P2S and X1, checked by hand; it was built on an A1), and every printer OrcaSlicer knows that has a rectangular bed: Prusa, Creality, Voron, Elegoo, Qidi, Anycubic, Sovol and many more, over 400 in all. Each one's bed size, keep-out areas and firmware come from OrcaSlicer's printer profiles, and Klipper printers get pauses written the way Klipper reads them. Round (delta) and belt printers aren't supported. On a printer for the first time, save a reach check and a dry run before using ink: the data comes from OrcaSlicer, and only you can see how the pen holder fits. See the full list of supported printers. For any other printer, pick Custom and enter its bed size.

Is the G-code safe for my printer?

Every setting is range-checked, and every move in the file is checked against the chosen printer's bed (and the P1/X1 filament-cutter corner) before it is saved. If anything is unsafe, the app refuses to save and says why. Only run a file on the printer named at the top of it, and do a dry run first.

Ready to write?

It opens in your browser and remembers your settings.

Open the app