Badges / Higher Education / Open Source

Open Badges: Want to Make Your Own Badges by Hand? Here’s How.

After doing quite a bit of research into Mozilla’s Open Badge Project, I took it upon myself to try to make a badge by hand.  What about using the Issuer API?  Wouldn’t that be simpler?  Well, not really.

Mozilla Open Badge logo

I’ll be the first to admit that my programming skills are, um…being developed.  And by developed, I mean that I plan to learn some JavaScript, Python, and the new capabilities of HTML5 and CSS3 in the next few months.  That said, I took a quite “non-technical” approach to making my first badge.  If you’re interested in making badges for a course/class you’re teaching or for a workshop/tutorial you’re offering, this post will give you the low-down on making a badge by hand.

Here’s a list of what’s included in this post:

  1. Why Badges?
  2. Badge Design
  3. Anatomy of a Badge
  4. Assertions – Proof of Earnership
  5. Make a Badge Now!

Why Badges?

The idea of using badges for achievement is nothing new.  Boy Scouts have been using badges for over 100 years to reward members who developed skills and achieved goals that were deemed important to their craft.  Why not take that same idea and provide granular, detailed credentials of learning?  Many educators are excited about the movement of badges in learning, and Mozilla is developing the framework to support globally-recognized badges that can be issued by any group.  Effective use of badges in education is still being discussed, though motivated university instructors David Wiley and Alex Halavais are already reporting back about their experiences doing so.  For direct information about Mozilla’s Project, visit

Here’s a 5-minute video put together by HASTAC that describes motivation behind badges for learning:

Badge Design

Though I didn’t think on it much until watching a recorded webcast from the DML Badge Competition, the visual design of badges is an essential part of a badging system.  If you decide to issue badges, they had better well be visually tied to your organization.  Branding is important these days, whether you are a profit-seeking entity or a public university.  Consider the color schemes, fonts, and currently adopted logos of your group as they will be important in helping people recognize your badges.  If you’re looking for some neat (and free) icons to use on your badges, check out my blog post about the Noun Project.

Cartoon Badges

Anatomy of a Badge

When it comes down to “what” a badge really is…it’s just a picture.  Actually, it’s a .PNG image file.  For those of you unfamiliar, many of the pictures and images you see when browsing the net are in .PNG format.  If you’ve ever heard of .JPGs or .GIFs, it’s very similar.  When issued to a learner and then displayed on a professional website/resume, the badge’s .PNG file will appear like this:

Badges in a WordPress Blog

Just a .PNG file?  Not quite.

When a Mozilla-spec badge is created, data in .JSON format is “baked” in, linking the badge back to the issuer and displaying other information about the badge.  This connection of the badge to the assertion, which lives behind the walls of the group that issued it.  This prevents duplication and the spread of “spadges” (Halavais’ term) because badges must link back to the group that issued it.  A fake badge won’t be validated when it’s clicked to show evidence of how it was earned.  Wrapping my head around this took a while, but it’s an effective way to deter false badge creation.

Assertions – Proof of Earnership

When badges link back to the proper assertion, data is displayed about the issuer, the earner, and the circumstance about how it was earned.  When clicked, the badge can provide all this information in an attractive way.  Below is a picture of a test badge I issued to myself, seen from inside the badge backpack.

Test Badge from ETEC 697 Course

Note: I did not actually earn this badge.  It was a test badge I created to better understand how to hand-build a Mozilla-spec (OBI compatible) badge.  Because it’s OBI compatible, I can hold it in my backpack.  However, the “evidence” link simply goes back to my masters program home page, not the page proving that I earned the badge.  It would be silly to post this to my professional profiles, as it’s only a novelty badge, not one with proof I did anything.

Make a Badge Now!

If you are interested in trying to make a badge by hand, these directions may help out.  As a non-programmer, I’m glad I built this badge by hand because now I have a much better understanding of how badges are built to be OBI-spec.  I used a combination of David Wiley’s post and the documentation in the Mozilla Open Badge Wiki.  I also consulted with Stephan Fabel, the SysAdminSuperProgrammer who makes things run nicely in our College of Education’s IT department.

