Bag Clip
We calculate the final price from your selected file. You review and accept it before payment.
Saved on this device.
Print in place, robust bag clip with a good latch.
- Rating
- 4.25 / 5
- Likes
- 386
- Downloads
- 1,382
- Makes
- 9
- Views
- 4,211
- Reviews
- 8
Updated at source:
Model information
- Source
- Printables
- Category
- Kitchen
- License
- Creative Commons — Attribution
My wife asked for some replacement bag clips (hey, these things get lost over three decades). So I designed my ideal bag clip: stable hinge (minimal side-to-side wobble), a latch that stays latched, airtight seal, doesn't slide off of a bag, and should last forever, or at least until they get lost. :-)
Printing
Printed on BambuLab X1C.
I have tested the following BambuLab filaments by putting a set of 3 clips (50, 100, 130mm) in my freezer (measured -20C) overnight, then cycling each latch 3 times.
Room temperature filaments (failed the freezer test):
- ASA
- TPU for AMS - easiest to unlatch
Freezable filaments (passed the freezer test):
- PLA - may deform over time
- PETG
- PC
Filaments that failed at room temperature:
- PET-CF
The easiest method to print is to use the BagClip.3mf or BagClip-prusaslicer.3mf files. Otherwise here are the settings:
- Arachne wall generator
- 15% gyroid sparse infill pattern
- normal (auto), snug support
- smooth variable layer height on each object
I recommend printing the latches solid. On each clip, add a modifier cube (right click object, add modifier, cube), scale the cube to enclose the latch, then rotate and position it just passed the blade columns. Finally set the sparse infill density to 100% on each modifier:

Note that the hinge should break free with light to moderate pressure.
Design
This section is for those interested in examining or modifying the design. If you are just printing, you may skip this section.
To make the project more fun, the FreeCAD v1+ (I use the weekly build) model is parameterized with a configuration table in the params spreadsheet that is bound to the BagClipSize parameter on the Body:

Yes, this design uses “Allow Compound” (you can select one or more closed wires on a sketch to make a solid (example: pad or pocket)) so you need FreeCAD version 1.0 or later.
You can add other sizes by adding rows to the configuration table in the params spreadsheet starting on row 12. The first column, A, is the name so remember to start the text with a backtick( ex: 80 mm). Also you might want to just copy an existing row, then make necessary changes. I would avoid inserting rows in the configuration table (some versions of FreeCAD get a little confused and you have to remove, add the configuration table).

If you go below 50mm, you will need to change fillet radii, or remove the fillets. Note I use the term fillet here and in the configuration table, but actually used chamfers as they seem a little more stable when switching between bag clip sizes.
The design uses two sketches: BodySketch (XY plane) and BladeSketch (XZ plane). Binders are used to position each sketch in the model. Basically you select the binder, then select the wires forming closed paths, then either pad or pocket the selected closed paths.
We start by building the body on the XY plane:
- BottomBinder (position Z=0) => FullHeightPad, HingeBottomPad, LatchBottomPad
- MiddleBinder (position Z=<<params>>.Height/2) => HingeTenonPad, HingeMiddlePad, TabPad
- TopBinder (position Z=<<params>>.Height) => LatchTopPad, HingeTopPad
Then we switch to the XZ plane and add the blades. The XZ plane bisects the gap between the two halves of the clip when closed:
- PocketBladeBinder (position Y=<<params>>.Gap/2 + <<params>>.PocketDepth) => BladePocket, BladePad
- DualBladeBinder (position Y=<<params>>.Gap/2) => DualBladePad, ColumnsPad
Finally just add some chamfers on the blades and the body's edges.