Free coloring page maker
A coloring page from a photo, with lines that actually close
Free and with no account: drop a photo and it comes back as black outlines on white, fitted to A4 or US Letter and ready to print. The lines are the borders between flat areas of tone rather than detected edges, which is why they close — an outline that stops halfway across a cheek leaves a five-year-old nowhere to stop coloring. Name the narrowest area a crayon has to reach into, from 2 to 12 mm on the paper, and every region below it is absorbed into a neighbor before the outline is drawn; the ten tightest areas that survive are listed in millimeters so you know before you print rather than after.
- 100% free
- No signup
- Closed regions only
- 2 to 12 mm crayon fit
- A4 or US Letter
Press Ctrl+V anywhere on the page to drop in a picture you want outlined for a child — no need to click the field first.
How many flat tones the photograph is cut into before any line is drawn. Three gives a poster, eight is a face with its shadows, fourteen starts outlining the folds in a shirt. This is not the number of crayons — nothing on the sheet says which color goes where.
Millimeters across on the printed sheet, measured as the widest disc that fits inside the area. Anything narrower is merged into the neighbor it shares the most border with, before the outline exists. A worn wax crayon wants 8, a coloring pencil 3.
With a 10 mm margin on all four edges. Every millimeter figure on this page depends on this choice, because the picture is fitted to the sheet whichever way round gives it more room.
Drawn from a distance field rather than by fattening cells, so the number holds on a diagonal as well as on a vertical. Under 0.4 mm an inkjet on ordinary copier paper starts dropping pieces of the line, which is the one failure that breaks a region open.
Rounds of a mode filter, one for each cell of the distance you ask for. It settles the speckle at the boundary between two tones into one curve; at zero the outline follows every pixel of sensor noise and the sheet looks torn.
How to get a sheet a child can finish
Two numbers do all the work here, and both of them are about the crayon rather than about the photograph.
Decide how many tones the photograph is cut into
No line is drawn until the picture has been reduced to a handful of flat tones, because the lines are the borders between those tones rather than anything detected in the photograph. Three tones give a poster of light, mid and dark. Eight give a face with its own shadows, which is where most portraits belong. Fourteen start outlining the folds in a shirt and the change of shade down a wall, which is detail a six-year-old will color straight over. This is not a count of crayons — nothing printed on the sheet says which color belongs where.
Name the narrowest area a crayon has to reach into
Set it in millimeters on the paper, because that is the constraint that actually exists: a worn wax crayon lays down a mark about 8 mm wide and cannot be steered into anything narrower, while a coloring pencil manages 3 mm and a fine felt tip about 1 mm. Every area whose widest fitting disc falls below your number is absorbed into whichever neighbor it shares the longest border with, and the merging repeats until nothing under the floor is left. The count of what was absorbed is reported, because a photograph that loses 400 areas at 6 mm is telling you it was too busy for this.
Read the tightest areas, then print at 100%
The table beside the sheet lists the ten hardest areas to color, narrowest first, each measured as the widest disc that fits inside it rather than by surface area — a 40 mm² sliver a millimeter wide and a 40 mm² circle have the same area and only one of them can be filled. If the top row is under about 4 mm, raise the floor and regenerate rather than hoping. Then print with scaling set to 100% rather than fit-to-page: fit-to-page shrinks the sheet by a few percent and every millimeter in that table shrinks with it.
Technical specifications
| Where a line comes from | The border between two areas of flat tone, never a detected edge. The picture is quantized to 3 to 14 tones by median cut in Oklab, the tones are grown into 4-connected areas, and the outline is drawn where two areas meet — which is what makes every line a closed curve |
|---|---|
| Minimum area, and how it is measured | 2 to 12 mm across on the printed sheet, 6 mm by default, taken as the widest disc that fits inside the area rather than as its surface. Two shapes of 40 mm² can differ by a factor of ten in whether a crayon fits, and area alone cannot tell them apart |
| What happens to the rest | Absorbed into the neighbor sharing the longest border, over up to 8 rounds — a merge can leave the survivor still too narrow, so the pass repeats. Anything left under the floor after 8 rounds is counted and reported rather than hidden |
| Line weight | 0.3 to 1.5 mm, 0.7 mm by default, rasterized from a distance field rather than by fattening cells. That is why the number holds on a diagonal: dilating a stair-stepped border instead would draw the diagonals 41% heavier than the horizontals beside them |
| Working grid and output | 720 cells on the long side for the region work, printed at 2.5 times that. A 3:2 photograph comes out 1,800 × 1,200 px at 165 dpi on A4; a square one comes out 1,800 × 1,800 at 240 dpi, because a square fits the narrow way round and a wide picture does not. The figure for your own file is on the download button |
| Paper and fit | A4 at 210 × 297 mm or US Letter at 215.9 × 279.4 mm, with a 10 mm margin on all four edges, and the picture placed the way round that gives it the larger area. Never split across sheets — a coloring page is one sheet by definition |
| How the width is measured | An exact Euclidean distance transform by the linear-time lower-envelope method, doubled and plus one cell to give the number of cells across. Exact rather than the usual 3-4 chamfer, which prices a diagonal step at 4/3 against a true 1.414 and comes out 5.7% short at 45 degrees while running 3% long near the axes |
| Files you take away | The outline sheet as a PNG, the tone reference as a second PNG with no numbers on it, and a CSV of every area with its width in millimeters, its surface in mm², its share of the sheet and the hex of the tone it came from |
Frequently asked questions
What does 'the lines close' actually guarantee?
It guarantees that no line stops in the middle of open paper. Every line on the sheet is the border between two areas of tone, and a border between two areas of a plane has no loose end — it either forms a loop or it runs off the edge of the picture, which is why the sheet is printed with a frame at the same weight as the outlines. What it does not guarantee is that the drawing is recognizable, or that a region is big enough to be worth filling, or that the shapes correspond to objects. Those are separate questions and the tone count, the width floor and the table of tightest areas are how you answer them.
Why is there no detail inside the hair or the sweater?
Because texture is variation inside one area of tone rather than a border between two, so it never becomes a line here. Hatching, film grain, knitted stitches and the pores of skin all move the brightness up and down by small amounts around the same average, and the quantizer assigns the whole patch to a single tone. That is the difference between this and a line drawing, and on a coloring sheet it is the point: a child cannot color inside 300 strands of hair, and a page that prints them has produced a picture of hair rather than somewhere to put a crayon.
My photograph lost its entire background. Where did it go?
It was almost certainly one tone already and became one enormous area, which is correct rather than a loss — an evenly lit wall behind somebody is genuinely a single flat region and drawing lines across it would be inventing detail. The other possibility is the opposite: a busy background of leaves or a crowd produces hundreds of areas that are all narrower than your millimeter floor, and they get merged away one round at a time until the whole thing collapses into its largest member. The merge count under the sheet tells you which happened. If it was the busy case, crop the background out rather than lowering the floor, because the areas that survive a lower floor are the ones a crayon cannot enter.
Can I get thin lines for an adult coloring book?
Take the line weight down towards 0.4 mm and raise the tone count to 12 or 14, and drop the width floor to 3 mm to keep the smaller shapes. Below 0.4 mm is where it stops being a good idea: at the resolution this page prints at, that is close to a single pixel, and a domestic inkjet on ordinary copier paper drops pieces of a line that thin. A dropped piece is the one failure mode that matters here, because it opens a region that the whole method exists to keep closed.
Why is the sheet different when I switch from A4 to US Letter?
Because every setting on this page is in millimeters on the paper, and the two sheets are different sizes, so the same picture lands at a different scale on each. US Letter is about 6 mm wider than A4 and 18 mm shorter, and the picture is fitted to whichever way round gives it more room. That means the same 6 mm floor covers a slightly different fraction of the picture on each paper, and a few areas can survive on one and be merged away on the other. It also means the millimeter figures in the table are only true for the paper selected above them.
Does the tone reference tell the child which colors to use?
No — it fills each area with the average color of the part of the photograph it came from, and there are no numbers anywhere on it. It is there so an adult can see what the sheet is a picture of, which is genuinely hard to tell from outlines alone, and so a child who wants to match the original has something to look at. If you want a sheet that names a color for every region and prints a numeral inside it, that is a different tool on this site and it works to a different set of constraints, starting with how big a digit has to be to survive a photocopier.
Why did two areas that look different to me end up merged?
Merging follows the longest shared border, not the closest color, and that is deliberate. An area too narrow to color has to go somewhere, and the neighbor it touches along most of its length is the one the eye already reads it as part of — a thin highlight running down a nose belongs with the nose, even when its tone is nearer to the bright background it barely touches. Merging by nearest color instead would send that highlight to the background and cut a hole through the face. The trade is that a small dark shape sitting inside a large light one always joins the light one, which is why the tone count matters more than it looks: more tones means the shape gets its own neighbor to join.
About closed outlines, and why edge detection cannot produce one
There are two ways to get black lines out of a photograph and they are not variations of each other. The first measures how fast the picture is changing at each pixel and inks whatever changes fastest; that produces a set of ink pixels with no structure, and the line stops wherever the contrast happens to dip, so a jawline in even light arrives in four pieces with gaps between them. The second reduces the picture to a small number of flat areas and draws the border between them. The difference is not cosmetic: a border between two areas of a plane cannot have a loose end, so every line the second method produces either forms a loop or runs off the edge of the picture, which the printed frame then closes. That is the whole reason this page quantizes before it outlines, and it is why hatching, film grain and knitted texture never become lines here — they are variation inside one area rather than a border between two.
The second thing this page takes seriously is that a region has a physical size and a crayon has a physical width. Most tools that offer to remove small shapes threshold on area, which is the wrong measure and fails in a specific way: a sliver one millimeter wide and forty long has the same 40 mm² as a circle seven millimeters across, and one of them can be colored while the other cannot be entered at all. What matters is the widest disc that fits inside the shape, so that is what gets measured — with an exact Euclidean distance transform rather than the 3-4 chamfer most implementations reach for. That shortcut is fast and wrong by an amount that changes with direction — several percent short on the diagonals and several percent long near the axes — so it does not shrink a shape uniformly, it deforms it, and the width it reports then depends on which way the shape is lying. Merging then follows the longest shared border rather than the nearest tone, because a shape too narrow to color belongs with whatever it touches along most of its length. The outline itself is drawn from that same distance field rather than by thickening border cells, which is what keeps a 0.7 mm line at 0.7 mm on a diagonal instead of the 0.99 mm a dilated stair-step would give you.
If you want a drawing rather than something to color in — fine lines, retained detail, open contours welcome — the line art converter is the other half of this pair and works the first way described above, with the edge threshold exposed. If you want the same closed regions but with a numeral printed in each one and a key naming the pencil, the color by number generator does that on a fixed square grid, and the paint by numbers generator does it on shapes fitted to the subject for a brush rather than a pencil. And if the point is simply to hand a photograph to a child as something to make, turning it into a Perler bead pattern replaces the crayon with a counted grid of beads, which some children get on with far better than a sheet of paper.
Where the sheet is put together
Your picture is opened by JavaScript running in the tab you are reading this in. It is never uploaded, never sent to a server and never stored anywhere — there is no upload step to undo, because there is no upload. Close the tab and nothing of it remains.
The outline is computed and drawn in the same tab, so the sheet you print exists only there. Nothing is queued for rendering, there is no job identifier to look up later and no copy waiting to expire on somebody else’s disk — which is worth knowing, because the photographs people turn into coloring pages are usually of their own children.