Skip to content

About

A tool, not a service.

String Art Maker is a static website. There is no backend, no database and no account system, because none of those are needed to multiply some numbers and draw some lines.

Your photo stays here

The file is decoded by the page, solved on your CPU and rendered to your canvas. Nothing is uploaded, so there is nothing to leak, sell or subpoena.

No tracking

No analytics script, no cookies, no fingerprinting. The only thing stored on your device is your own projects, in local storage, which you can clear any time.

Free, actually

No trial, no watermark, no export limit, no "pro" tier hiding the PDF button. A static site costs almost nothing to run, so nothing is being recouped.

It works offline

Visit the studio once and the shell caches itself. Garages have bad wifi; the winding numbers should not depend on it.

Plain talk

What this site does not claim.

  • There are no customer testimonials on this site, because there are no customers yet. The pieces shown on the landing page are illustrations drawn for the site, solved by the real engine.
  • The renders are previews, not photographs. A physical board reads darker than the screen, because real thread casts shadows.
  • The time and thread estimates are derived from published build logs and from the geometry of your own solve. They are honest estimates, not measurements of your hands.
  • The solver is greedy, not optimal. It is fast, it runs on a phone, and it is good enough that the limiting factor is your photograph. It is not the best possible sequence.

Standing on shoulders

The people who worked this out first.

Computational string art has an unusually generous community: artists who published their method, makers who sell boards and open-sourced the engine anyway, and hobbyists who wrote down exactly how much thread they used. This tool exists because they did that.

Conventions differ between these projects — some number nails from zero, some run anticlockwise. Everything here uses one rule, printed on every template: nail 1 at the top, clockwise, every tenth bold. Do not mix a template from one tool with a sequence from another.

Built with

Boringly, on purpose.

Astro for the pages, React for the studio, Tailwind for the styling, and hand-written TypeScript for everything that matters: the solver, the canvas renderer and the PDF writer. There is no image library, no PDF library and no maths library.

The PDF writer is about four hundred lines that emit vector operators directly, which is why the nail dots are exactly 1.2 mm and the templates are a few dozen kilobytes instead of a few dozen megabytes of raster tiles.

The solver runs in a Web Worker with a main-thread fallback, so the progressive preview stays smooth while a few thousand chords are chosen.

The numbering convention

Nail 1 at the top centre, clockwise, every tenth in bold. It matches the reference templates this project was built against and it is stated on every PDF, in the player and in the exported text.

Reporting something broken

The most useful bug report names the browser, the board settings and what you expected. A flat grey preview is almost always the photo — start withtroubleshooting.

Go make something that takes four hours.

Open the studio