Read printed text & handwriting
Drop a photo of your notes, a receipt, a screenshot, or a whiteboard and get clean, editable text. A real OCR transformer runs entirely on your own device.
🔒 100% private — your image is never uploadedDrop an image here
or click to choose · paste with Ctrl/Cmd+V · PNG, JPG, WebP
Image · detected lines
Extracted text
How it works
Scribe runs a real optical-character-recognition model — TrOCR, a vision-transformer encoder paired with a text-decoder — directly inside your browser. When you drop an image, the page first finds the individual lines of text by analysing where the ink sits, crops each one, and feeds them to the model one at a time. The model reads each line and the page stitches the results back together. The model files download from a CDN the first time you use it, then your browser caches them, so after that it works with no network at all.
How is a model like this running locally?
The model is converted to ONNX and quantised so it is small enough to ship to a browser, and Transformers.js runs it through a WebAssembly runtime. All of the inference happens in a background Web Worker, which keeps the interface smooth while the text decoder generates words. Because the computation happens on your own machine, your documents never get uploaded and there is no per-page cost or rate limit. The Fast model is about 64 MB and is plenty for clear notes and screenshots; the Best model is larger and more accurate on messy or dense text.
Handwriting vs printed
The Handwriting model is trained on real handwriting, so it reads cursive and print and keeps the original capitalisation — it is the best default for notes, journals, and whiteboards. The Printed model is tuned for typed documents and receipts; it is excellent on dense printed lines but tends to normalise the casing of receipt-style text. If one mode misreads your image, try the other, or switch to the Best model.
Tips for the best results
Crop to just the text, hold the camera square so the lines are roughly horizontal, and give it good contrast and lighting. Photos of a single column work better than two-column layouts. Very small or very faint text is the hardest case, and that is where switching to the Best model helps most.
Is my image uploaded anywhere?
No. The model runs locally in your browser through WebAssembly. Your image never touches a server, which is why it stays private and keeps working offline once the model is cached.
Can it really read handwriting?
Yes. The default model is trained on real handwriting, so it handles cursive and print and preserves capitalisation. Clear, roughly horizontal lines work best.
Why does the first run take a moment?
The model file downloads once (about 64 MB for Fast). After that your browser caches it and every later run starts instantly, even with no internet.
What about multi-line documents?
Scribe detects each line of text in the image, reads them in order, and rebuilds the paragraph with line breaks. You can edit the result directly in the box and copy or download it.
Does it work on my phone?
It can, but the models and the on-device compute are heavy, so a laptop or desktop is smoother. On a phone, prefer the Fast model.
I build tools like this every day.
Senior full-stack engineer, available for senior or contract work, fully remote. See the rest of the lab or get in touch.