StitchFromPhoto

Turn any photo into a printable cross-stitch pattern

Visit Website
August 7, 2026 I built a privacy-first cross-stitch tool with no uploads or subscription

Most photo-to-cross-stitch tools can produce a convincing pixelated preview. That is only part of the job.

A pattern someone can actually stitch also needs a controlled thread palette, readable symbols, accurate fabric dimensions, stitch totals, and pages that remain legible when printed. That gap is why I built StitchFromPhoto.

This is the story of the first version, the technical decisions behind it, and why I chose a one-time per-image price instead of another subscription.

Starting with the finished craft, not the image effect

The first product decision was to work backward from what a stitcher needs at the fabric.

The user uploads a JPG, PNG, or WebP image, chooses a stitch width and a maximum number of thread colors, and selects an Aida fabric count. The tool then produces three views: the original image, a stitched color preview, and a symbol chart. It also generates a DMC thread key, stitch counts, and the estimated physical dimensions of the finished piece.

That scope made the product more demanding than a pixel-art filter. A visually pleasing preview can hide hundreds of isolated color changes. On fabric, those become unnecessary thread swaps and hard-to-follow symbols. The useful result is not the chart with the most detail. It is the chart that preserves the subject with a manageable grid and palette.

Why the image never leaves the browser

Personal craft projects often begin with family photos, children, pets, memorial portraits, or gifts. Uploading those images to a processing server felt like the wrong default.

StitchFromPhoto is a static-first Next.js 16 application built with React 19 and TypeScript. The conversion runs with the browser's Canvas API. There is no image-processing queue, storage bucket, or user account. Refreshing or closing the page clears the working image.

Keeping the work local reduced infrastructure and made the privacy promise easy to understand. It also forced a useful constraint: the conversion had to be fast enough to run on an ordinary device without hiding latency behind a server job.

The current algorithm is deliberately deterministic rather than generative AI. It resizes the source image to the requested stitch grid while preserving its aspect ratio, samples the pixels, and finds the nearest colors in a focused DMC reference palette. It then keeps the most frequently used matches up to the user's color limit and remaps every stitch to the nearest remaining shade.

The same image and settings therefore produce the same chart. Users can inspect the color blocks, symbols, codes, and counts instead of trusting a black box.

Printing was harder than previewing

The browser preview came together before the export experience felt usable.

A large cross-stitch chart cannot simply be squeezed onto one PDF page. The symbols become too small to read. I used jsPDF to split the chart into letter-size tiles, add stronger guide lines at regular intervals, and include the thread key and project dimensions. The high-resolution PNG is useful for digital reference, while the PDF is designed for someone following rows at a table.

This changed how I evaluated the product. I stopped asking only whether the output looked right on screen and started checking whether a person could count it, buy the right floss, estimate the fabric size, and recover their position after moving between printed pages.

Monetizing an occasional-use tool without a subscription

Cross-stitch pattern conversion is usually an occasional task. A recurring plan would make the revenue model familiar, but it would not match how many people use the product.

The full creation flow is free. Users can upload an image, adjust settings, inspect every view, see the dimensions, and review the DMC thread key without creating an account. A $2.99 one-time payment unlocks the high-resolution PNG and printable PDF for that source image. The same image can be adjusted and exported again for 24 hours.

The tricky part was enforcing image-specific access without uploading the image or requiring an account. The browser combines the image bytes with a browser-scoped random salt and creates a one-way SHA-256 identifier. Checkout receives that identifier, not the source file or its name. After Waffo confirms the completed order on the server, short-lived signed cookies unlock exports only for the matching image in that browser.

It is a narrower entitlement model than an account plan, but it keeps the product promise coherent: preview before paying, no recurring charge, and no source photo sent to the application server or checkout provider.

What I kept out of the first version

I intentionally left out accounts, cloud project storage, social galleries, and claims that the converter uses AI. They would add operating cost or marketing appeal, but they would not solve the core job better.

The first version also does not include detailed manual stitch editing. For now, users refine a result by changing the crop, stitch width, palette size, or source image. Manual cleanup is the clearest candidate for a future release because automated conversion cannot know whether a dark square is an important eyelash or just background noise.

I also built a small content layer around the tool covering photo preparation, DMC colors, fabric counts, reading symbol charts, and beginner workflows. The goal is to answer the practical questions that appear between uploading a photo and starting the first stitch, rather than treating SEO pages as disconnected landing pages.

What I want to learn next

This is the first public version, so I am looking for evidence before expanding the feature set.

I want to learn where people struggle with chart readability, whether the palette controls are understandable, and which editing operations would save the most time. I am also curious whether per-image pricing feels more honest for this kind of occasional-use tool than a monthly plan.

If you build image tools, sell one-time digital exports, or stitch your own patterns, I would appreciate your feedback. You can try StitchFromPhoto and inspect a complete pattern before deciding whether the export is worth paying for.

1 Comment

  1. 1

    The level of thought put into matching the output to the actual stitching workflow is interesting.

    I’m curious what early users are valuing most so far — the privacy aspect, the quality of the generated patterns, or the simplicity of the overall experience?

About

I built StitchFromPhoto because most converters stop at a pixelated preview. Stitchers also need DMC symbols, accurate dimensions, and printable pages. Processing stays in the browser, so photos are never uploaded.