Preserve PCB stackup when moving from Altium to KiCad.
The physical stack — layer count, copper and dielectric layers, thicknesses — usually comes across. Where a standard migration quietly goes wrong is in the layer roles and the board outline: a layer with no clean KiCad equivalent can be silently remapped, and an unusual layer name can drop Edge.Cuts entirely — neither reported as an error. Crosspad accounts for every layer and the outline, repairs the map where it can prove it safe, and flags the rest — so a remapped plane is a finding, not a surprise at the fab.
A stackup that opens isn't the stackup your fab will build.
Open the migrated board and the layers look right — the copper is there, the plane is where you left it, the outline traces the shape. But the stackup is the one part of a design that a fab reads literally: layer order, copper weights, dielectric, and which layer means what. A role silently remapped, a plane assigned to the wrong layer, an outline dropped because its layer name didn't translate — none of it throws an error, and none of it is visible until Gerbers, a fab query, or a scrapped panel. Both failures below are documented in KiCad's own issue tracker — real, reproducible, and quiet by nature. Crosspad exists to make each one visible before it costs you a build.
The stack usually comes across. The roles and the outline are where it breaks — silently.
Does the PCB stackup survive an Altium → KiCad migration?
Mostly yes — and then, in a few specific places, no. Give the importer its due: the physical stack is in the part KiCad handles well. The danger is narrow and manufacturing-critical — layer roles and the board outline — and each failure below is documented in KiCad's docs and issue tracker, cited as proof it's real. Crosspad checks every one against your source.
Layer count, copper and dielectric layers, thicknesses and board primitives (tracks, arcs, vias, pours) generally come across — this is the part KiCad's importer handles well and keeps improving.
documented: KiCad dev-docs- No-equivalent layer rolesREMAPPED
An Altium layer whose role has no clean KiCad equivalent can be silently remapped to a different layer — so a plane, a mechanical or a documentation layer quietly lands somewhere it shouldn't.
documented: KiCad #17351 (open, as of 10.0.6) - The board outline (Edge.Cuts)DROPPED
An invalid or unusual layer name has caused the board outline itself to be dropped on import — a board with no Edge.Cuts, and no error to say so.
documented: KiCad #18756 (open, as of 10.0.6) - Layer names & orderingREVIEW
Altium layer names and stack order don't always map one-to-one; a renamed or reordered layer changes which copper the fab associates with which position.
documented: KiCad #17351 + dev-docs - Controlled-impedance & material intentENGINEERING DECISION
Impedance profiles and material assignments that drive the fab's build are not carried as an enforceable, equivalent stackup spec — the geometry can arrive while the intent behind it doesn't.
documented: KiCad dev-docs (import scope)
“Docs and issue tracker” — the physical-stack credit and the impedance-intent gap come from KiCad's own import documentation; the remap and outline-drop are specific tracker issues. Version-specific behavior is re-verified each refresh.
What happens to Altium layer roles in KiCad?
A stackup isn't just a pile of copper — each layer has a role: signal, plane, mechanical, keepout, documentation, the board outline. Altium and KiCad don't describe those roles the same way. KiCad has a fixed set of canonical layers (its copper layers plus named technical layers like Edge.Cuts, the fabrication and courtyard layers); Altium's model is more open, with mechanical and named layers that a design can use for almost anything. When a standard migration meets an Altium role with no clean KiCad home, it has to choose — and the choice is made silently: the layer is remapped to the nearest fit (KiCad #17351), or, when the name itself confuses the importer, the layer's content — including the board outline on Edge.Cuts — can be dropped (KiCad #18756). The copper is all still on the board; what changed is the meaning of the layers it sits on.
| ALTIUM ROLE | WHAT A STANDARD MIGRATION DOES | KICAD LAYER | STATE |
|---|---|---|---|
| Signal / copper layers | map cleanly | KiCad copper layers | CARRIES |
| Internal planes | map, but a remap can move a plane's role | KiCad copper (plane) | REVIEW |
| Board outline | dropped on an invalid layer name (#18756) | Edge.Cuts | DROPPED |
| Mechanical / documentation | no fixed equivalent — silently remapped (#17351) | User.* / Dwgs / Cmts | REMAPPED |
| Keepout layers | role can shift; may become an over-broad keepout | KiCad keepout / rule area | REVIEW |
Crosspad accounts for every layer's role against your source and names each remap explicitly — see the process below. A deeper layer-role reference is coming; for now, the specific issues live in the tracked issue database.
Every layer, and the outline, accounted for.
Crosspad doesn't hand you a longer worry list about your stackup — it resolves it. It reads your Altium layer stack and roles directly, migrates the board, compares the result back layer by layer, and returns a verdict for each: verified, repaired, or flagged for a decision.
- 01ANALYZE SOURCE
Read the Altium stackup and every layer role directly — copper, planes, mechanical, keepout, documentation, and the board outline.
- 02COMPARE
Match the result back to the source by meaning: is every layer present, on the right role, in the right order — and is the outline still there?
- 03REPAIR — OR ROLL BACK
Correct a provably-safe layer remap, then re-parse and re-validate. A remap it can't prove equivalent is rolled back and flagged, never silently kept.
- 04EXPLAIN
Produce an evidence report: which layers verified, which were repaired, and which — a no-equivalent role, an impedance intent — need an engineering decision.
If Crosspad can't verify a layer's role or the board outline, it doesn't mark it safe.
A remapped layer you can see is a build you don't have to scrap.
| FINDING | DETAIL | OUTCOME | REPORTED AS |
|---|---|---|---|
| Layer stack | copper and dielectric layers | count & order matched | VerifiedVERIFIED |
| Edge.Cuts outline | closed outline | present | VerifiedVERIFIED |
| Mechanical13 (fab notes) | no KiCad equivalent | mapped → Dwgs.User; the mapping is stated | Expressed differently in KiCadTRANSLATED_EQUIVALENTLY |
| Internal plane GND | role shifted on import | reassigned, then revalidated | Fixed and re-checkedREPAIRED_AND_REVALIDATED |
| Keepout layer | role ambiguous | confirm the intended role | Needs your answerACTION_REQUIRED |
| Controlled-impedance stack | impedance intent | not provable in the target | Needs your callENGINEERING_DECISION_REQUIRED |
| Layer “MidLayer_π” | unusual name dropped outline | re-attached, flagged for confirmation | Needs your answerACTION_REQUIRED |
What we account for — and what we don't pretend to.
Crosspad targets modern Altium projects (.PrjPcb / .PcbDoc), version 6 or later. The physical stack usually comes across on its own; Crosspad's job is the part that silently goes wrong — layer roles and the board outline — plus naming the limits honestly. Where target equivalence can't be proven — a controlled-impedance profile, a material assignment, an Altium layer role with no KiCad home — Crosspad marks an engineering decision and hands it to you, rather than quietly reducing your stackup to whatever fit. Pre-Version-6 (Protel) board files are named as unsupported, not silently skipped; the ASCII text form is converted and then reconciled against an independent count of the board. The promise here is that every layer and the outline are accounted for — not that a stackup is preserved perfectly.
Frequently asked questions.
Does the PCB stackup survive an Altium to KiCad migration?
The physical stack — layer count, copper and dielectric layers, thicknesses — usually comes across; KiCad's importer handles that part well. What a standard migration can silently get wrong is narrower and more dangerous: a layer role with no clean KiCad equivalent can be remapped (KiCad #17351), and an unusual layer name can drop the board outline on Edge.Cuts (KiCad #18756) — neither reported as an error.
Why would the board outline go missing after import?
The outline lives on the Edge.Cuts layer. When an Altium layer name doesn't translate cleanly, the importer has dropped that layer's content — including the outline — leaving a board with no defined shape and no warning (KiCad #18756). Crosspad checks the outline is present explicitly and re-attaches or flags it.
What happens to Altium layer roles that KiCad doesn't have?
KiCad has a fixed set of canonical layers; an Altium mechanical, documentation or otherwise non-standard layer with no equivalent is silently remapped to the nearest fit (KiCad #17351). The copper stays on the board, but its layer's meaning changes. Crosspad names every remap instead of passing it silently.
Is controlled impedance or my material stack preserved?
No honest tool can guarantee that. The geometry of the stack generally imports, but impedance profiles and material assignments aren't carried as an enforceable, equivalent stackup spec — so Crosspad marks them an engineering decision and surfaces them for you, rather than implying the intent came across.
Are these KiCad bugs, and are they fixed?
They're documented tracker issues — the layer remap (#17351) and the Edge.Cuts drop (#18756) — treated as open as of KiCad 10.0.6 (2026-08-29). KiCad's Altium import improves most releases, so several stackup behaviors are version-specific; this page is re-verified and re-dated per release.
How do I know if my stackup is affected?
The failures here are general; your stack is specific. Point Crosspad at your project and get evidence of exactly which layers verified, which it repaired, and which need a decision before fab.
Know your layers survived — before the fab does.
Point Crosspad at an Altium project and get evidence of exactly what happens to your stackup: every layer and the board outline verified, repaired, or flagged for you.
Free analysis on one Altium .PcbDoc — one board file, not a project. Files are processed as described in our Security policy.
Stackup and layer behavior reflects a standard Altium → KiCad migration as of KiCad 10.0.6 (2026-08-29). Layer import changes across releases; #17351 (layer remap) and #18756 (Edge.Cuts drop) are treated as open at this anchor and re-verified each refresh. This page is updated per release.