Building Your Own Keycap Layouts Without Losing Your Mind
Custom keycap design tools have gotten increasingly complex over the years. Most of them try to do everything—color grading, profile selection, font tweaking, pricing estimates—and end up creating more friction than they remove. I spent about three weeks last winter trying to assemble a clean sixty-percent layout for a friend's build, and the whole process nearly drove me to just buying a pre-made set from GMMK or Drop. What actually worked was going back to a simpler planning approach before anything hit the manufacturing stage. At its core, a minimalist planner strips away the noise. You are not working with twenty-layer Photoshop files or trying to render a photorealistic product mockup. You are mapping out which keys go where, what profiles they use, and how the set looks when assembled. That is it. The tool most people converge on for this is basically a grid-based spreadsheet combined with a few profile reference images. It does not need to be fancy. Here is how I actually set mine up. I start with a blank grid that matches my target keyboard's switch plate—so if I am planning for a 65 percent board, I pull the exact switch spacing and plate cutout dimensions from the manufacturer's spec sheet. Most boards use 19.05mm pitch for standard keys, but some niche layouts like MoE or planck-style boards use different row/column offsets. Getting those numbers wrong ruins everything later.
Once the grid is drawn to scale, I place each keycap as a colored rectangle matching its intended profile height. Cherry profile sits lower, OEM is the standard mid-height, MX is slightly taller, and KDA is broader at the base. I keep a reference image of actual profile stacks pinned next to my work area so I can eyeball whether a given arrangement looks proportionally right. This step alone catches about eighty percent of layout mistakes before any money changes hands. The actual planning tool I ended up using was just a Google Sheet with a custom CSS-styled grid view, supplemented by a free open-source tool called Keycap Planner available on GitHub. It renders your grid as a visual keyboard preview and exports an image you can share with a manufacturer or use to verify spacing visually. There are other options like Keyboardio's own planner and the old HHKB community tools, but they tend to be overfitted to specific board types. For a truly generic minimalist workflow, the GitHub version is about as good as it gets. I downloaded the latest release from the repository, ran it locally since it is a Node.js application, and pointed it at a simple JSON file I built by hand. The JSON structure maps each key position to its intended profile and color code. It takes maybe five minutes to configure once you understand the schema, and then you are iterating on layout rather than fighting a GUI. The whole planning session for a full-size set with modifier color coding—blacks for WASD cluster, greys for the rest, a single orange accent key—went from an estimated four hours down to roughly twenty minutes.
There is one edge case that is worth mentioning because it almost cost me a full reprint. When you specify a 2u wide key like the spacebar, the Minimalist Custom Keycaps Planner treats it as two standard units placed side by side. That works fine until you realize some keyboard plates have split spacebar configurations where the cutout is not a perfect 2u rectangle but instead has a small gap or offset. I designed what I thought was a clean 2u spacebar keycap, shipped the order, and received it only to find the cap sat unevenly because the actual plate had a 0.5mm stagger between the left and right halves. The fix was straightforward—I measured the plate directly with digital calipers, updated the JSON with an offset value for that specific key position, and reordered. Manufacturers will almost never catch this discrepancy because they assume standard spacing unless told otherwise. Always measure your own plate. Another thing beginners consistently overlook involves the relationship between keycap stem type and profile compatibility. Not every profile works cleanly with every stem. Cherry profile keycaps on a stabilizer bar designed for MX stems will sit slightly higher than expected because the stem geometry differs between XDA, DSA, and standard Cherry stems. I learned this the hard way when a set of DSA keycaps on a board with Cherry-style stabilizers produced a visible height mismatch between the spacebar and adjacent 1u keys. The visual result was noticeably uneven. Switching to a consistent stem standard across the entire set resolved it without any redesign. Color accuracy is another area where minimal planning pays off. If you are ordering from a manufacturer that uses PMS or RAL color codes, specifying hex values in your planner will not translate correctly. I once sent a designer file with hex #2C2C2C for a charcoal grey key, and the finished set came back as a warm brownish grey. The manufacturer had interpreted it through their own color mapping table. The workaround is to request their specific color chart and pick from their available list rather than trying to specify arbitrary colors. It limits your palette but eliminates a whole class of disappointment.
Get the Full Details

The main limitation of this approach is that it does not account for dye-sublimation registration errors, which can shift printed artwork by up to 0.3mm per key. If you are doing clean minimalist typography or geometric patterns that align across multiple keys, that slight shift compounds visibly across a full row. I have not found a reliable software workaround for this. The only real mitigation is to design with some tolerance built in—avoid exact edge-to-edge alignment on adjacent keys, or leave a consistent 0.5mm gap between pattern elements that span multiple keycaps. If your requirements get complicated enough that a spreadsheet and a JSON file no longer suffice, there are more full-featured tools like KPrepublic's online designer or the older KeycapKit app. They are heavier, slower, and often require accounts. For straightforward minimalist layouts where the design philosophy is literally less is more, the planner approach described here covers the vast majority of use cases without the overhead. One final note on sourcing. The GitHub-based planner I referenced is maintained sporadically, and the documentation is sparse. If you run into issues with the JSON parsing or the rendering output, the most practical solution is to check the open issues tab—the maintainer usually responds within a few days. There is also a Discord channel for casual support. Do not expect enterprise-level customer service, because that is not what this tool is.