The finished name badge

Making a 3D Printed Name Badge, Version 2

A few years ago at the Portland Oregon 3D printing Meetup, someone suggested we should all make our own name badges so Shashi wouldn’t need to bring as many “Hello, My Name Is” paper tags to the Meetups. A few weeks later I made a badge and a post on how to create your own, using the tools of the time.

This updated post walks you though the making of your own name badge in FreeCAD 0.21, which is a lot easier than it was in earlier versions of FreeCAD.

Tools and parts I Used:

  • FreeCAD 0.21, a free and open source 3D CAD editor similar to Fusion 360, Sketchup, and Tinkercad.
  • PrusaSlicer 2.7.1, a Slicer designed for the Prusa line of 3D printers.
  • Prusa i3 MK3, a good 3D printer, that understands how to change filaments mid-print.
  • Two contrasting colors of PLA filament for your printer. I used a PolyLite Red PLA for the background and PolyLite Yellow PLA for the lettering. I used PLA just because I like PLA. You don’t need a dual-extrusion printer.
  • Badge Magnets to fasten the badge to your clothes. Magnets don’t put holes in your clothes like badge pins do. (Thanks to Maz for this tip)

You can download my finished FreeCAD design file and STL file from Cults3D, Two-Color Name Badge.

Create the base and rim of the badge

In FreeCAD, select the Part Design Workbench.

Select the FreeCAD Part Design Workbench
Select the FreeCAD Part Design Workbench

For brevity, I’ll gloss over some of the details of creating the base, because it involves FreeCAD operations you can easily learn from various online tutorials.

Create a FreeCAD XY-plane Sketch of a rectangle. This will become the base of the badge. I chose to create a badge 75 mm x 35 mm.

Create the base sketch
Create the base sketch

Extrude that base to the thickness you like for your badge. I chose 2 mm because that’s thick enough to be strong and thin enough to look nice. I also checked the Reverse option so that the lettering I add later will start at the top of the base. Click Ok.

Extrude the base downward (Reversed)
Extrude the base downward (Reversed)

Next we’ll make the badge rim. I like a rim on the badge because it highlights your name and encloses the text of your name.

For the outside of the rim, create another Sketch in the X-Y plane, then use the Create External Geometry tool to reference the left and right lines of the Base Sketch you created earlier.

I chose to make the rim 3 mm wide because that’s about the thickness of the strokes in the text of my name.

Creating the 3 mm rim Sketch
Creating the 3 mm rim Sketch

Extrude that rim to the same thickness as your planned name text. For example, I planned my name text to be 3 mm thick, so I extruded the rim 3 mm.

Extrude the rim
Extrude the rim

Next, round the outside and inside corners of the base and rim by selecting all the edges to round, then clicking the Fillet tool. I chose a 3 mm fillet to be similar to the thickness of the text.

Fillet (round) the corners
Fillet (round) the corners

Download a Suitable Font

FreeCAD ShapeStrings use font files rather than fonts that are installed on your system.

I prefer downloading fonts from Google Fonts because they’re open source (so I can use them in anything I like) and it’s easy to select fonts with particular attributes.

To download a Google Font:

  1. Browse to
  2. Select, for Decorative Stroke, Sans Serif, because small serifs don’t 3D print well.
  3. Under Sentence, type the text you want to use, so you can preview it in all the fonts.
  4. Click on a suitable font.
  5. Alternatively, you can type the name of the font you want in the Search Fonts bar. I like Open Sans. Then click on the font in the search result.
  6. Click Download Family.
  7. Extract (unzip) the downloaded .zip file.
  8. In the extracted folder, open the static sub-folder. FreeCAD requires static rather than variable fonts.
  9. In that static folder, copy the font file of the font that has the style you want. For this project I used an extra bold font: OpenSans-ExtraBold.ttf
  10. Paste that font file into your FreeCAD project folder. Do not install the font on your system.

Create your First Name

In earlier versions of FreeCAD, adding text involved a very cumbersome process of creating the text in Inkscape and importing into FreeCAD as an SVG image. Later versions of FreeCAD make the process a lot easier, although there are still a few tricks required.

We’ll add your name as two lines, each line of text being a ShapeString.

Orient the FreeCAD View of the badge so you’re looking down at the top (X-Y plane).

Select the Draft Workbench. It will take a little while to switch to this workbench.

Click on the Shape From Text (ShapeString) icon: the ‘S‘ icon.

