Making Your Own Addition Color By Number Worksheets
The whole thing is simpler than most people make it. You generate some addition problems, assign each answer a color, and print a blank grid with the problems written inside. The student solves the math, looks up the color, and fills it in. That's it. The actual quality of the result depends on how carefully you set up the answer-to-color mapping and whether your color palette has enough distinct hues to make the picture readable. I spent about three years making these for my students before I stopped caring about doing it manually. What I learned is that the bottleneck isn't the math generation. It's the color key design. Pick too many answers and you end up with twelve different shades of blue that look identical when printed on cheap paper. Pick too few and the picture just becomes a solid blob.
Addition Color By Number For Kids and Beginners
The standard approach is to start with a silhouette image, convert it into a pixel grid, and map each unique pixel color to an addition answer. For young kids working on single-digit addition, you're looking at answers from 0 to 18. That gives you roughly nineteen possible sums, which means you can have at most nineteen distinct colors before the worksheet becomes a mess. Anything more and the kid is constantly flipping back to the key trying to tell lime green from mint. Here's the process I use now. I take a simple SVG or PNG image, rasterize it to maybe 30 by 30 pixels depending on the desired grid size, then quantize the colors down to however many distinct hues I actually need. For a first-grade worksheet, I typically target around eight to ten colors. The remaining colors from the original image get merged into the nearest available bucket. This keeps the math manageable without turning the answer key into an encyclopedia. Once the image is quantized, I generate addition problems that produce the right answers. If a pixel maps to the color assigned to the answer 7, I need to place the equation "3 + 4" or "5 + 2" or "0 + 7" in that grid cell. The trick is mixing up the representations so the worksheet doesn't feel repetitive. I rotate between commutative pairs and different operand sizes. A cell showing "7 + 0" next to twenty cells all showing "3 + 4" tells the kid exactly what pattern to exploit and turns the exercise into a color-by-registry job instead of actual arithmetic practice.
For the actual generation, I wrote a small Python script that takes an input image and spits out a PDF. The core logic is maybe eighty lines. I load the image with Pillow, convert it to a palette mode with a limited color count, then iterate through each pixel and generate a random addition fact for that index value. The hardest part is handling the color key layout. If you just list answers 0 through 18 in order with their colors, the kid has to scroll through the whole thing every time. I stagger the key so answers are grouped by color rather than by numerical value. It makes lookup faster and reduces the chance of copying the wrong answer from the wrong row. I ran into a specific problem once that took me about two weeks to properly diagnose. I was generating worksheets for a special education classroom where the students had varying vision abilities. The default palette I was using had several colors that were mathematically distinct but visually nearly indistinguishable under standard classroom lighting. Reds and oranges, blues and purples. The kids were spending more time squinting at the key than doing any math. I ended up switching to a palette based on the Oklab color space instead of RGB, which gives you perceptually uniform color distances. The same twelve colors spaced evenly through Oklab space are dramatically more distinguishable than twelve colors spaced evenly through hue angle in HSL. It's a small change in the code but it completely fixed the readability issue. Most generators don't account for this at all. If you want to just download something and go, there are a handful of generators online. K5 Learning, Math-Drills, and Super Teacher Worksheets all have free tools where you pick the grade level, the problem type, and the theme. They're fine for quick use. The tradeoff is that you're stuck with their color palettes and their image library. If you need something custom, the DIY route is not that involved anymore. There are GitHub repos with complete pipelines if you have basic Python knowledge. The one I keep coming back to is called color-by-math and it handles the image quantization, fact generation, and PDF output in one shot. It's not the prettiest code but it works reliably.
Get the Full Details

Common Mistakes When Building These
The most frequent error is using an image with too much detail for the answer range you've chosen. A photorealistic image has thousands of color variations. Even aggressive quantization to eight colors will smear the details into an unrecognizable mess. Stick to simple line art or clip art. Icons, animals, holiday shapes, anything with bold outlines and large flat areas works best. The more solid color regions you start with, the better the final worksheet looks. Another thing that goes wrong is not checking the printed output. What looks fine on a monitor can fall apart on paper. Colors shift. Contrast drops. A light yellow and a white background become impossible to separate. Always do a test print before committing to a full batch. I print one sheet and hold it up next to the key under the actual lighting conditions of the classroom. If I can't confidently match five random cells in ten seconds, the worksheet needs adjustment. There's also the issue of answer distribution. A naively generated worksheet might accidentally cluster the same equation in adjacent cells purely by chance. "4 + 3" appearing six times in a row horizontally or vertically makes the pattern obvious and lets kids who haven't mastered the math still complete the picture through recognition. It's not the end of the world but it undermines the exercise. I add a simple constraint to my generator that prevents the same fact from repeating in any adjacent cell, horizontal, vertical, or diagonal. It adds maybe a second of computation per worksheet and eliminates the pattern problem entirely.
When This Method Breaks Down
Addition Color By Number works well for rote practice and building fluency with basic facts. It does not work well for teaching conceptual understanding of addition. A kid can color every cell correctly without understanding what addition actually means. I've seen it happen repeatedly. The worksheet becomes a coloring activity dressed up as math, and the assessment value drops to near zero if you're using it to gauge comprehension rather than computational speed. It also doesn't scale well to more advanced topics. Once you move into multi-digit addition, subtraction with borrowing, or multiplication, the answer ranges explode. You're suddenly dealing with hundreds or thousands of possible answers. The color key becomes unwieldy and the visual payoff degrades because you need so many colors to represent the answer space. At that point, other practice formats are more efficient. Flashcards, timed drills, or interactive apps give you better feedback per minute of student effort. The biggest limitation is probably the setup time if you're making custom content. Even with a script, generating a clean worksheet that actually looks like something recognizable takes iteration. You pick an image, generate, evaluate, adjust the palette, regenerate, repeat. A finished custom worksheet typically takes me about twenty to thirty minutes from start to finish, depending on how fussy I'm feeling about the image choice. If you need ten different versions for different skill levels, budget an hour minimum.
For most teachers, the free online generators are sufficient. They produce adequate results in about two minutes of clicking. The custom route is worth it if you have specific pedagogical needs or if you're building a library of themed worksheets over time. After the initial script is set up, generating new worksheets drops to about three minutes each because the pipeline is automated and you've already worked out the palette choices for your typical image types.
