How do I view Gerber files online?
Drop the zip your PCB tool exported (or the loose Gerber and drill files) on the viewer above. It identifies each layer from its X2 attribute or file name, draws the board top and bottom, and checks the outline, drill alignment and layer set. The sample board, for example, reads as “2-layer board, 42 × 26 mm, no problems found”. Nothing is uploaded.
How to use the Gerber viewer
- Export Gerbers and drill files from your PCB tool, then drop the zip, the folder or the files on the viewer. Not ready? Click Try a sample board.
- Look at the Top and Bottom renders. The bottom is mirrored, as you would see it holding the board upside down.
- Switch to Layers to see each file in its own colour. Tick layers on and off, pan by dragging, zoom with the buttons, a pinch or Ctrl + scroll, and click Measure to measure between two points.
- Check the layer list. Each file shows how it was identified (X2 attribute, job file or file name). If one is wrong, pick the right type from its menu and the render and checks update.
- Read the checks. Fix anything marked as a problem before you upload the zip to a fab.
The files are read and drawn in your browser. There is no upload step, no account and no file size quota beyond a sanity limit of 300 MB unzipped.
What is a Gerber file?
A Gerber file is a plain-text, vector description of one layer of a printed circuit board. The format, RS-274X, is maintained by Ucamco and is what every PCB tool exports for manufacturing. A board is a set of them: one per copper layer, the solder mask and silkscreen for each side, paste layers for the stencil, and the board outline. Holes usually come in a separate Excellon drill file, and newer tools add a Gerber job file (.gbrjob) that lists the whole set.
Inside, a Gerber file declares its units and number format, defines apertures (round, rectangular and custom shapes), and then moves, draws and flashes them at coordinates. This is the start of the sample board’s top copper, exported by KiCad:
%TF.GenerationSoftware,KiCad,Pcbnew,10.0.3*%
%TF.FileFunction,Copper,L1,Top*%
%TF.FilePolarity,Positive*%
%FSLAX46Y46*%
%MOMM*%
%ADD10R,1.700000X1.700000*%
D10*
X137500000Y-110460000D03*
The %TF lines are Gerber X2 attributes: the file says it is copper layer 1, the top. Files without them (often called X1) depend on their file names, which is why naming conventions still matter. The attributes never change the image, so readers that ignore them draw the same board.
Gerber, Excellon, ODB++ and IPC-2581
Gerber plus Excellon is the format every fab accepts. ODB++ and IPC-2581 carry layers, drills, netlist and stackup in one structured package and are used mostly in volume production. This viewer reads Gerber (RS-274X and X2) layers, drill files in Excellon or Gerber form, and Gerber job files.
How the viewer reads a Gerber set
Each file is sniffed by content first: an M48 header means Excellon, a %FS format statement means Gerber, and reports, PDFs and readmes are set aside. Each layer is then identified from, in order, its own X2 TF.FileFunction attribute, the job file, the naming conventions in the table below, and finally layer names that EasyEDA and ProtoFlow write into comments. Of several outline candidates (Altium sets often have GKO and many GM layers) it picks one, preferring a closed shape. The board is then drawn with pcb-stackup, the open-source renderer from the tracespace project, using these layer types rather than guesses from file names.
Worked example 1: decoding a KiCad coordinate
%FSLAX46Y46*% means leading zeros are omitted and there are 4 integer and 6 decimal digits, in the units set by %MOMM*%. So the last line of the excerpt flashes a pad at X = 137500000 ÷ 106 = 137.5 mm and Y = -110.46 mm. That pad is on the sample board, whose outline runs from 100 to 142 mm in X.
Worked example 2: an Altium drill hit in inches
An Altium drill file with INCH,LZ and ;FILE_FORMAT=2:5 keeps leading zeros and drops trailing ones, so digits are read from the left with 2 before the decimal point. X00255 is padded to 0025500, which is 0.255 in or 6.477 mm. Read with the opposite rule, as if leading zeros had been dropped, the same digits would be 0.00255 in, a hundred times closer to the origin.
Worked example 3: board size from the outline
The sample board’s Edge.Cuts outline is drawn with a 0.1 mm line. Measured on the line’s centre, the board is 42 × 26 mm. KiCad’s job file reports 42.1 × 26.1 mm because it adds the line width (0.1 mm). The viewer reports the centre-line size, which is the shape the outline describes. Its drill files hold 16 holes in 3 sizes, from 0.3 to 3.2 mm, all inside that outline.
Gerber file extensions by EDA tool
The default file names each tool writes, as the viewer recognises them. The table is generated from the viewer’s own identification rules. KiCad also offers Protel extensions (.gtl, .gbl…), which match the Altium column with the layer name kept in the file name.
| Layer | KiCad | Altium / Protel extensions | EAGLE 9 / Fusion CAM | EAGLE legacy CAM | EasyEDA |
|---|
| Top copper | board-F_Cu.gbr | board.GTL | copper_top.gbr | board.cmp | Gerber_TopLayer.GTL |
| Inner copper | board-In1_Cu.gbr | board.G1 | copper_inner_l2.gbr | board.ly2 | Gerber_InnerLayer1.G1 |
| Bottom copper | board-B_Cu.gbr | board.GBL | copper_bottom.gbr | board.sol | Gerber_BottomLayer.GBL |
| Top solder mask | board-F_Mask.gbr | board.GTS | soldermask_top.gbr | board.stc | Gerber_TopSolderMaskLayer.GTS |
| Bottom solder mask | board-B_Mask.gbr | board.GBS | soldermask_bottom.gbr | board.sts | Gerber_BottomSolderMaskLayer.GBS |
| Top silkscreen | board-F_Silkscreen.gbr | board.GTO | silkscreen_top.gbr | board.plc | Gerber_TopSilkscreenLayer.GTO |
| Bottom silkscreen | board-B_Silkscreen.gbr | board.GBO | silkscreen_bottom.gbr | board.pls | Gerber_BottomSilkscreenLayer.GBO |
| Top paste (stencil) | board-F_Paste.gbr | board.GTP | solderpaste_top.gbr | board.crc | Gerber_TopPasteMaskLayer.GTP |
| Bottom paste (stencil) | board-B_Paste.gbr | board.GBP | solderpaste_bottom.gbr | board.crs | Gerber_BottomPasteMaskLayer.GBP |
| Board outline | board-Edge_Cuts.gbr | board.GKO or board.GM1 | profile.gbr | board.dim | Gerber_BoardOutlineLayer.GKO |
| Drill, plated | board-PTH.drl | — | — | — | Drill_PTH_Through.DRL |
| Drill, non-plated | board-NPTH.drl | — | — | — | Drill_NPTH_Through.DRL |
| Drill | — | board.TXT | drill_1_16.xln | board.drd | — |
Altium drill files usually end in .TXT, and PCBWay lists .drl or .txt drills for EAGLE, which is why the viewer decides by content, not extension. JLCPCB’s naming guide lists boardname.GKO or .GM1 for the outline and .G2L / .G3L for the inner layers of a four-layer board; both are recognised.
X2 file attributes and the layer they mean
When a file carries TF.FileFunction, the viewer trusts it over the file name and warns if the two disagree.
| TF.FileFunction | Read as |
|---|
| Copper,L1,Top | Top copper |
| Copper,L2,Inr | Inner copper (layer 2) |
| Copper,L4,Bot | Bottom copper |
| Soldermask,Top | Top solder mask |
| Legend,Bot | Bottom silkscreen |
| Paste,Top | Top paste (stencil) |
| Profile,NP | Board outline |
| Plated,1,4,PTH | Drill, plated |
| NonPlated,1,4,NPTH | Drill, non-plated |
| Drillmap | Drill map |
Gerber coordinate formats by tool
The format statement fixes the finest step and the largest coordinate a file can hold. All of these are far finer than any fab can etch.
| Tool | Header | Finest step | Largest coordinate |
|---|
| KiCad | %FSLAX46Y46*% %MOMM*% | 6 decimals, 0.001 µm | 4 integer digits, just under 10,000 mm |
| ProtoFlow | %FSLAX46Y46*% %MOMM*% | 6 decimals, 0.001 µm | 4 integer digits, just under 10,000 mm |
| EasyEDA | %FSLAX45Y45*% %MOMM*% | 5 decimals, 0.01 µm | 4 integer digits, just under 10,000 mm |
| EAGLE 9 | %FSLAX34Y34*% %MOMM*% | 4 decimals, 0.1 µm | 3 integer digits, just under 1,000 mm |
| Altium Designer (inch, 2:5) | %FSLAX25Y25*% %MOIN*% | 5 decimals, 0.254 µm | 2 integer digits, just under 2,540 mm |
Excellon drill formats: one coordinate read five ways
Drill files are where units go wrong. Here is the same coordinate, X1250, under different headers. Excellon names the zeros that are kept: TZ keeps trailing zeros (so leading ones are dropped), LZ keeps leading zeros.
| Header | Written by | X1250 means |
|---|
| METRIC,TZ,000.000 | EAGLE 9 | 1.25 mm |
| METRIC,LZ,000.000 | EasyEDA | 125 mm |
| INCH,LZ with ;FILE_FORMAT=2:5 | Altium | 12.5 in = 317.5 mm |
| Inch, 2.4 digits, leading zeros dropped | The usual assumption when no format is stated | 0.125 in = 3.175 mm |
| Inch, 2.5 digits, leading zeros dropped | EAGLE 7.2 and later, per JLCPCB | 0.0125 in = 0.3175 mm |
| METRIC, decimal (X1.25) | KiCad, ProtoFlow | 1.25 mm, no ambiguity |
The two inch rows with dropped leading zeros are the classic ten-times drill error: the digits 12345 are 0.12345 in as 2.5 but 1.2345 in as 2.4. JLCPCB’s EAGLE guide says EAGLE 7.2 moved its Excellon output from 2.4 to 2.5, which made holes scale up ten times in some Gerber viewers. Decimal coordinates, which KiCad writes and JLCPCB’s KiCad guide recommends, cannot be misread this way.
Common scenarios and what the viewer reports
Each row is the sample board with one realistic mistake, run through the same checks the viewer shows. The results are generated when this page is built.
| Scenario | What the viewer reports |
|---|
Clean KiCad export The sample board as exported: Protel extensions, X2 attributes, separate plated and non-plated drill files, a job file. | No problems: 2-layer board, 42 × 26 mm, no problems found |
Outline layer left out of the zip Edge.Cuts was not ticked in the plot dialog. | - Problem: No board outline
|
A gap in the outline One straight edge of the outline is missing, as when a line was deleted or never snapped. | - Warning: Outline has 2 open ends
|
Drill file read in the wrong units The plated drill file says INCH while its numbers are millimetres. | - Warning: Holes fall outside the board outline
|
No drill files Gerbers plotted, but Generate Drill Files was never run. | |
Bottom solder mask missing B.Mask was not exported; the job file still lists it. | - Problem: Files listed in the job file are missing
- Warning: No bottom solder mask
|
One layer re-exported a day later Bottom copper was replaced by a newer plot without re-exporting the rest. | - Warning: Files exported at different times
|
Solder mask file saved under the paste extension The top mask was renamed .GTP after export, so a name-based uploader would treat it as paste, and the job file no longer matches. | - Problem: Files listed in the job file are missing
- Warning: File name and contents disagree
|
EasyEDA-style names, no X2 attributes The same layers renamed the way EasyEDA names them, with every attribute stripped, so only file names identify them. | No problems: 2-layer board, 42 × 26 mm, no problems found |
Zipped with a folder and an old zip inside The whole output folder was zipped, including an earlier gerbers.zip. | - Warning: Zip inside the zip
|
What to check before ordering from JLCPCB or PCBWay
Fab uploaders mostly identify layers by file name and run their own review, but a minute in a Gerber viewer catches the mistakes that hold orders up. JLCPCB’s KiCad guide asks you to confirm the outline exists and is watertight, that cutouts and slots appear on the outline layer, and that holes line up with the other layers. The viewer’s checks cover those, plus:
- One file per layer. Every copper layer present, including inner layers on a four or six layer board, and no second copy of a layer from an older export.
- Mask for every copper side. A missing solder mask file means a bare side or a question from the fab.
- Drill files in the zip and in the same units. The holes should sit inside the outline.
- Names a fab understands. JLCPCB notes that its system does not look for Altium’s GP plane files, which are usually negative and which it may not process correctly; route planes as positive layers or check with the fab.
- A flat zip. Leave out old zips, reports and design files. The viewer lists anything that is not fabrication data.
The checks read only the files. They do not know your fab’s minimum track, spacing or drill size, so compare the smallest drill the viewer reports with your fab’s capabilities page, and run DRC in your design tool before exporting. Our PCB design rules guide explains the difference between fab limits and good practice.
How to export Gerber files from KiCad, Altium, EAGLE and EasyEDA
KiCad
In the PCB editor choose File › Fabrication Outputs › Gerbers. Tick every copper layer, both mask, silkscreen and paste layers and Edge.Cuts, then Plot. Click Generate Drill Files in the same dialog. JLCPCB’s KiCad 8 guide recommends Protel filename extensions, millimetre drill units, decimal format and an absolute origin. Zip the output folder’s Gerber and drill files.
Altium Designer
Use File › Fabrication Outputs › Gerber Files, select the used layers, then File › Fabrication Outputs › NC Drill Files, as PCBWay’s Altium guide shows. Altium writes Protel extensions and .TXT drill files, plus reports (.DRR, .LDP, .REP) that fabs do not need.
EAGLE and Fusion electronics
Open the CAM Processor, load a CAM job (your fab’s, or the default), and process it. JLCPCB’s guide notes that the outline must be a continuous line on layer 20, Dimension, and that the .gpi and .dri files EAGLE writes are not used for manufacturing.
EasyEDA
EasyEDA exports a ready-made Gerber zip with the Gerber_… and Drill_… names in the table above, and it opens in this viewer as is.
Common Gerber mistakes
- No outline, or the outline on the wrong layer. Drawn on silkscreen or a fabrication layer, the shape never reaches the router. The viewer fails the set without one.
- Gaps in the outline. Two lines that look joined but miss by a fraction of a millimetre. The viewer reports open ends with their coordinates.
- Drill units or zero format that do not match. Holes land off the board or scale by 10 or 25.4.
- Mask and paste mixed up. They look alike (both are pad openings). A mask file saved with a paste extension leaves the fab without the mask openings, or with the wrong ones. When X2 attributes are present, the viewer warns if the name and contents disagree.
- Nested folders and stale files. Zipping the whole output folder can pull in an old export. Creation times in X2 files reveal it.
- Old RS-274-D files. They need a separate aperture list. The viewer flags files that use apertures they never define.
Accuracy and limits of an online Gerber viewer
Rendering uses pcb-stackup and gerber-to-svg from the tracespace project, which implement RS-274X including aperture macros, regions, arcs and polarity. The checks use a separate reader written for this page, tested against real exports from KiCad, Altium and ProtoFlow, drill headers from EAGLE and EasyEDA, and the Gerber specification’s coordinate rules.
It is a viewer and checker, not a CAM system. It does not compare a netlist, measure copper-to-edge clearance, panelize, or read ODB++. Negative plane layers are shown as drawn. For a definitive reading of a disputed file, Ucamco’s Reference Gerber Viewer is the specification owner’s own tool; KiCad’s GerbView and gerbv are capable desktop viewers.
Do this automatically in ProtoFlow
ProtoFlow, our desktop PCB design app, checks a board before it writes a single Gerber. Its export preflight blocks output when the Edge.Cuts outline is not one closed loop or a copper zone failed to fill, and if the design rule check still lists errors or warnings it asks you to review them first. Export Gerbers then writes Gerber X2 layers with file attributes, a Gerber job file and a metric Excellon drill file into one zip, with oval holes as routed slots. Preview the export in the built-in Gerber viewer, toggle layers and measure, export the BOM and pick-and-place files in JLCPCB format, or upload the package to PCBWay and finish the order in your browser. You can start the board itself from a plain-English description. Download ProtoFlow free for macOS, Windows or Linux.
Glossary
- Gerber (RS-274X)
- The standard plain-text vector format for PCB layer images. One file per layer, with apertures defined inside the file.
- Gerber X2
- The current revision of RS-274X. Adds attributes that name each file’s layer, polarity and project.
- TF.FileFunction
- The X2 attribute that says what a file is, for example Copper,L2,Inr or Profile,NP.
- Aperture
- A shape (circle, rectangle, obround, polygon or macro) used to flash pads or stroke lines, defined with %AD.
- D01, D02, D03
- Gerber operations: draw to a point, move to a point, and flash the current aperture at a point.
- Excellon
- The usual text format for drill files: a header of tool sizes, then hole coordinates per tool.
- LZ / TZ
- Excellon flags for which zeros are kept in coordinates (leading or trailing). Getting them wrong scales or shifts every hole.
- Gerber job file (.gbrjob)
- A JSON file that lists the set’s files with their functions, the layer count and board size.
- Board outline (profile)
- The layer with the board’s cut shape: Edge.Cuts, GKO/GM1, Dimension or BoardOutline depending on the tool.
- Solder mask
- The coating over the copper. Its Gerber shows the openings where pads stay bare.
- Silkscreen (legend, overlay)
- The printed text and outlines on the board surface.
- Paste layer
- Pad openings for the solder stencil. Only used for assembly, not for making the bare board.
- PTH / NPTH
- Plated through holes (copper-lined, for vias and leads) and non-plated holes (mounting, tooling).
- Protel extensions
- The .GTL/.GBL/.GTS… naming Altium inherited from Protel, which KiCad, EasyEDA and many fabs also use.
- Negative plane
- A copper layer drawn inverted: the image shows clearances, and copper is everywhere else.
Frequently asked questions
What is a Gerber file?
A Gerber file is a plain-text vector image of one PCB layer, in the RS-274X format maintained by Ucamco. A board is described by a set of them, usually one each for every copper layer, the solder mask and silkscreen on each side, the paste layers and the board outline, plus an Excellon drill file for the holes. Fabs make the board from these files, not from your design file.
How do I view Gerber files online for free?
Drop the zip your PCB tool exported, or the individual files, on the viewer at the top of this page. It identifies each layer, draws the top and bottom of the board and a layer-by-layer view, and runs order checks. It is free, needs no account, and works in any current browser on macOS, Windows, Linux or a tablet.
Are my Gerber files uploaded anywhere?
No. The files are opened with your browser’s File API, unzipped and drawn by JavaScript in the page, and never sent to a server. The page records an anonymous “tool used” event for our analytics, without any file names or contents.
What is the difference between Gerber and Gerber X2?
X2 is the current revision of the same format. It adds attributes such as TF.FileFunction, which states inside the file which layer it is (for example Copper,L1,Top), plus polarity, project and creation time. Attributes never change the image, so a reader that ignores them draws the same board. X1 files rely on file names to say which layer is which.
Gerber vs ODB++: which should I send to the fab?
Gerber plus Excellon drill is accepted by practically every fab, which is why every EDA tool exports it. ODB++ and IPC-2581 put all layers, drills, netlist and stackup in one structured package, which suits production at fabs that ask for it. For prototypes from JLCPCB, PCBWay and similar fabs, a Gerber zip is the normal choice.
Can it open Altium Gerber files like GTL, GBL, GKO and GM1?
Yes. Altium’s Protel extensions are recognised: GTL and GBL copper, G1, G2… mid layers, GP planes, GTS/GBS mask, GTO/GBO overlay, GTP/GBP paste, GKO and GM mechanical layers and TXT drill files. When both GKO and GM1 are present, the viewer uses the one that forms a closed board shape (GKO if both do) as the outline and shows the others as drawings; you can change it in the layer list.
Does it work with KiCad, EAGLE and EasyEDA Gerbers?
Yes. KiCad names (board-F_Cu.gbr, Edge_Cuts, PTH and NPTH drill files), EAGLE 9 CAM names (copper_top.gbr, profile.gbr, drill_1_16.xln), legacy EAGLE extensions (.cmp, .sol, .stc, .plc, .dim) and EasyEDA names (Gerber_TopLayer.GTL and so on) are all identified. Files that carry X2 attributes are identified from the attribute first.
Which file is the board outline?
KiCad writes it as Edge_Cuts (.gm1 with Protel extensions), Altium as GKO or a mechanical layer such as GM1, EAGLE as profile.gbr or the Dimension layer, EasyEDA as Gerber_BoardOutlineLayer.GKO. In X2 files it carries TF.FileFunction,Profile. The viewer measures the board size from the outline’s centre line.
Why are my drill holes offset or 10 times too big?
The drill file and the Gerbers disagree about units, number format or origin. An Excellon file in inches read as millimetres is 25.4 times off; reading 2.5-digit coordinates as 2.4 makes the pattern 10 times larger. The viewer reports holes outside the outline and names the likely cause. Exporting drills in decimal format avoids the ambiguity.
Can I measure distances on the Gerbers?
Yes. Switch to the Layers view, turn on Measure and click two points. The distance is shown in millimetres and mils with the X and Y components, and the cursor position is shown in board coordinates as you move.
Is there a free Gerber viewer for Mac?
This page works in Safari, Chrome and Firefox on a Mac with nothing to install. For a desktop app, KiCad’s GerbView runs on macOS, Windows and Linux; gerbv is an open-source viewer for Linux and Windows.
More free PCB tools
- PCB trace width calculatorIPC-2221 trace width for a given current and temperature rise, with resistance, voltage drop and power loss.
- PCB impedance calculatorSingle-ended and differential impedance for microstrip and stripline traces from your stackup.
- PCB via current calculatorHow much current a plated via carries, plus its resistance and voltage drop, from drill size and plating.
- Resistor color code calculatorRead 4, 5 and 6-band resistors, or find the bands for a value. SMD 3-digit, 4-digit and EIA-96 codes too.
- Voltage divider calculatorOutput voltage, or the resistor pair for a target voltage using real E24 and E96 values, with load effects.
- mm to mil converterConvert between millimetres, mils, inches and micrometres, with a PCB reference table for traces, drills and copper.
Design the whole board, not one number
ProtoFlow is free AI PCB design software: describe a circuit and get a schematic with real parts, PCB layout with an autorouter, SPICE simulation and Gerber files. Native KiCad, Altium and EAGLE import and export. Free on macOS, Windows and Linux.