Working with Keycap Profiles Without Losing Your Mind

Most people starting out in custom keyboard design grab the first keycap template they find on a forum and start building profiles around it. That approach usually works fine until you need to manufacture something and discover the numbers don't match what your vendor's CNC machine expects. I learned this the hard way three years ago when a batch of GMK-profile keycaps came back with the front arcs slightly too tall, forcing me to sand the tops down just to get them sitting flat on the stem. The problem wasn't the template itself — it was that different vendors interpret the same CAD dimensions differently depending on their stock tooling.

The fundamental issue with any keycap template system is that it defines the outline of the key, not the profile. These are two separate concepts that get conflated constantly. A template gives you the top-down shape: the rectangle for a 1U key, the notch cutouts for stabilizer compatibility, the spacing between rows. The profile — how tall the key is, where the chamfer sits, the curvature radius on the front arc — is defined separately in a second set of measurements. Good design work requires both, and most free resources online give you one without clearly labeling which one it is. I keep a folder of working templates organized by profile family. There's Cherry, there's SA, there's MT3, and then there are the proprietary profiles from manufacturers like Oknographic and SpaceType that don't fit neatly into any standard. For each one, I store the DXF file for manufacturing, an SVG version for my own design work in Illustrator, and a dimension sheet with the actual height measurements in millimeters at every key position. This last part is what most people skip, and it's the part that saves you when something doesn't fit.

Where to Find a Keycaps Template Daily Reference

If you're looking for a regularly updated template source, Keycaps Template Daily is one of the more consistent ones I've found. It's not perfect — the files occasionally have layer naming issues that make importing into FreeCAD a bit of a chore — but the coverage of common profiles is solid and the community tends to flag problems in the comments quickly. I've been using it as a starting point for about two years now, mostly for the GMK and SpaceType families since those are the ones I work with most frequently. When you download from there, check the units before you do anything else. I've seen DXF files come through in inches instead of millimeters without any notation, and if you import those straight into your CAD software and start extruding, you'll end up with keycaps that are either enormous or microscopic depending on which direction the conversion went wrong. Open the file in a text editor first and look for the $UNITS variable near the top. If it says "Inches," you need to rescale by 25.4 before proceeding.

The Workflow That Actually Works

Here's the process I use now, and it's nowhere near as glamorous as the YouTube tutorials make it look: Step one: Pick your base template and import it into your CAD environment. I use FreeCAD because it's free and handles parametric modeling well enough for keycap work. The open-source route works, but if you're doing this commercially at scale, the time you save with a proper license eventually pays for itself. Import the DXF, align it to the origin, verify the layer names make sense. If the template has the stem cutout already included, leave it. If it's a blank outline, you'll add that later. Step two: Define your profile heights. This is where the dimension sheet comes in. For Cherry profile, the center key (the 2U spacebar or the middle row keys) is typically around 14mm tall, tapering down to roughly 10mm on the edges. SA is significantly taller — the center can reach 19mm or more depending on the exact variant. MT3 sits somewhere in between at about 15mm center height. These numbers vary by manufacturer, so check the specific datasheet for whatever brand you're targeting rather than assuming the generic values apply.

Get the Full Details

PBT Dye Sublimation White Blue Cartoon Keycaps Puppy's Daily Puzzle Keycaps Cute Type Theme ...
PBT Dye Sublimation White Blue Cartoon Keycaps Puppy's Daily Puzzle Keycaps Cute Type Theme ...

Step three: Build the 3D shape. In FreeCAD, I create a sketch from the imported outline, then use the Pad operation to extrude the base shape, and finally apply aRevolve or Loft operation to shape the top curvature. The tricky part is getting the front arc radius correct. Most beginners make the arc too aggressive, which looks fine in renders but results in uncomfortable typing because the keycap hits your fingers on the descent. A radius between 80mm and 120mm on the front arc is what I've found to work across the widest range of hand sizes. Step four: Add the stem and cutouts. Standard Cherry MX stems are 3.8mm square with a 5.5mm total height from the top of the switch housing. The cutout on the bottom of the keycap needs to be slightly larger — I use 4.0mm square for the inner dimension to allow for manufacturing tolerance. If you make it exactly 3.8mm, the keycap will bind on the switch post and feel scratchy when pressed. A little room goes a long way here.

Common Pitfalls and What to Do Instead

