Two-layer Papercut Snowflake Generator

Here’s a little online snowflake generator called Fr0zenSystem. It can generate any number of nice two-layer paper snowflake shapes. These can then be cut on your Glowforge and stacked together. The top layer is only cut. The bottom, intended to be cut from something like colored poster board layer or translucent vellum paper, is both engraved and cut.

It’s also possible to make three-layer, two-sided snowflakes by cutting two of the top layer and putting one on each side of the engraved layer. If you use translucent material for the central layer, you’ll only need to engrave it on one side. If you use opaque material like poster board, you’ll need to engrave both sides.

Fr0zenSystem is what is called a “fork” of the original open source project by bleeptrack. I’ve modified and reworked it in a number of ways. In particular, it now makes .svg files that are directly usable with a Glowforge.

How to Use the System

When you go to the system’s web page you’ll see the image of a generated snowflake:

If you click on the snowflake, the image will unstack the two layers so you can see the back layer more easily:

Clicking on the regenerate button will make a new random snowflake. You can also enter someone’s name and birthday and click on the regenerate button to create the unique snowflake that corresponds to what you entered. To go back to generating random snowflakes, just clear out the names and birthday.

When you have a snowflake you’d like to cut, click on the download button. This will bring up a dialog that lets you save the current snowflake as a Glowforge-compatible .svg file. Next, upload it in the usual way to the Glowforge GFUI. In the GFUI, select everything and use the scaling tools to make the flake the size you want. Next position the two layers over your material and set the parameters you’ll use for each step. I like to place both kinds of materials next to each other on a slightly sticky backing board. When everything’s ready to go, it looks like this:

Here I’m using blue poster board for the back layer and white cardstock for the front. The operation settings will vary depending on your material, of course, and on where you like the balance between speed and power. As has been widely discussed, faster with more power often results in less char than slower with less power. But going fast around sharp corners can lead to cuts with wobbles in them.

As always, laser cutting thin material works best if the material is first stuck to a flat, smooth backing of some sort, so the air assist doesn’t get under it. I use a piece of waste pasteboard covered with laser-compatible contact cement that allows material to be repositioned. I’ve successfully used both 3M spray adhesive and rubber cement but like the 3M coating better because it stays tacky for a long time and is just sticky enough to hold things in place during cutting but not so sticky as to make removing the cut pieces hard. I use a craft knife to get under the edge of the pieces to be removed.

Bug reports and suggestions for extensions or improvements are more than welcome.

Oh, one more thing. Since the code is all open source under a very non-restrictive license, you’re free to use it and the .svg files it generates for just about whatever you can think up.


Very nice share. Excited to give it a try!


The final product from that is a beautiful thing…and a generous share from you. Thank you.


So the program was designed to collect names and birth dates I guess?


No, not hardly. And trying to do that in a small open source program would pretty quickly be uncovered. Besides, nothing needs to be entered if you just want a random snowflake.

If you do enter a name and/or date, they’re used locally (in your browser) as input to a hash function to determine which of 2^128 snowflakes to generate.


Lovely share! Thank you


If it’s not using the identifying information for anything other than a hash, why not just ask for a random seed word? If you’re trying to get this used as much as possible it’s best to remove any potential hurdles… I saw the name and birthdate fields and immediately put my guard up.

It’s a cool thing you’ve made, and I want to give it a whole hearted thumbs up, but with the fields as they are I just can’t.

Also, I haven’t tried it yet, but if you’re asking for consistent fields won’t you get the same hash each time for a given person? Is that the idea, to make a nonrandom seed so that the results are reproduceable?


Thanks! This was worthy of a bookmark.


That’s very cool! Thanks for sharing and I can’t wait to give it a try!

1 Like

And this is why we can’t have fun things anymore.

Don’t worry, I’ll give it a whole hearted thumbs up.

And if you want to see my special snowflake:
Christopher Masto

By this, you mean unfettered capitalism and abuse by internet entities that sell your data and use it in ways that are too harsh to get into here? Then yes, we agree. Those entities that have taught me (and you, I hope) to mistrust anyone who is asking for identifying information for what appears to be no reason.

I think it’s entirely reasonable to be skeptical here. I shouldn’t have to go through the code of the open source project to find out what they’re doing with my information, nor should I take it on trust that how it’s currently being used won’t change.

I stand by my position: if the data is a simple hash generator, make it something like “enter random words”, or better yet make it fields that are autopopulated with random words that you can edit. Asking for user input here has two major drawbacks: more work for the end user and also puts many users on the defensive. If @dehne1 wants as many people as possible to use it, making those relatively simple changes would go a long way to removing roadblocks. It’s win-win.

There are many valid reasons not to want random people to know these pieces of information, especially for people who are in higher risk categories. Privacy concerns aren’t some imagined issue.


