Halftone
Rebuild an image out of dots the way print does: four dot shapes, a cell size you set in pixels, and either one screen at your own angle or four at the traditional colour angles.
Drag & drop a file here, Ctrl+V to paste, oror
Dot area is the tone
A cell that is 25% dark gets a dot covering 25% of it. Because coverage is an area, the diameter grows as the square root of the tone, not in step with it — which is why a 50% dot is about 0.8 of the cell wide rather than half.
Angles and rosettes
One screen sits at 45° because a diagonal grid is the least visible to the eye. Four screens keep the strong inks 30° apart — cyan 15°, black 45°, magenta 75° — and put yellow at 0°, which is how the rosette avoids turning into moiré.
100% private
Your image never leaves your device. Every screen is drawn on the Canvas API in your browser and the PNG is built locally. No upload, no storage, no account.
How it works
What a halftone screen actually does
Ink is either on the paper or it is not, so a press cannot print grey. It prints dots of solid ink at a fixed spacing and varies how big each one is, and past arm's length the eye stops resolving individual dots and reads the average instead. This tool does the same arithmetic: the image is divided into square cells of the size you choose, the average tone of each cell is measured, and one dot is drawn in that cell covering exactly that fraction of it. Nothing is estimated and nothing is judged — the cell is measured, the dot is drawn, and the line under the preview prints the parameters that produced it.
Dot area, not dot width
What the eye adds up is the inked area, so a cell at 25% tone needs a dot covering a quarter of it — which makes the dot half as wide, not a quarter as wide. Every shape here is sized from that rule: a round dot of diameter d inks π·d²/4 of its cell, a square inks s², a diamond inks half its diagonal squared, and a line screen band inks its width times the cell height. Solving each of those for the dimension gives a diameter that grows with the square root of the tone, and only the line screen — which grows in one direction — is linear in coverage. Getting this wrong produces output that still looks like a halftone while every midtone is off, which is why the arithmetic is stated here instead of described.
Angles, cell size and lpi
A single screen sits at 45° by default because a diagonal grid is the least visible pattern to the eye. Four-colour mode uses the traditional set — cyan 15°, black 45°, magenta 75°, yellow 0° — which keeps the three strong inks 30° apart so their overlap forms a rosette rather than a moiré, and puts the weakest ink where its own pattern shows least. Cell size is given in pixels because that is what a screen image has; the lines-per-inch figure next to it is conditional on printing the PNG at 300 DPI, and at any other output resolution the same file is a different screen ruling. Small cells read as a fine print screen, large cells as a comic or poster dot.
Where it runs, and what it is not
Everything happens in your browser through the Canvas API. The image is never uploaded, nothing is stored, and no account is needed. Large images are worked at up to 2048px on the long edge, and the source is never scaled up. One thing this is deliberately not: the four-colour mode is a screen simulation composited in RGB on your monitor, not a press-ready separation — there is no colour profile, no ink model, no dot gain and no overprint behaviour, so treat the output as an effect rather than as prepress artwork. To check whether a file is big enough to print at all, use the Print Readiness scanner; for the pixel-level version of the same idea, see Dithering.