One thing that catches people out regularly is the assumption that a template for one layout works for another. A GMK template won't fit KMK or XDA keycaps even though they all claim to use Cherry MX-compatible stems. The differences are subtle — maybe 0.3mm on the side walls, a slightly different arc radius — but those fractions add up when you're trying to mix profiles in a single build. I once spent three weeks designing a full custom set only to discover the side profile of my spacebar didn't match the 1U keys because I'd mixed template sources without checking. The fix was to rebuild the spacebar using the same profile curve as the rest of the set rather than trying to modify the existing one. Another issue is resolution. When exporting your final keycap model for manufacturing, make sure your tessellation settings are tight enough. I've had cases where the export resolution was set too low and the resulting STL file had visible faceting on the curved surfaces, which showed up as lines in the finished plastic. Set your deviation to 0.01mm and your angular tolerance to 1 degree minimum. It increases file size but the difference is usually only a few megabytes, and the surface quality is worth it. Stabilizer compatibility deserves its own mention. If your design includes any key wider than 2U, you need to account for the stabilizer wire clearance. The standard cutout on the bottom of the keycap should be at least 15mm long for a 2.5U stabilizer, 20mm for a 6.25U spacebar. Most template files include these, but some don't, and if you're starting from a basic outline you'll need to add them manually. I keep a library of pre-made stabilizer cutouts I can drop into any project rather than recreating them each time.

When Templates Fail You

There are scenarios where a standard template-based workflow breaks down entirely. If you're designing for a non-standard switch type — ALPS, Holy Panda, or any of the boutique mechanical switches — the stem dimensions are completely different from Cherry MX and no template you find online will fit. You need to measure the switch yourself and create a custom stem profile. I keep a caliper and a digital angle gauge for this purpose, and I photograph the switch from multiple angles before anything. Another case is split keyboards with non-standard row spacing. Most templates assume the industry-standard 19mm vertical pitch between rows, but some custom PCBs use 18mm or even 20mm. If you're building for one of these layouts, every keycap in your set needs to be repositioned vertically, and the side profiles may need adjustment too because the arc that looks right on a standard keyboard can feel off on a tighter one. I handle this by creating a base template for the target pitch and then using parametric constraints to shift everything together rather than editing each key individually. For extremely niche projects — ortholinear layouts, columnar stagger, or any custom geometry — you're essentially starting from scratch anyway. In those cases, I recommend downloading a generic blank template, defining your own row and column dimensions, and building up from there rather than trying to adapt an existing profile. It's slower initially but prevents the headache of fighting a template that was designed for a completely different ergonomics philosophy.

Minimal computer keyboard layout outline with empty keycaps, modern template for design projects ...
Minimal computer keyboard layout outline with empty keycaps, modern template for design projects ...

Practical Tips From Actual Use

Save your work at every meaningful step. I've lost entire projects to FreeCAD crashes, and while the auto-save feature exists, it's not reliable enough to depend on for something that took hours to model. I save a version after completing each major section — outline, profile, stem, final export — with timestamps in the filename so I can always go back to a working state. Keep a master dimension sheet for every project. This is a simple spreadsheet that records the height at every key position, the arc radii, the stem dimensions, and the stabilizer cutout sizes. When you come back to a project six months later, or when you need to send specs to a manufacturer, this sheet is infinitely more useful than trying to re-measure everything from the CAD file. I also include notes about which template source I started from and what modifications I made, because those details matter when you're troubleshooting a fit issue later. Test before you commit to a full set. Before investing time in modeling an entire alphabet and number row, spend an hour on a single 2U key and a single 1U key. Get the proportions right, check the feel if you have access to a 3D printer, and only then scale up. I've redesigned whole keycap sets twice because I didn't validate the feel on a small sample first. The time saved by catching problems early far outweighs the initial investment in testing.

When exporting for 3D printing, orient your keycaps so the stem points downward. This gives the cleanest support structure and minimizes visible artifacts on the visible surfaces. If you're sending files to a resin printer, I'd also recommend adding a small flat pad on the bottom of each stem to give the print head something to grip during the build. It makes removal from the build plate significantly less painful and reduces the risk of damaging the keycap during separation. For manufacturing files, DXF is your friend for the 2D profiles, but you'll also need a STEP or IGES file for the full 3D model if you're sending to a CNC shop. Some vendors accept STL files, but the polygon count matters — a low-resolution STL can look fine on screen but produce a keycap with noticeable steps on the curved surfaces. I aim for at least 1000 segments per curve when exporting, which keeps the file size reasonable while maintaining surface quality. Finally, don't ignore the underside of the keycap. It's easy to focus entirely on the visible top and front surfaces and leave the bottom rough or uneven. A poorly finished underside can cause the keycap to wobble on the switch stem or create an inconsistent typing feel. I always add a small chamfer or fillet to the bottom edge of the stem cutout — about 0.2mm — to help the keycap seat cleanly and reduce the chance of debris accumulation inside the switch housing over time.