Adding Custom Graphics to EAGLE PCB Layouts




The objective of this instructable is to show you how to add custom graphics to a PCB using EAGLE Layout Editor. You might want to add a logo or your website address to an electronics PCB that you have created. I found out that the process of adding images to a PCB was not trivial or obvious. In order to save everyone some time, I have listed out the process.

This is Hans Scharler, I am a web designer at ioBridge. I wanted to touch up a few PCBs that we were prototyping for fun. As with most people just starting out with using EAGLE PCB, I learned by following the "Beginning Embedded Electronics" tutorials over at SparkFun. One of the example projects shows you how to make an FT232RL USB-to-Serial Breakout PCB. I followed the tutorials and eventually learned my way around EAGLE to layout PCBs.

For this instructable you will need an installed copy of EAGLE and a PCB Layout that you want to add some graphics to. I am using SparkFun's FT232RL USB-to-Serial Breakout PCB (EAGLE Files) for example purposes.

Step 1: Create Graphics for Your PCB Layout

The hard part might be creating the graphics that you want to use on your PCB silkscreen. The bulk of my time trying to figure this out was trying to find the right combination of sizes and colors of the bitmap for my graphics. I searched around forums and websites trying to find some right answers. Hopefully it will be easier for you.

Most PCBs are small. The graphics will look much bigger on your computer screen than they will look on your PCB. Most PCB silkscreen is white. On your computer screen you want the artwork color to be black.

Create a large size bitmap (BMP) with a size of 2000x2000 at least. 

Add your artwork by either pasting it in or creating it new on the canvas. Make sure the color mode is set to grayscale or monotone. If you have some existing artwork, just overlay the artwork with black. That's what I did with our logo. In EAGLE we will be only importing one color.

To gauge the appropriate size, use 175 pt font on the artwork. When this gets added to the actual silkscreen the size will be around a 1/4" high. You can experiment with the size depending on how much room your logo or artwork needs to take up vs. the size allotment on your PCB. From my experience, every 175 pt high font is about 1/4" on the printed circuit board.

Remember if it looks big on your computer screen, then you are probably doing things right so far. On my attached screenshot, I am zoomed out to 33% and it still looks big.

Save the final design as a bitmap (BMP) at 8-bits at the most.

Step 2: Run Import_bmp.ulp in EAGLE PCB Layout Editor

Open up your PCB layout in EAGLE

Select File and Run... from the menu

Select import-bmp.ulp from the ULP directory of EAGLE and click Open

Step 3: Select the Bitmap to Import Into EAGLE

Select the bitmap (BMP) file that you want to import and click Open

Note: EAGLE never remembers where you saved your artwork, so get used to clicking around everytime you import bitmaps

Step 4: Select Colors to Import

At this point in the process, you need to select the colors that you want to import. You can import 16 colors, but you only want to import one color. Every color imported will go on new layers in EAGLE.

Click on No scan

Check the box over the color black and click OK

Step 5: Configure Import Options and Click OK

There are a lot of option on the settings dialog. Here are the settings that worked consistently for me.

Format: Scaled
Unit: Mil
Scale Factor: 0.5
Start Layer: 21

Click OK to continue

Step 6: Run the Generated Import Script

You are almost done!

This import-bmp.ulp that you are running has been generating a script. At this point you can run the script to import the bitmap into EAGLE.

Click run script

Be patient, older machines will take a moment to process.

Step 7: Move and Rotate Graphics

If everything worked, you will have your artwork on the silkscreen layer (tPlace - 21). Move the graphics to the appropriate spot on the PCB. If the sizing is way off you will have to go back and adjust the bitmap that you started with.

Make sure you save all of that hard work!

Whew, you're finished importing graphics into EAGLE. Easy, right? I hope this tutorial helps you through the process. Let us know how it works for you.

PS. I don't recommend actually getting the FT232RL Breakout PCB manufactured. I think later in the SparkFun tutorial, they mention there is small mistake in the design. They show how to fix it if you keep reading the tutorial.



  • Classroom Science Contest

    Classroom Science Contest
  • Backyard Contest

    Backyard Contest
  • 1 Hour Challenge

    1 Hour Challenge

36 Discussions


8 years ago on Introduction

No matter how small I make my image, I keep getting the message:
  /Users/gentry/koko5.bmp: Too many pixels y direction
  Anzahl der Pixel in Y zu gross

My bitmap is only 160 x 120 at this point.  (I first tried with a 2000 x 2000 image).

Any idea what's going on?


6 replies

Reply 3 years ago

Got the same issue. I tried everything from very small to very large. I'm on a mac.


Reply 3 years ago

Re-saving the bitmap file using ToyViewer (still available in the Mac App store) worked for me. I was starting (and failing) with an 8-bit BMP I had saved from, and I think I got the same results with an 8-bit BMP saved from I did finally get it to work!


Reply 7 years ago on Introduction