In the resulting dialog:

  1. Fill in the String field with the first line of your name (probably your First Name).
  2. For Height, select 12 mm. You will be able to adjust this font height later.
  3. For Font File, click the … button, then select the font file you recently downloaded.
  4. Finally, click the Reset Point button, then move the mouse directly to the OK button (without moving outside the dialog), and click OK.
Creating the First Name ShapeString
Creating the First Name ShapeString

Now the string will appear near the center of the badge Body.

Next, use the Propery-Value panel to move the string to where you want it:

  1. In the Combo View (the tree view of the Body), click on the ShapeString that you just created.
  2. In the Property-View panel, under Base, expand Placement, then expand Position.
  3. Try different numbers for the X (left-right) and Y (up-down) values under Position to move the text relative to the badge. If you find the text hard to see, click in the Body’s pane to see the text, then click on the ShapeString in the Combo View to see the position again. There is no OK to click to finalize your position changes; they are immediately saved.
Positioning the first string
Positioning the first string
The first name, in position
The first name, in position

Attach Your First Name to the Badge

Right now the first name ShapeString is not part of the name badge FreeCAD Body. We need to add it to the Body:

  1. In FreeCAD, Select the PartDesign Workbench.
  2. Right-click on the ShapeString you just created and select Move object to other body.
  3. In the resultant dialog, select the Body of your badge (probably named Body).
  4. In the Property-Value panel,for Map Mode, click on the word Deactivated.
  5. Three dots () will appear to the right of the word Deactivated. Click on the three dots.
  6. In the resultant dialog, under Attachment Mode, select Object’s XY.
  7. Click OK.
Attaching the ShapeString to the badge's Body
Attaching the ShapeString to the badge’s Body

Now you can Extrude your first name, by clicking on the ShapeString you created, clicking on the Extrude icon, then, in the resulting dialog, choosing the text depth (3 mm) and clicking OK.

NOTE: if the extrude fails, the font you chose isn’t suitable for 3D printing; choose a different font (such as Google Fonts Open Sans).

Extruding the first name
Extruding the first name

Create, Attach, and Extrude your last name

Repeat, for your last name, the process you used to make your first name: Create a new ShapeString using your last name as its text, position that ShapeString, attach that ShapeString to the badge Body, then Extrude that ShapeString.

After adding the last name
After adding the last name

Export for Printing

To export the STL file of this model:

  1. In FreeCAD, select the Part Workbench.
  2. Click on the badge Body
  3. Choose Part / Create a copy / Create simple copy
  4. Rename the copy to something sensible, such as “BadgeForPrinting”
  5. Click on the copy (BadgeForPrinting)
  6. Choose File / Export
  7. Name the exported file, something like “Badge.stl”
  8. Exit FreeCAD.

Slice the Badge STL File

PrusaSlicer and Prusa printers understand how to create multi-color prints by changing filament at a given layer. To tell PrusaSlicer to change filament color at the start of the lettering:

  1. Open PrusaSlicer and load your Badge.stl file.
  2. Click Slice now.
  3. Once PrusaSlicer is done with the initial slicing, a two-ended bar will appear to the right of the image of the print bed.
  4. Drag the top end of the bar down to the first layer of the text of your name (about 2.1 mm).
  5. Click the plus (+) sign that’s to the right of the end of the bar. Doing that will add a color change to the sliced output.
After adding the color change
After adding the color change

Continuing the slicing:

  1. Click Slice now once more.
  2. Once PrusaSlicer is finished slicing, click Export G-code.
  3. Save the resulting .gcode file somewhere.

Print the Badge

Load the .gcode file into your printer, load the background-color filament into your printer, and start the print. I used PolyLite Red PLA for the background color.

When the printer gets to the layer where the color changes (about 2.1 mm in), it will automatically pause and prompt you to unload the background-color filament and load the text-color filament. I used PolyLite Yellow PLA for the text color.

Printer has paused to change color
Printer has paused to change color

The printer will then continue the print, using the new color filament.

The finished, 2-color print
The finished, 2-color print

Once the print is finished, attach a badge magnet to the back of the badge.

Peeling off the backing of the badge magnet
Peeling off the backing of the badge magnet

Your badge is now ready to wear – congratulations!

The finished name badge
The finished name badge


Some font files aren’t suitable for 3D printing, because the lines of the font cross each other.

To discover whether the font is good for printing:

  1. Open your finished badge design file in FreeCAD.
  2. Select the Part Workbench
  3. In the Combo View, select the copy you made of the Body (“BadgeForPrinting“).
  4. Select Part / Check Geometry
  5. Click Run check.

If the font is suitable for printing, the check will show no errors.

About to check the geometry
About to check the geometry
No geometry errors
No geometry errors