Note (June 13th 2012): This how-to is designed to show issuers how they can create badges by hand, but is not a comprehensive guide to managing a system of badges.  Such a guide is in development, but for now there is more conversation about badges in the OpenBadges Google Group.


1.  Get a .PNG image file to use for your badge.  I mocked up a badge in Prezi, took a screenshot of it, and saved it to my computer with the .png file extension.

ETEC 697 Badge Photo

2.  Create a new text file in Notepad, TextEdit or any other text editor.  Copy the entire text in blue, as seen below:

{ "recipient": "", "evidence": "", "issued_on": "2012-05-21", "badge": { "version": "1.0.0", "name": "Explorer", "image": "", "description": "Has displayed expertise in hand-made badge creation.", "criteria": "", "issuer": { "origin": "", "name": "Course Lecturer", "org": "Not a Real Badge, 2012", "contact": "" } } }

Paste this into the text file, then change the values on the right.  For example, the recipient can either be a hashed number (as seen above) or an email address representing the earner’s email address.  See the Mozilla Assertion page for info about how to fill out the fields.  In the “Image” field, make sure you paste the public link (URL) to your badge .PNG in correctly.  I saved my .PNG file in the “Public” folder inside my Dropbox, which allows me to get a public link for the file as if it was on a typical web server.

3. Save this text file with the extension “.json”.  When you save the text file, you can indicate this, as seen below.  You may have to manually type in “.json” after your file name to avoid saving under the default “.txt” format.

Saving a file with extension .json

4.  Validate your .JSON data.  To ensure you provided valid data in the assertion, copy and paste the contents of your .JSON into this free service.  If you get errors, they will be easily fixed.  Visit and enter your .JSON file here.  Click “check your assertion” and see how you did.

JSON File Validator

Fix issues, update your .JSON file (in a text editor) and then save the file in a publicly-accessible location, like on a web server or self-hosted website.  Time to bake.

5.  Send your badge to the Mozilla “baker” service.  Take the public link (URL) of your .JSON file, and insert it in place of the sample link seen below.  Make sure your .PNG image file is still on a public server.

When you type this into your web browser press enter, you are asking the Mozilla baking service to interpret your .JSON file and attach that data to the .PNG image you indicated in the .JSON file.  This “baking” binds the assertion data (.JSON) and the image.  If all goes well, a new .PNG file will be automatically downloaded.  That’s the badge, baked and ready to go.

Open Badger Screenshot

6.  Upload the badge into your own Mozilla Backpack.  Badges (.PNGs) that you get from the badge baking service are OBI-compliant so they will slide right in, just click “choose file” to browse to your badge file and upload it.  Here’s a picture of that badge I created in this test, on the right, sitting next to other badges I’ve earned.

Badges in a Backpack

Next Steps

I’m sure some people are still wondering why I haven’t described how to use the Issuer API, and instead chose to build badge by hand.  The reason is simple: There are plenty of educational technology enthusiasts out there who, despite having very limited programming knowledge, would like to build a small set of badges to pilot in a course.  If I could figure out how to make a badge by hand, I could tell someone else how to do it, too 🙂

Next I’ll be exploring the use of the Issuer API and looking at how to automate the process of baking badges through forms on a web page.  If you are interested in the Open Badge project, please check out for more helpful information.  Ask your colleagues about badges and get conversation flowing.  There is a Google Group for badges, a P2PU course to round out your knowledge of badges, and some really friendly people over at Mozilla to answer questions.

