JLCPCB rejecting gerber due to missing solder mask

I’m having the exact same issue as the thread link below, but it looks like it was closed before any solutions identified. I’ve gone back and fourth with them for updated procedures, suggestions, etc, but don’t really get anything other than canned messages.

Anyone know what plot settings I may be missing? I’ve tried the exact ones they have on there site FAQs and optionally all the layers, etc.

The board is pretty simple two sided with ground fills on both sides. Using v5.1.4

post your files

and more characters

If you followed a link to another thread, JLCPCB rejects board due to empty back solder mask, you saw that it’s impossible to make them understand once they have misunderstood. If you have generated normal gerbers, also B.Mask which is empty, and they don’t understand they should cover the backside with mask, maybe you should send them this message:

Gerber standard uses graphics. The mask layer in gerber is negative, so that where there is graphics in the gerber file, there should be a hole in the mask layer which you apply to the board. If the whole back side of the board must be covered with mask, there is no other logical option than to leave the corresponding gerber file empty. Please tell your customers how to tell you that one side of the board must be covered with mask. If you don’t understand our logic and the logic of gerber files, please tell us your logic so that we can be your customers in the future. If there is some other problem with the files, please tell it clearly. If the only problem was that the back mask gerber layer is empty, why don’t you understand that it must be empty because I want it to be empty, because there is no other way to say “cover the whole board area with mask” in gerber format? Why do you use gerber format if you don’t understand it?

It’s impossible to express how frustrated I am with those manufacturers.

Maybe the old “this is intentionally blank” message?

Or perhaps a snazzy logo on the copper layer with an aperture in the mask layer.

It’s not all that easy to find, but JLCPCB addresses this on their website here:

For those order that there are some layers missed, such as no solder mask layer, no board outline and drilling, we will cancel the order directly. If there is no solder mask or drill is needed, etc, you had better to make a note about it when you place your order ,or it will be canceled directly during the audit process.

I believe you’d put the note in the “Remarks” area of the order form to indicate this. They’re very specific that text files in the Zip archive will be ignored.

I remember seeing your specific situation (all SMD on one side, no holes or tracks on the bottom) addressed in another place on their website, but I can’t find it again. I think they recommended placing a hole somewhere in the design, possibly outside the edge cut, to force the bottom layers to be non-empty. If I find it again I’ll update this thread.


For manufacturers like JLCPCB you need to generate Gerbers with “Use Protel filename extensions” option ticked

JLCPCB understands the file naming produced by KiCad if you’re using English.

From their website:

Our site understands KiCAD’s gerber naming patterns. We suggest checking the Use Protel Filenames option, but it’s not required.

Note, if the language is set to something other than English, you will need to check Use Protel Filenames and manually change the extension of Edge_Cuts.gbr to .GKO .

For assistance in generating gerbers, check out our Generating Gerbers with Kicad guide


I was using english and without that option my Gerbers are not shown on a page, their gerber viewer can’t render them. When I upload version with Protel filename scheme - it works.

Protel convention is not the standard and falling into disuse

The gerber viewer is different than the CAM software. Their online viewer is just for having a nice preview. It’s not authoritative to tell what they can or can’t do or make.

Which version of KiCad did you use to render the Gerbers?

I submitted a two-layer board rendered with KiCad 5.1.5-rc1 using standard naming earlier this week. No problems with their Gerber viewer, and it seems to be moving through production smoothly.

There have been a couple of small bug fixes making KiCad Gerber output more strictly correct.

Can somebody explain to me why one cannot just generate and include a null solder mask layer to satisfy the audit, one with just metadata but no objects? Is it the case that no objects means cover everything, i.e. 0 == all?

Or is the solder mask layer negative, meaning that the objects are the exposed areas? In that case, can a script generate an expose everything solder mask, leading to no mask?

Yes, see How does solder mask layer work?.

Logically, for “cover everything with mask” an empty gerber file should do the trick (but as we know, it doesn’t for some uncomprehensible reason).

To uncover everything you can just draw a zone with minimum width: 0mm. Why a zone? Because if you have proper edge.cuts lines the filled graphic zone fills the board area exactly.

In any case you should give extra note for the manufacturer in the way they recommend giving notes. They just don’t seem to understand non-common cases which leads to endless back and forth email conversations.

Probably you should also heed the tip from bobc and others by drawing something in the mask layer even if you would like the board to be covered with mask. It seems that you can’t have everything. But exposing some copper with text in the mask layer looks pretty cool. So, if you have a copper zone there, try adding the name & rev etc. information there. Letters can be as small as 0.5x0.5mm WxH, 0.08mm thick, or maybe even smaller.


Ah, ok, so the text will appear in HASL or ENIG finish. Cool. I’ll try that next design.

Yes, although if text is very small (like the example size above) the finish doesn’t necessarily stick evenly, depending on the finish.

I believe I found the issue here. After seeing the new release (5.1.5) announcement yesterday, I was checking it out an noticed on another project (in PCB Layout) the the “B.Mask” layer in the layers manager. It then just occurred to me to check the Board Setup and sure enough the B.Mask was not selected. (I don’t know why, this was a project from quite awhile ago that I was just getting back to finishing). I enabled the “B.Mask” layer in the project, regenerated the gerbers, and resubmitted the order and was processed/accepted as expected.

I was waiting until my order was processed and “in production” before reporting back here, so I’m pretty sure this is all that is needed to sort out this issue.

Thanks all!!


This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.