EasyEDA
Introduction
KiCad imports designs from two EasyEDA format families: EasyEDA Standard (also known as JLCEDA Standard / LCEDA Standard) and EasyEDA Pro (also known as JLCEDA Pro / LCEDA Pro). These formats have different file structures and use separate parsers. EasyEDA Standard stores design data as JSON with tilde-delimited shape strings. EasyEDA Pro stores design data as ZIP archives containing JSON Lines files.
EasyEDA Standard File Types
-
.json— single JSON document containing a schematic sheet, symbol, PCB, or footprint -
.zip— archive containing one or more JSON documents
EasyEDA Pro File Types
-
.epro— project archive (renamed ZIP) -
.zip— project archive -
.elibz— library archive -
.efoo— individual footprint file -
.esym— individual symbol file
| EasyEDA Standard does not support project-level import. EasyEDA Pro provides a project chooser when the archive contains multiple schematics or boards. |
EasyEDA Standard Format
JSON Document Structure
Each EasyEDA Standard file is a JSON object with the following top-level fields:
| Field | Type | Description |
|---|---|---|
|
integer or string |
Document type (may appear here or inside |
|
object |
Header with |
|
string |
Canvas configuration data |
|
string |
Document title |
|
array of strings |
Design elements as tilde-delimited shape strings |
|
object |
Additional data (PCB layers, DRC rules, etc.) |
The head.docType field determines what content the file contains. Its value may
be encoded as either an integer or a string representation of an integer.
DOC_TYPE Values
| Value | Enum Name | Description |
|---|---|---|
1 |
SCHEMATIC_SHEET |
Single schematic sheet |
2 |
SYMBOL |
Schematic symbol definition |
3 |
PCB |
PCB layout |
4 |
PCB_COMPONENT |
Footprint definition |
5 |
SCHEMATIC_LIST |
Container holding multiple schematic sheets in a
|
14 |
PCB_MODULE |
PCB module (sub-board) |
For DOC_TYPE 5 (SCHEMATIC_LIST), the JSON object contains a schematics array where
each element is a complete DOCUMENT object with its own head, shape, and other
fields. KiCad imports each sheet and creates sub-sheets automatically.
Component Parameters (c_para)
The head.c_para object and the dataStr field carry component-level metadata. For
symbols and footprints this includes package, pre (reference prefix),
Contributor, link (datasheet URL), and Model_3D. For PCBs, dataStr contains
a layers array, an optional uuid, and an optional DRCRULE object with track
width, clearance, via diameter, and via drill constraints.
Shape Array Encoding
All design elements in the shape array use a common encoding. Each shape is a
single tilde-delimited (~) string. The first field is a type prefix; remaining
fields are positional parameters specific to that type.
Multi-line shapes use the delimiter @$ to join lines that were originally separate
entries. When parsing, the importer replaces @$ with newline characters and splits
on newlines.
Pin definitions within symbol shapes use the separator ^^ to delimit pin sub-parts
(dot position, path/color, name, number, and optional decoration data).
Coordinate System and Scaling
EasyEDA Standard uses a coordinate system where values are in abstract units. The schematic parser converts these to KiCad internal units using:
ScaleSize(value) = round(MilsToIU(value * 10))
This multiplies the EasyEDA value by 10 to get mils, then converts mils to KiCad internal units (nanometers).
The PCB parser uses a different formula:
ScaleSize(value) = round((value * 254000.0) / 100.0) * 100
This converts from EasyEDA PCB units (which are 10 mil increments) to KiCad internal units with rounding to the nearest 100nm.
Both parsers support relative positioning through m_relOrigin, which is set to the
document or component origin. Positions are computed as ScaleSize(value - origin).
Schematic Shape Types
Schematic documents and symbol definitions share many of the same shape types. When a
shape appears at the schematic level (inside a LIB compound or at the top level), it
is parsed in a schematic coordinate context. When it appears in a symbol definition,
positions are relative to the symbol origin.
Top-Level Schematic Shapes
| Prefix | Parameter Layout |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Symbol Shape Types
These shapes appear inside symbol definitions (within LIB compound shapes or
standalone symbol files).
| Prefix | Parameter Layout |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Pin definition using |
|
|
Pin Electrical Types
Pin electrical types are encoded as single-character numeric strings in the elecType
field of pin definitions.
| Value | KiCad Mapping |
|---|---|
|
Unspecified |
|
Input |
|
Output |
|
Bidirectional |
|
Passive |
Stroke Styles
Line stroke styles are encoded as numeric strings.
| Value | Style |
|---|---|
|
Solid |
|
Dash |
|
Dot |
Power Flag Styles
Power symbols use a numeric style identifier that determines the generated KiCad symbol graphics.
| Value | Style Name | Flag Type Name |
|---|---|---|
0 |
Circle |
|
1 |
Arrow |
(generic) |
2 |
Bar |
|
3 |
Wave |
(generic) |
4 |
Power Ground |
|
5 |
Signal Ground |
|
6 |
Earth |
|
7 |
GOST Arrow |
(generic) |
8 |
GOST Power Ground |
(generic) |
9 |
GOST Earth |
(generic) |
10 |
GOST Bar |
(generic) |
PCB Shape Types
PCB documents use the same tilde-delimited shape encoding. Shapes appear at the board
level or within LIB compound shapes representing footprints.
| Prefix | Parameter Layout |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Layer Mapping
EasyEDA Standard uses numeric layer identifiers that map to KiCad layers.
| EasyEDA Layer | KiCad Layer | Description |
|---|---|---|
1 |
F.Cu |
Front copper |
2 |
B.Cu |
Back copper |
3 |
F.SilkS |
Front silkscreen |
4 |
B.SilkS |
Back silkscreen |
5 |
F.Paste |
Front solder paste |
6 |
B.Paste |
Back solder paste |
7 |
F.Mask |
Front solder mask |
8 |
B.Mask |
Back solder mask |
10 |
Edge.Cuts |
Board outline |
11 |
Eco1.User |
Multi-layer / board cutout |
12 |
Dwgs.User |
Document layer |
13 |
F.Fab |
Front fabrication |
14 |
B.Fab |
Back fabrication |
15 |
Eco2.User |
Eco2 user layer |
19 |
F.Fab |
3D model layer |
21-50 |
In1.Cu-In30.Cu |
Inner copper layers |
EasyEDA Pro Format
ZIP Archive Structure
EasyEDA Pro files are ZIP archives with the following internal structure:
| File | Description |
|---|---|
|
Project manifest with schematics, boards, PCBs, devices, symbols, footprints, and their relationships |
|
Device library manifest (in |
|
Footprint library manifest (in |
|
Symbol library manifest (in |
|
Schematic sheet (JSON Lines format) |
|
PCB layout (JSON Lines format) |
|
Symbol definition (JSON Lines format) |
|
Footprint definition (JSON Lines format) |
|
Binary blob data (embedded images) |
|
Poured copper data (JSON Lines format) |
project.json Structure
The project manifest is a standard JSON object with the following top-level keys:
-
schematics— map of schematic UUIDs to objects withnameandsheets(each sheet hasid,name,uuid) -
boards— map of board UUIDs to objects withschematicandpcbUUID references -
pcbs— map of PCB UUIDs to PCB names or objects withtitle -
devices— map of device UUIDs to objects withsource,description,title,version,tags,custom_tags, andattributes(containingSymbol,Footprint,3D Model,3D Model Title,3D Model Transform, and custom attributes) -
symbols— map of symbol UUIDs to objects withsource,title,version,type(symbol type integer),desc,tags, andcustom_tags -
footprints— map of footprint UUIDs to objects withsource,title,version,type,desc,tags, andcustom_tags
Symbol Types
| Value | Enum Name | Description |
|---|---|---|
2 |
NORMAL |
Standard schematic symbol |
18 |
POWER_PORT |
Power port (creates global power label) |
19 |
NETPORT |
Net port (creates global label) |
20 |
SHEET_SYMBOL |
Sheet symbol for hierarchy |
22 |
SHORT |
Short symbol |
JSON Lines Format
Internal design files (.esch, .epcb, .esym, .efoo) use the JSON Lines format
where each line is a standalone JSON array. The first element of each array is a
string type identifier that determines how the remaining elements are interpreted.
Empty lines serve as section separators. In .efoo files, an empty line separates
footprint data from PCB data, allowing both to coexist in a single file.
Coordinate System and Scaling
EasyEDA Pro uses a different coordinate system from Standard. The Y axis is inverted relative to KiCad (EasyEDA Pro Y increases downward; KiCad schematic Y increases upward).
The schematic parser scales values as:
ScaleSize(value) = round(MilsToIU(value * 10)) ScalePos(x, y) = (ScaleSize(x), -ScaleSize(y))
The PCB parser uses a different scale factor:
ScaleSize(value) = round(value * 25400.0 / 500.0) * 500 ScalePos(x, y) = (ScaleSize(x), -ScaleSize(y))
Both include Y-axis inversion in position calculations. The PCB scale formula converts from EasyEDA Pro units to nanometers with rounding to the nearest 500nm.
Schematic Line Types
| Type Identifier | Array Layout |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PCB Line Types
| Type Identifier | Array Layout |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Document type identifier line (appears in some file formats). |
|
Header configuration line. |
Pro Polygon Encoding
EasyEDA Pro uses a JSON array encoding for polygon contour data, distinct from the SVG-like path strings in Standard. Elements alternate between coordinate pairs and command strings:
| Command | Parameters |
|---|---|
(numbers) |
|
|
followed by |
|
|
|
|
|
|
|
|
|
|
In fill data from .epcb files, arc angles are multiplied by 10 and must be divided
during import.
Symbol and Footprint Line Types
Symbol files (.esym) use the same line types as schematic files (HEAD, PIN, ATTR,
PART, RECT, CIRCLE, ARC, POLY, BEZIER, TEXT, OBJ, LINESTYLE, FONTSTYLE).
Footprint files (.efoo) use the same line types as PCB files (POLY, PAD, FILL, ATTR,
REGION). An empty line in a .efoo file separates the footprint data from additional
PCB-level data.
Pro Layer Mapping
EasyEDA Pro uses a different layer numbering scheme from Standard.
| EasyEDA Pro Layer | KiCad Layer | Description |
|---|---|---|
1 |
F.Cu |
Front copper |
2 |
B.Cu |
Back copper |
3 |
F.SilkS |
Front silkscreen |
4 |
B.SilkS |
Back silkscreen |
5 |
F.Mask |
Front solder mask |
6 |
B.Mask |
Back solder mask |
7 |
F.Paste |
Front solder paste |
8 |
B.Paste |
Back solder paste |
9 |
F.Fab |
Front fabrication |
10 |
B.Fab |
Back fabrication |
11 |
Edge.Cuts |
Board outline |
12 |
Edge.Cuts |
Multi-layer (also maps to Edge.Cuts) |
13 |
Dwgs.User |
Document layer |
14 |
Eco2.User |
Eco2 user layer |
15-44 |
In1.Cu-In30.Cu |
Inner copper layers |
48 |
F.Fab |
Component shape layer |
49 |
F.Fab |
Component marking |
53 |
User.4 |
3D shell outline |
54 |
User.5 |
3D shell top |
55 |
User.6 |
3D shell bottom |
56 |
User.7 |
Drill drawing |
Note that the solder mask and paste layer numbering differs between Standard and Pro. In Standard, paste is layers 5/6 and mask is 7/8. In Pro, mask is layers 5/6 and paste is 7/8.
Schematic
Imported Elements
-
Symbol instances with reference, value, and custom fields
-
Multi-sheet schematics (Standard creates sub-sheets automatically; Pro supports sheet hierarchy)
-
Wires, net labels, junctions, and no-connect markers
-
Power symbols with multiple flag styles (circle, arrow, bar, wave, power ground, signal ground, earth, and GOST variants)
-
Global labels (net ports)
-
Text elements with font, size, rotation, and alignment
-
Rectangles and images (SVG and raster, both inline and blob-referenced)
-
Pin electrical types and visibility control
-
Multi-unit symbols (Pro)
-
Components with symbol references and device attribute mapping (Pro)
-
Named font and line style lookups (Pro)
Limitations
-
Rounded rectangles are not supported; corner radius values are ignored.
-
Ellipses are treated as circles using only the X radius.
-
Image and bitmap rotation is not applied in Pro.
-
Per-unit symbol attributes are limited to unit 1 in Pro.
-
Standalone
.esymfile import is partially disabled.
Layout
Imported Elements
-
Board outline with automatic shape healing (segments within 1.5mm are joined)
-
Tracks, vias, and arcs with width, layer, and net assignment
-
Pads with multiple shape types:
-
Standard: ellipse (oval), rectangle, oval, polygon (custom)
-
Pro: rectangle (with optional corner radius percentage for rounded rect), ellipse, oval, polygon
-
-
Pad attributes (SMD, PTH, NPTH) with front/back/through-hole layer configuration
-
Copper zones with fill data, thermal relief, island removal, and priority
-
Solid regions including board cutouts
-
Copper pours with pre-poured data (Pro)
-
Teardrops converted to zones (Pro)
-
Rule areas with configurable restrictions (no copper, no tracks, no fills, no footprints)
-
Circles, rectangles, arcs, dimensions, and text
-
SVG node shapes with filled polygon outlines (Standard)
-
3D model references with offset, rotation, and fit dimensions
-
Footprints with auto-generated courtyard if missing
-
Layer mapping for up to 30 inner copper layers
-
DRC rules (track width, clearance, via diameter, via drill)
-
Solder paste and mask expansion per pad
-
Reference images (Pro)
-
Net assignment from project data (Pro)
Limitations
-
Dimensions are imported as grouped line segments, not native dimension objects (Standard).
-
3D model paths are hardcoded to
${KIPRJMOD}/EASYEDA_MODELS/. -
Component rotation is limited to 90-degree increments in some cases (Pro).
-
Poured copper from
.ecopfiles is disabled by default (Pro). -
The importer is read-only.
Undocumented Areas
The following aspects of the EasyEDA formats are not fully understood or documented:
-
The complete set of
canvasfield parameters in Standard format documents. -
Exact behavior of all stroke style and fill mode combinations.
-
The full range of
SVGNODEnode types beyond type 1 (element nodes). -
Image transform concatenation edge cases in Standard format.
-
The complete set of REGION flags in Pro format beyond flags 2, 5, 6, 7, and 8.
-
Differences between JLCEDA V2 and V3 attribute naming (Pro uses both
NAME/NUMBERandPin Name/Pin Numberdepending on the editor version). -
The
unkfields present in many Pro line types, which appear to be reserved or format-version-dependent.