31 thoughts on “Open Badges: Want to Make Your Own Badges by Hand? Here’s How.

    • Thanks Paul. Excited to help brainstorm ideas for the badges (including the FOSS Explorer one) that you may use next time around. An open-source badge system to benefit open-source learners. Full circle!

  1. Outstanding work Billy!!!! Having a collective of people putting effort into building understanding of how all the badges stuff works is soooooooooo cool!

  2. This is great, thanks for writing this Billy.

    There’s one issue: the quotes in the assertion you provide in blue above got converted to fancy quotes (“ and ” rather than “). This will make the JSON parser blow up when it tries to validate the assertion ( try it out here). If there’s a way for you to put that in as a code block rather than a quotation block, I think that should make wordpress not do the conversion to fancy quotes.

    • Thanks, Brian. I’m very happy you took a look at it and checked my work! I changed the blockquote tag to a to code tag and it now works when pasted directly into the validator. Glad you caught that!

    • Thanks Alex! Agree with you entirely. If you plan to build out a system of badges, it’s a good idea to know how a single one is made. Look forward to chatting with you soon.

  3. Pingback: Billy Meinke -Open Badges: Want to Make Your Own Badges by Hand? Here’s How. | Open Educational Resources (OER) |

  4. Pingback: Billy Meinke -Open Badges: Want to Make Your Own Badges by Hand? Here’s How. | Recursos Educativos Online |

  5. Pingback: Billy Meinke -Open Badges: Want to Make Your Own Badges by Hand? Here’s How. | On education |

  6. Pingback: Open Badges: Want to Make Your Own Badges by Hand? Here’s How. | OLnet |

  7. Pingback: Open Badges: Want to Make Your Own Badges by Hand? Here’s How. | OLnet OER Research |

  8. Pingback: Open Badges: Want to Make Your Own Badges by Hand? Here’s How. | The e-learning Professional |

  9. Pingback: Opportunité : les badges ouverts, pourquoi, comment ? « Techniques innovantes pour l'enseignement supérieur

  10. Thank you for this very well written post. It helped so much.

    I’ve been searching for two days to get something going around Badges on my community.

    I love how the Badges system works on Vanilla Forums (commerial version) now I found out about this I’m going to try and include something like that into bbPress and WordPress.

    • Hi Jaja, thanks for the comment. Glad you found the post useful! For a method to create badges in a more automated way, please take a look at Great to hear that you are looking into using badges in your community.

  11. Pingback: Open Badges: Want to Make Your Own Badges by Hand? Here’s How. | Gamification of VET |

  12. Pingback: Open Badges: Want to Make Your Own Badges by Hand? Here’s How. | Community College acreditation |

  13. Pingback: Open Badges: Want to Make Your Own Badges by Hand? Here’s How. | Temporary holding topic |

  14. Thank you so much Billy for this post!! You took the information (overload) that I have been gathering from about a half-dozen other pages and condensed it into an easy to understand and implement form. Before reading your blog post I didn’t think I’d ever grasp Mozilla’s OBI. Now, I know I can start my own pilot badge program.

  15. Pingback: Learning Repositories, Badges, Standards and Mahara

  16. Pingback: Adding Open Badges to Your Moodle Course – Step 1: Install Moodle 2.5+ | Technology for Teaching

  17. Pingback: Researching the Opportunities | Beuth Badges

  18. Pingback: Mozilla Open Badges for International Development Practitioners | Facilitating Change

  19. Billy, great resource! Something simple that I’ve been searching for now for awhile. One question though. I was able to follow your steps all the way through and successfully have baked my badge. When I try to upload it to my backpack, however, I get the following error:

    500 TypeError: Cannot call method ‘get’ of undefined

    at userBadgeUpload (/var/www/openbadges/controllers/backpack.js:384:41)
    at callbacks (/var/www/openbadges/node_modules/express/lib/router/index.js:161:37)
    at param (/var/www/openbadges/node_modules/express/lib/router/index.js:135:11)
    at pass (/var/www/openbadges/node_modules/express/lib/router/index.js:142:5)
    at Router._dispatch (/var/www/openbadges/node_modules/express/lib/router/index.js:170:5)
    at Object.router (/var/www/openbadges/node_modules/express/lib/router/index.js:33:10)
    at Tracer.monitor (/var/www/openbadges/node_modules/newrelic/lib/transaction/tracer.js:180:22)
    at ErrorTracer.monitor (/var/www/openbadges/node_modules/newrelic/lib/error.js:192:12)
    at Tracer.monitor (/var/www/openbadges/node_modules/newrelic/lib/transaction/tracer.js:178:28)
    at Object.monitored (/var/www/openbadges/node_modules/newrelic/lib/transaction/tracer.js:159:17)

    Any suggestions? Thanks for any assistance you can provide.

    Philip Arnold

  20. Pingback: Microcredenciales, badges y Mozilla Open Badges |

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s