Portable 35MM film scanner
This film scanner is nearly entirely 3D printed, the only critical hardware needed is ~8 small wood screews, a backlight and of course a recording device, for most users i reccomend just using your smartphone. The native backlight option here is the Ulanzi VL49 lamp, originally meant for cameras, but adapted here to be slid in and out of the scanners body.
Demo video: https://youtu.be/DpXI0CJvPWM?si=4PbpCQBXif9XY2vO
The scanner is is designed for standard 35mm film (Kodak Standard)
-It natively uses the Ulanzi VL49 lamp as smooth backlight but you can also glue some tracing paper and put some led's in it's place to achieve similar effect. This particular lamp offers adjustable white balance and brightness.
-the native version of this scanner is portable as both camera and lamp are battery powered and the scanner can be taken apart with ease.
-the film can be advanced by rotating film sprockets that grab the film by the perforations. First feed the film from the marked side then rotate the knob to engage the sprockets for steady film positioning. You can also not install the sprockets and advance the film by hand.
-you can take pictures of the film by using either the phone adapter (reccomended) or the camera adapter. I designed that one primarly for my own camera (Canon eos M6 MII) so the compatibility here is limited.
-If you want to use a camera but your's doesnt fit into adapter, you can also mount the camera on a tripod or maybe a stack of books then cover the gap between the scanner and the camera with some fabric, then use remote trigger to avoid nudging the camera out of focus.
-For repeatable positioning, you can use the "racheting insert" (see pictures) an optional part that makes it so you can advance the film to the next frame, then slightly back it up so that the perforations push into the rachet pins and keep every next frame in the same position in the camera view. However, this part obviously makes pushing back the film tedious or impossible that's why you can use the non-racheting insert or no insert at all.
-For greater stability, there is an optional wide & lightweight base you can slide the scanner body into. It is needed if the phone/camera topples the scanner during use.
-for rotating the film sprockets, you can spin the bare axle or add a knob or a print-in-place- handwheel.
Assembly:
-print all parts in orientations as shown in the pictures,
-push two film sprockets, facing opposite each other onto the axle such that the key on the axle lines up with the sprocket bore, so that they'll be locked on the axle. make sure the teeth on both sprocket are aligned
-slide the axle into one side of the scanner body then put the two sides together - at this point you can slide in the racheting or non-racheting insert.
-screw both sides together using wood screws. you dont need to use much force, 4 screws are there mainly for alignment.
-slide in the Ulanzi VL49 lamp or other backlight of your choice.
-Optional: push a knob or a handwheel or one or both sides of the axle sticking out from opposite sides of the scanners body
-Optional: slide the whole assembly into the wide base and secure it with two wood screws if needed.
-take the camera/phone adapter and screw it into matching holes on the top
-test the motion of the film sprocket, it should spin freely, if it doesnt, you can first try and 'break them in' by spinning them using a drill for a minute or so to lap the mating surfaces, if it doesnt help, remove the sprockets and gently sand down the ends that are in contact with the scanners body, although that shouldn't be necessary, once you're happy with the sprocket, you can add a tiny dab of lubricant using a toothpick, even olive oil works, that should make the rotation buttery smooth.
-A phone containing macro camera can be placed on the phone adapter and (ideally) manually focued and adjusted in manual camera app mode.
-Camera can have its lens lowered into the adapter and gently clamped using an M4 bolt and nut, just tight enough to keep it in place, not so tight as to leave any marks on the cameras body. the clamp is secured on the non-moving base of the lens and a 'window' on the side of the adapter gives you access to manual zoom and focus adjustment. The stock lens in my Canon eos M6 MII couldn't focus at such close target so i designed a EF-M male to EF-M female extension adapter that moves the lens further away from the sensor turning them into a simple macro lens.
-for longer scanning sessions, you can connect a usb power cable to the lamp from below to keep it charged, but that only works if you're using the base, as it gives you the required clearance from the bottom, Camera can be perpetually powered using a dummy battery adapter.
-raw pictures can be imported into software like adobe lightroom, there you can invert the colors, apply auto correction, lens profile correction then crop the pictures for export.
Upon testing, i noticed that the Ulanzi VL49 does get very hot when running for even ~20-30min. I reccomend not setting the brightness to 100% but 40-60% and adjusting the exposure accordingly
I printed my scanner body and camera adapter using matte black ABS which is a reccomended filament here as PLA can potentially soften from the heat of the lamp. black PETG will also work fine.
-The film sprocket is the smallest and most difficult part to print, if you have 0.2mm nozzle, use it. the sprocket should progress the film smoothly and silently without poking or scratching it. I reccomend slicing it as shown in the picture, with random - ! not aligned ! - seam, 0.3-0.4mm line width (assuming you use 0.4mm nozzle) 0.16mm layer height and low speed. It's better to underxtrude rather than overextrude here.
Update 18.04.2026
Upon testing, i noticed that the light from Ulanzi VL49 lamp wasn't perfectly diffused as you could see dark spots between various led's behind the face of the lamp, so i made changes to the scanners body - i increased the vertical distance between the face of the lamp and the film and added two narrow slits you can slide diffusion film / tracing paper in to further rescatter the light. (50x85mm slices)
Update 20.04.2026
Further testing revealed that the stock lens of canon M6 MII were unsuitable for this task as the aperture opens fully when you disconect the lens from the camera (when using the 3D printed adapter) and the shallow depth of field blurred the corners of the scans. So i bought old Pentacon 50/1.8 manual lens and designed an adjustable EF-M to M42 adapter which consists of two parts that screw into each other and that allows you to finely adjust the distance between the sensor and the lens to find the sweet spot with minimal distortion and edge blurring when the aperture is set to F16. If you run into similar issue and closing the aperture doesnt help, you can also brute force the issue by shooting in .RAW, zooming out (film frame fills 75% of the picture instead of 95% for example) then cropping the film frame, effectively removing the blurred, irrelevant part.
I included the .Blend file with the entire assembly with relatively clean geometry you can alter to suit your needs.