After saving a BMP file using Pixelmator on OS X, I also had this issue. I finally solved it by downloading another application 'ToyViewer' and simply re-saving the bitmap file.


Reply 7 years ago on Introduction

Excellent, that (ToyViewer) worked for me too. I had also tried 8-bit BMP, but that didn't seem to help.

E QuayeI

3 years ago

Where can I run the Ulp? It keeps telling me I can't run it in the package. Where is the command line? Does the Ulp work in eagle lite?


4 years ago on Introduction

How about an update for eagle 7.2? This method does not work on small PCB's (1 square inch or less), I can't get this to work for PCB's sent to OSHpark. Something about the resolution being too high. How would I place a small logo of my own similar to the Sparkfun flame on a small PCB and have it work? So far no method I have tried works on small PCB's.


4 years ago on Step 7

Thanks, great job !!


4 years ago on Step 5

since you are using the "scaled" option, just calculate the scale factor so that you will always get the accurate size you needed. First, measure the available space in your pcb. Say for example you have 10mm x 10mm and your bitmap is 2000px X 2000px. Divide 10mm by 2000px, you'll get .005 scale factor.


4 years ago on Introduction

Thanks very much for this - I know it's now quite old but I found this yesterday and it worked excellently - along with the tip to use only 200dpi. I'm sending my board to iteadstudio rather than OSHpark but I wanted to be sure it would work so I used 200dpi for them too. Hopefully the resulting board will feature in an 'ible soon. I'll post a link if so.

One additional tip - you don't need to put your graphics in layer 21. Just import it into layer 200 as proposed (so you can select it and manipulate it easily but turning off other layers). Then, when you load your CAM job to produce your gerber files, add layer 200 to the layers used for the top (or bottom) silk screen.

I added a bmp to layer 200 and wanted it in the same place on the top and bottom silks, so I included it in both layers in the CAM job. It will be mirrored in the bottom layer but that didn't matter in this case.

Thanks again.



5 years ago on Introduction

Awesome tutorial! Thanks! :) Just a quick note - some PCB manufacturers such as the popular OSH Park use a 200 dpi printer for silkscreens. Make sure when you run the bitmap import ULP, select DPI and then enter 200. The image size is usually calculated this way - calculcate the size of the logo you'd want. Since you know the exact dimensions of the board anyway this is easy. Multiply that number by 200 (since the printing resolution is 200 dpi) and that should give you the image size in pixels.


6 years ago on Introduction

I have a bitmap file on a Mac (used ToyViewer to create), and it is just black and white. When I use the import bitmap script, however, it gives me an odd choice of 256 colors, and it goes off of the screen. Any help???


6 years ago on Introduction

Has anyone had any luck using this method then successfully uploading it to OSH Park? I have had no luck getting a bmp to turn into a silkscreen layer; their site seems to ignore the bmp (placed on correct layer).


6 years ago on Introduction

Thank you so much! I had some Japanese texts for silk screen and had to export into graphics and then used your tutorial to get everything in EAGLE. I can't read Japanese but everything looks the same as the source!


6 years ago on Introduction

This works great for me up until moving and rotating the graphic. It seems like when i go to move it only the individual lines are moved. Is there away to group the whole image together and then move it or is there something i'm doing wrong?


1 reply

Reply 6 years ago on Introduction

Suggestions for a easy import:
1) Import to layer 200 or so (somewhere empty).
2) use the layers button to turn off all other layers
3) use the group tool to select the whole image
4) now you can select the move tool, right click on the image and click move group
5) then you can turn on the other layers, and it will still be the active group, so you can right click to move it around.
6) select the change tool to change to tsilk or wherever you want it to end.
7) right click on the image and change:group. It'll still remember what the group is.
8) Win!


6 years ago on Introduction

Two quick tips that I learned the hard way:

1. Make absolutely sure that the image you're working with is actually black, and there is nothing in the background. Otherwise, Eagle gets confused and things don't render properly.

2. Eagle will place the logo right at the origin, and will draw it on top of the board. This makes it very hard to pick up and place where you want it! Before running the script, move your entire board up or over from the origin. Eagle will draw the logo in blank space, making it easy to group-select and move where you want.

This works well for one-offs, but I do recommend making a library of your graphics instead. This makes it much easier to move logos and stuff around just by grabbing their origin, rather than constantly group-selecting the logo (and everything beneath it!)


7 years ago on Introduction

So I tried this and it worked great, but I had a lot of issues separating the logo bits out from the other layer 21 stuff (like some others have voiced).

At one point I tried putting it on layer 200 and just moving it as a group to layer 21 after I had it positioned, but that was a pain too.

So what I did is to create a library in Eagle, import the graphic into some packages (I have one each for .5, .75 and 1 scaling). Then I created a "created by..." (or blank probably works) schematic symbol and created devices for each logo size.

Now I can simply add the logo directly to the board from the library and move it around as a group from a single origin. Super easy!

Thanks for this instructable!