The project's README from github.com/pgp00/beadrelief. As one markdown file: README.md.
Turn any image into an editable bead pattern or a multicolor 3MF relief — entirely in your browser.
Try the live demo → · Download the sample 3MF · 简体中文
Desktop-first · Use a viewport at least 980 px wide for the complete workspace.
| 🔒 Local by design | 🧩 Printable bead charts | 🖨️ Bambu-ready 3MF |
|---|---|---|
| Images and generated files stay in your browser. | Use the full MARD palette and export PNG/PDF patterns. | Project-filament colors and part assignments are included. |
The Help button in the app keeps this workflow, keyboard controls, FAQ, and browser support in one place.
The live demo has two explicit workflows that share the same editable canvas:
.3mf.Open the live demo, choose Bead pattern or 3D print, then upload a JPG, PNG, or WebP image.
| 1 · Frame | 2 · Build | 3 · Inspect | 4 · Calibrate |
|---|---|---|---|
| Crop, zoom, reposition, and clean the background. | Choose solid or layered color and add a border, detachable backplate, hanging loop, or recessed back text. | Scrub through print layers, isolate a layer, or explode the stack; the same mesh is used for preview and export. | Print the generated swatch, enter measured colors, then save the printer/nozzle/material profile for reuse. |
Every project JSON, layered workbook, and 3MF carries the bottom-to-top print recipe. The 3MF also embeds the selected nozzle and material assignments.
The usage panel can safely merge isolated color speckles in one undoable pass. Layered calibration is tied to the physical filament order, TD, printer, nozzle, and layer height; changing those inputs automatically retires stale measurements.
.3mf.0.4 mm nozzle.For layered work, open Material profile → Layered color calibration, download the calibration 3MF, print it with the same printer/nozzle/filaments, and enter the measured swatch colors before marking the profile as physically verified.
[!IMPORTANT] The checked-in heart file has not yet been physically printed. Always confirm the AMS mapping and slice preview before printing.
Follow the full editable-project path with the same tiny heart:
| Source | Edit | |
|---|---|---|
| PNG | Project JSON | Grouped 3MF |
| Input | Action |
|---|---|
| Arrow keys | Move the keyboard cursor |
| Space or Enter | Draw at the cursor |
| Delete or Backspace | Clear the cursor cell |
| Hold Space and drag | Temporarily pan the canvas |
| Mouse wheel | Zoom the canvas |
| Right-click drag | Pan or erase, based on the right-click setting |
Releases are verified in current Chromium. The supported setup is the latest Chrome or Edge with a desktop viewport at least 980 px wide; WebGL is required for the 3D preview. Firefox and Safari are not yet part of the supported release contract.
No. Image conversion and exports run locally in your browser.
The current draft is stored in this browser. Export the edit-record JSON for any project you need to keep or move to another device.
Switch to 3D print, keep the canvas at 32 × 32 cells or smaller, and resolve any print-setting validation message before exporting.
Requires Node.js 22.9 or newer.
npm ci
npm run check
npm run dev
Open http://127.0.0.1:5174/.
CI regenerates the checked-in samples, tests every 3MF archive, and verifies the embedded project-filament colors and part assignments. Exact hashes and the compatibility record are in Bambu Studio verification.
Image processing and generated files stay in the browser; the app does not upload them to a server. The current editable draft may remain in browser local storage until it is replaced or cleared.
BeadRelief is based on the MIT-licensed Jett-Wu/Perler_Beads_Generator. See UPSTREAM.md for the imported commit and project-specific changes. This repository is released under the MIT License.
If BeadRelief helped you make something, a GitHub star helps other makers find it. Contributions are welcome — see CONTRIBUTING.md.