You upload a zip, the fab's page draws a board and shows a price. That proves one thing: their software could read your files. It can't prove the files describe the board you designed, because the files are all the fab has. A missing outline, holes that land beside their pads, a blank paste layer: all of them quote without complaint.
Before you pay, open the exact zip you're sending in a Gerber viewer and check seven things: the layer count, the board outline, the drill holes, the solder mask, the paste, the silkscreen and the board size. The two broken examples below came straight out of KiCad's own export, one checkbox each.

The reference: the zip KiCad 9 exported from a board that passes its design-rule check. The outline is yellow and the viewer measures 50.00 × 34.00 mm, which matches the design.
What an upload check can and can't tell you
A fab's upload step reads each file, works out which layer it is (from the X2 attributes KiCad writes, or from the file name), measures the board, counts holes and layers, and prices the job. Many fabs then review the files after you order and email questions if something looks odd. Both are useful. Neither knows what you meant, so neither can tell you that a layer is missing, that an outline should exist, or that the holes are 100 mm from where they should be.
1. Every layer you meant is in the zip
Count the copper layers first: a four-layer board needs four copper files, and a plot dialog with only the outer layers ticked produces a perfectly valid two-layer set. Then check each side that has solder mask and silkscreen has its own file, the outline is there, and there are drill files for plated and, if you have any, non-plated holes.
KiCad also writes a Gerber job file (.gbrjob) listing the layer count, thickness and every file's function. Some fabs read it. It's a list, not proof: the job file for the board in these pictures lists two paste layers, and both are empty (check 5).
2. The outline is there, closed, and drawn once
The outline (Edge.Cuts in KiCad, the profile in Gerber terms) is the only file that says where the board ends. Leave it out and every other layer still loads, which is why it's easy to miss.

The same export with Edge.Cuts unticked. Nothing looks wrong at a glance, but there's no board edge, and the only size anyone can measure is the copper's: 49.00 × 33.00 mm instead of 50 × 34.
Without it, the board size is a guess. The copper stops half a millimetre inside the edge, so a viewer reports 49 × 33 mm for a 50 × 34 mm board. A fab has the same problem and will either guess or ask, and asking costs a day.
An outline can also be present and still wrong. It must be closed (KiCad's design-rule check reports a malformed outline), drawn once, and include any cut-outs or slots as closed shapes inside it.
3. Every hole lands in its pad
Drill files are a separate format (Excellon) with their own origin and units. If the Gerbers and the drill file were written from different origins, the copper is right and the holes are somewhere else. In KiCad 9's own dialogs the two origins are one shared setting, so this happens when the files are exported separately: here kicad-cli plotted the Gerbers from the drill/place file origin and wrote the drill file in absolute coordinates, one flag each, as a script, an older KiCad or another tool can:

The board renders, but J1 and J2 have solid pads: their six holes, and the four vias, landed more than 100 mm away, off the board.
A smaller origin difference is worse, because the holes land partly in the pads and look almost right. Look at a through-hole part and at a via, and make sure the hole sits in the middle of the copper. While you're there, check mounting holes are in the non-plated file if they shouldn't be plated, and the tool sizes match the holes you designed.
4. The mask opens over every pad, and nowhere else
The solder mask file is a negative: what it draws is where the mask is removed. Turn on one side's copper and mask together and every pad should show an opening. Covered (tented) vias should have none; vias you want to probe should.

Gold is bare copper, where the mask opens: every pad has an opening. The four 0.3 mm vias stay covered, as this board's tenting setting asks.
On fine-pitch parts, look at the strip of mask between neighbouring pads. If it's thinner than your fab's minimum, it's dropped and the pads share one opening, which makes solder bridges more likely.
5. The paste layer isn't empty
Paste layers matter only if you order a stencil, and then they are the stencil: an opening on every SMD pad, none on through-hole pads. The board in these pictures has 27 SMD pads and empty paste files (we removed the paste to photograph bare copper). Both files are in the zip and both are listed in the job file, so a file count passes. Turn on the paste layers alone and there's nothing there, and a stencil cut from them would be a blank sheet of steel.
6. The silkscreen stays off the pads
Fabs clip silkscreen that falls on bare copper, so a designator printed across a pad comes back cut in half or missing. Check text is at least your fab's minimum height and line width, and that the bottom silkscreen reads mirrored when you look from the top. That's correct: you'll read it from underneath.
7. The size and stackup match the order form
The viewer's size readout should match your design, and the order form should match both: size, layer count, thickness and finish. A two-layer zip ordered as four layers, or a 1.6 mm design ordered at 0.8 mm, is a correct set of files and the wrong board.
Then check the design, not just the files
Everything above checks that the files say what the board file says. It doesn't check the board. Before you export, run your CAD tool's design-rule check with your fab's minimum trace, gap, drill and annular ring, not the defaults. If your fab runs an electrical test, KiCad can export an IPC-D-356 netlist so the tester knows which pads should connect.
The checklist
- Open the zip you will upload. Not the export folder, and not the board file.
- Count the layers. Copper equal to your stackup, mask and silkscreen per side, the outline, both drill files.
- Find the outline. Closed, drawn once, cut-outs inside it, and the size matches your design.
- Look through every hole. Each through-hole pad has a hole in it; vias sit inside their pads.
- Read the solder mask. An opening over every pad, none over vias you meant to cover, no slivers thinner than your fab can make.
- Check the paste, if you order a stencil: SMD pads only, and not empty.
- Read the silkscreen. Nothing on pads, text above the fab's minimum, bottom side mirrored from the top.
- Match the order form. Size, layer count, thickness and finish agree with the files.
Every image here is PCBEditor's free Gerber viewer opening files that kicad-cli 9.0 exported from one board; the broken sets come from export settings, not hand edits. The viewer reads the zip in your browser, with no sign-up. The full guide is on pcbeditor.com.
What's the Gerber mistake that cost you a board? I'm collecting the ones a viewer would have caught and the ones it wouldn't.
Top comments (0)