No, I mean cynicism and paranoia.

It literally works out of the box without putting anything in those fields, so I find the argument of “I saw some optional fields, so I immediately assumed evil intent and closed the browser” a bit ridiculous. And to be honest, I’m probably reacting less to your reasonable suggestion to make a text field you can put anything you want in than to beerfaced’s “So the program was designed to collect names and birth dates I guess?” comment, which to me comes across a rather rude way to respond to someone who did a bunch of work and is sharing their art for free with the community.

And that’s why I was so annoyed at not being able to use ChatGPT without giving them my personal cell phone number, which is something I go out of my way to protect because the threat model (getting more spam calls) is relevant to me.

People who want to protect their name and birthdate are of course welcome to do so and don’t need a reason or my permission.

My objection is to immediately assigning ill intent, especially for an open source project, and where the most likely explanation by a long, long shot is that they just put that because it’s fun and cute to make a “personalized” snowflake. Because even if they were collecting names and birthdays and somehow separating the real ones from the garbage, I am at a loss to imagine what they would do with them. And I’m actually pretty cynical and paranoid.


For those who aren’t hanging out on Twitter: Bleeptrack was also talking about this during development on Mastodon – – and has a YouTube video about the project:

I haven’t used either generator but, I see the original also outputs SVGs. Is there something different about the SVGs output from this fork?


Oh, my. I’m beginning to regret sharing this thing.

The idea is to optionally allow people to generate their own special snowflake by entering a name and date, while also allowing those who, for whatever reason, do not want to enter data like that to get any number of random snowflakes by not entering any data at all.

For those who are wary of entering information associated with real people, but want to use the generator to generate particular snowflakes, I see four alternatives.

  1. Only enter partial information, e.g., just a first and last name or just a date. Or maybe just a first name and date.

  2. Enter made up names and dates. E.g., Charlie Brown 10/30/1946 Or Verschiedine Moglischkeiten 1/1/2023

  3. Generate a random number or string of characters using a trusted method for generating a hash of a real person’s name and birthday and enter the result in one of the name fields.

  4. Make up a random seed word or phrase and enter it into one of the name fields.

This last alternative is essentially what you suggested. I chose not to do it that way because it doesn’t make the resulting snowflake “the one” belonging to a person.

Yes, entering the exact same characters and/or dates into the fields, will result in the exact same snowflake every time. As you suggest, that’s the idea: to choose which of the universe of possible snowflakes is in some (hash-function-mediated) sense that person’s “own special” snowflake. For those who would like that.

Finally, I’m really not trying to get this used as much as possible, I thought it was fun and might be of use to some part of the community, so I shared it. And it’s open source, so it’s also open to anyone who wants to change it.


Imagine harder. It’s not just name and birthday, it’s name and birthday attached to a ton of metadata – IP addresses, all manner of browser information, etc. It can be used to correlate data in really nasty ways.

It’s not cynical or paranoid to understand the risks here – they are definitely present.

That’s too bad, it looks like a nice gizmo. That’s the thing about sharing stuff (projects, art whatever) online, you don’t control how people will react once it’s out there. Any of my concerns or suggestions aren’t meant to discourage you from sharing or making stuff, I apologize if that’s how I made you feel.


Yes, what’s different about the output of the original is that it needs “tweeking” in a program capable of editing svgs to be used with a Glowforge. In particular, the two layers are directly on top of one another and have the same stroke colors for the cuts. And the “engraves” aren’t what the GF thinks of as engraves.

It’s entirely possible to use bleeptrack’s original version, you just need edit the output a bit. Also, the original version doesn’t have the ability to generate a non-random snowflake. Should you want that, of course.

1 Like

Sorry you consider my comment rude. There has been much discussion over the years wrt how someone’s typed comment comes across. Since there is no facial expression or verbal inflection it can be interpreted different ways by different people and even by the same person on different days depending on their state of mind at the time of reading. Consider a situation where you and I were sitting around discussing this subject. You explained it was asking for names and birthdates. I turned to you, eyebrows raised and said "So the program was designed to collect names and birth dates I guess?” Would you consider that rude in that context?
I am always considering the intent when asked for information I consider not relevant. I always think back to that old saying: “If you are not paying for it, you’re not the customer; you’re the product being sold.”

1 Like

I’m just going to apologize to everyone involved and recuse myself from this discussion. I should have spotted the signs earlier, but it’s obvious to me in retrospect: I am running at a bit of a sleep deficit and one of the things I do under stress is get grumpy and start arguing with people on the Internet. I’m probably capable of a productive conversation with people about online privacy, but I’m not capable of it today and in any case this is someone else’s topic on Free Laser Designs, not my soapbox to shout from.


Gorgeous snowflakes! I love the layering look too :smiley: