A 3:2 photo at 48 dots across becomes 1,536 circles: each one takes the average color of its cell, and halftone grows the circle as the cell gets darker
Turning a photo into circle dots means dividing it into evenly spaced cells and drawing one circle in each, filled with the average color of the pixels inside that cell. You choose how many dots go across, and the tool sets the number of rows from the image's proportions. Split the 960 × 640 px sample into 48 dots across and you get 32 rows and 1,536 circles in all.
If every circle stays the same size, the picture is drawn by color alone, like beads or an LED sign. Choose "By tone (halftone)" and circles grow in the darker cells, which looks like the dots in a printed newspaper. The six style swatches next to the picture are previews drawn from the image you loaded, and "Dots per color" below shows how many circles were drawn in each color. Your image is processed only in this browser and is never sent to a server.
When to turn a photo into circle dots
- You want a pop art poster or a merch graphic: halftone is the printing method of showing tone with dots of different sizes. The Ben-Day dots, devised by the printer Benjamin Day in 1879, became widely known through Roy Lichtenstein's pop art. The "Pop art" style cuts the picture to six colors and varies circle size with tone to get that look.
- You are planning a bead or sticker pattern: one circle is one bead. Hama Midi beads are 5.0 mm across, so 48 beads wide comes to about 24 cm, and Mini beads (2.5 mm) give about 12 cm. If you reduce the picture to the number of bead colors you own, "Dots per color" is exactly how many beads of each color you need.
- You are making an LED-board or neon-style thumbnail: widely spaced circles on a black background look like a screen of lit bulbs. The simpler the picture, the better it reads.
- You are sending it to large-format print or a cutting file: saved as SVG, every circle stays a real shape, so edges stay sharp at any size, and circles of the same color are grouped, which makes it easy to recolor them in one step in a design program.
How to use it
- Add an image: click "Choose image" or drag a picture onto the work area. A copied image can be pasted with Ctrl+V (⌘V).
- Pick a style: click one of the six round swatches and the layout, dot size, spacing, color and background change together, with the dots redrawn outward from the center.
- Set the dots across: type a number, or use the slider or the chips, anywhere from 16 to 200. Fewer dots mean larger circles and a simpler picture.
- Fine-tune: below, change the layout (grid or staggered), dot size (all the same or by tone), spacing, background and color one at a time. Once a value differs from the style, the swatch selection clears.
- Check and save: use "Show original" to flip between the two, and click a color under "Dots per color" to highlight only its circles. Then choose PNG, JPG or SVG and the long-side size, and click "Save".
The six styles
| Style | Layout | Dot size | Spacing | Color | Background | Good for |
|---|---|---|---|---|---|---|
| Classic dots | Grid | All the same | 12% | Original colors | #FFFFFF | A photo-like default for profile pictures and thumbnails |
| LED board | Grid | All the same | 26% | Original colors | #000000 | A scoreboard or neon-sign look on a dark background |
| Halftone | Staggered | By tone | 0% | Single color #1A1A1A | #FFFFFF | Black-and-white newspaper or comic-style dots for posters |
| Pop art | Staggered | By tone | 0% | Reduced to 6 colors | #FFF4D6 | Pop art in the spirit of Ben-Day dots, on a cream background |
| Bead pattern | Grid | All the same | 6% | Reduced to 16 colors | #FFFFFF | A bead or sticker pattern where you count dots per color |
| Retro game | Grid | All the same | 14% | Game Boy, 4 colors | #081820 | The four-green screen of an old handheld console |
After you pick a style you can still change any value one by one. The dots-across setting stays where it is when you switch styles.
Choosing the dots across: a 3:2 photo
| Dots across | Grid rows · circles | Staggered rows · circles | One cell when saved at 2,048 px | Made with Midi beads (5.0 mm) |
|---|---|---|---|---|
| 24 | 16 rows · 384 | 18 rows · 423 | 85.3 px | about 12 × 8 cm |
| 48 | 32 rows · 1,536 | 37 rows · 1,758 | 42.7 px | about 24 × 16 cm |
| 72 | 48 rows · 3,456 | 55 rows · 3,933 | 28.4 px | about 36 × 24 cm |
| 96 | 64 rows · 6,144 | 74 rows · 7,067 | 21.3 px | about 48 × 32 cm |
| 144 | 96 rows · 13,824 | 111 rows · 15,929 | 14.2 px | about 72 × 48 cm |
For photos where the outline matters, such as faces or animals, 48 to 72 dots across works well, and halftone posters blend tones smoothly from about 96 up. The bead size is just the diameters added up, so it can come out slightly larger depending on the spacing of your bead board.
How it is calculated
- Dividing into cells: take the cell width as 1 and the dots across as c. For a grid, the number of rows is round(c × height ÷ width). For a staggered layout the row spacing is √3/2 (about 0.866), so the rows are round((c × height ÷ width − 1) ÷ 0.866) + 1, and every second row is shifted half a cell and holds c − 1 circles.
- Dot color: the original pixels within ±0.5 cell across and ±0.5 cell down of the circle's center (±0.433 cell for staggered) are averaged, weighted by opacity. If the average opacity is below one half, no circle is drawn.
- Choosing colors: "Reduce colors" groups colors with median cut (Heckbert, 1982), which repeatedly splits at the median of the widest channel. It then refines the result four times in the OKLab color space (Ottosson, 2020), and each circle takes the nearest color. Game Boy and PICO-8 also pick the nearest color in OKLab. "Grayscale" keeps the relative luminance as a gray.
- Dot size: with "All the same", the radius is (1 − spacing) ÷ 2 cells. With "By tone", that radius is multiplied by √k, so the circle's area is proportional to k.
k = (Ybackground − Ycell) ÷ (Ybackground − Yreference) (clamped to 0–1) · Y = 0.2126 R + 0.7152 G + 0.0722 B (linear sRGB)
Y is the relative luminance defined in WCAG 2.2. The reference Yreference is the ink color for "Single color"; otherwise it is 0 when the background is light (Y ≥ 0.5) and 1 when it is dark. A transparent background is treated as white paper. That is why circles grow in dark areas on a white background and in light areas on a black one. The table below shows circle sizes for gray cells in the Halftone style (staggered layout, white background, ink #1A1A1A, spacing 0%). In the staggered layout each circle occupies cell width² × 0.866, so a touching circle covers 90.7% of its share.
| Cell color (R = G = B) | Relative luminance Y | k | Circle diameter (of cell width) | Share of the cell filled |
|---|---|---|---|---|
| 26 (same as the ink) | 0.0103 | 1.000 | 100.0% | 90.7% |
| 64 | 0.0513 | 0.959 | 97.9% | 86.9% |
| 128 | 0.2159 | 0.792 | 89.0% | 71.9% |
| 192 | 0.5271 | 0.478 | 69.1% | 43.3% |
| 230 | 0.7913 | 0.211 | 45.9% | 19.1% |
| 255 (white) | 1.0000 | 0.000 | Not drawn | 0% |
When you save, the long side you choose sets how many pixels one cell gets. A 3:2 photo at 48 dots across, saved at 2,048 px, has cells of about 42.7 px and comes out at 2048 × 1365 px. SVG writes each dot as a circle shape on a 10-unit cell, with circles of the same color in one group.
Grid versus staggered (honeycomb)
Of all the ways to pack equal circles on a plane, the densest is the hexagonal arrangement in which every row is offset like a honeycomb, and L. Fejes Tóth proved that none is denser. Touching circles cover 78.5% of the area in a square grid (π/4) and 90.7% in the hexagonal arrangement (π/(2√3)).
| Layout | Row spacing (of cell width) | Area covered when touching | 3:2 photo, 48 across | Good for |
|---|---|---|---|---|
| Grid | 1 | 78.5% | 32 rows · 1,536 | Bead boards, LED signs, counting dots per color |
| Staggered (honeycomb) | 0.866 | 90.7% | 37 rows · 1,758 | Halftone, a dense texture with few gaps |
The gaps between circles show the background color, so the same photo looks bright and light on white and dark and crisp on black. Widening the spacing makes that difference stronger.
Common mistakes
- I changed the background in halftone and the picture flipped: tone mode sizes circles by how far each cell is from the background in brightness. Switching from white to black makes circles larger in the light areas. For the look of dark ink on paper, use a light background.
- I counted beads while still on original colors: with original colors, every circle differs slightly, and above 64 colors "Dots per color" is only an approximate count over 12 bands of similar colors. Decide the number of colors with "Reduce colors" first, then read the counts you will actually buy.
- I saved a transparent background as JPG: JPG can't hold transparency, so it becomes white. Save as PNG or SVG when you need it.
- I raised the dots a lot and saved as SVG: a 3:2 photo at 144 across has 13,824 circles. The more circles, the larger the file and the slower it is to open in a program, so unless the picture is for large printing, PNG is easier to handle.
- I got an error with a very tall image: a picture can hold up to 60,000 circles. A 1:2 portrait image at 200 across would need 400 rows and 80,000 circles, which is over the limit, so lower the dots across.
Limits and cautions
- It does not imitate a print shop's screening: screen angles, the separation into four CMYK plates, or ink spreading that enlarges the dots. Each picture uses circles at a single angle.
- Even in tone mode the circles can't fill the cell (at most 78.5% for a grid, 90.7% staggered), so the darkest areas look lighter than the original. Setting the spacing to 0% gives the deepest result.
- Colors on screen differ from real beads or ink. When you use the result as a pattern, check it against the color chart of the beads you own and prepare a few extra.
- Game Boy and PICO-8 borrow only the colors of those devices. They do not follow the screen size or color-count limits of the hardware.
- Only formats your browser can open are accepted. An animated GIF uses its first frame only, and HEIC may not open in some browsers, so convert it to JPG or PNG first. Files up to 40 MB are accepted, and the image is scaled down to a 2,048 px long side before calculating.
- The maximum saved size of 4,096 px is set to stay within the canvas limit of iOS browsers (4,096 × 4,096), so that saving works on every device.
As of 2026-10-20. The definitions of halftone and Ben-Day dots, circle packing density, bead diameters and the relative luminance formula were checked against the sources below on that date. The style values and the 60,000-circle limit are choices made by this tool. The sample image is "Blue, red and green parrot (Unsplash)" by Mikhail Vasilyev on Wikimedia Commons (CC0 1.0), reduced to 960 × 640 px.
Sources
- 01Getty AAT — halftone negativesNegatives made through a screen so the image appears as dots or squares of varying size, used in halftone printing
- 02Getty AAT — Ben Day processA technique that prints dot patterns from celluloid sheets, devised in 1879 by the New Jersey printer Benjamin Day, often linked with the work of pop artist Roy Lichtenstein
- 03Wolfram MathWorld — Circle PackingThe densest packing of circles in the plane is the honeycomb-like hexagonal lattice (proved by L. Fejes Tóth), with density 0.9069 for hexagonal and 0.7854 for square
- 04Hama — Meet our different beadsMidi beads are 5.0 mm in diameter, Mini beads 2.5 mm
- 05W3C — WCAG 2.2: relative luminancesRGB relative luminance L = 0.2126 R + 0.7152 G + 0.0722 B, with a linearization threshold of 0.04045
- 06MDN — <circle>The basic SVG shape that draws a circle from a center point (cx, cy) and a radius (r)
- 07Heckbert, P. (1982). Color image quantization for frame buffer displayACM SIGGRAPH Computer Graphics 16(3), 297–307. Median cut color reduction
- 08Björn Ottosson — A perceptual color space for image processing2020-12-23. The OKLab color space (used to find the nearest color)
- 09Lospec — PICO-8 PaletteThe 16 PICO-8 colors as HEX values. The four Game Boy colors come from the same site's Nintendo Gameboy (BGB) Palette
- 10MDN — <canvas>: Maximum canvas sizeThe 4,096 × 4,096 canvas limit on iOS devices
Frequently asked questions
How is circle dot art different from pixel art?
Pixel art fills each cell completely with a square, while circle dots draw a circle in the middle of the cell, so the background shows between circles. Even when the circles touch, a grid layout fills only 78.5% of each cell, so the background color changes the mood of the picture a lot.
How does halftone (by tone) decide the circle size?
The area of each circle is made proportional to the brightness difference from the background. On a white background with ink #1A1A1A and spacing 0%, a gray-128 cell gets a circle 89.0% of the cell width across, a gray-192 cell gets 69.1%, and white cells get no circle. Switch the background to black and the circles grow in the light areas instead.
How do I use it for a bead pattern?
Choose the "Bead pattern" style, or use "Reduce colors" to match the number of bead colors you own, then read the count per color under "Dots per color". Hama Midi beads are 5.0 mm across, so 48 beads wide is about 24 cm, and Mini beads (2.5 mm) give about 12 cm. Screen colors differ from real beads, so check against your color chart.
Should I choose grid or staggered (honeycomb)?
Choose grid when rows must line up, as on a bead board or LED sign, and staggered when you want a denser texture with fewer gaps. Touching circles cover 78.5% of the area in a grid and 90.7% when staggered. A 3:2 photo at 48 dots across gives 32 rows and 1,536 circles as a grid, or 37 rows and 1,758 circles staggered.
What is good about saving as SVG?
Each circle stays a circle shape, so edges stay sharp at any size, and circles of the same color are grouped, which makes it easy to recolor them at once in a design program. The more circles there are, the larger the file gets, though, so a 3:2 photo at 144 across (13,824 circles) can be slow to open.
Can I save with a transparent background?
Choose "Transparent" for the background and save as PNG or SVG, and the space between circles is left empty. JPG can't hold transparency, so it is saved on a white background. Parts of the original that are transparent (average opacity below one half) get no circle.
How many pixels is the saved picture?
You choose the long side from 1,080, 2,048 or 4,096 px. A 3:2 photo at 48 dots across, saved at 2,048 px, comes out at 2048 × 1365 px with cells of about 42.7 px. The 4,096 px maximum is set to stay within the iOS canvas limit (4,096 × 4,096) so saving works on every device.
Is my image uploaded to a server?
No. The image is read and drawn inside your browser and is never sent to a server. It disappears when you close the tab, and your settings are not stored either.