Your files never leave your device. All processing happens locally in your browser.
How do I make a mood board online for free without uploading my images?
Open the Mood Board Maker, choose a board shape (4:3, 16:9, square, portrait or 9:16 story), then drop freeform TILES onto it — your own uploaded IMAGES, COLOUR SWATCHES, TEXT notes and simple SHAPES — over a solid, gradient or subtle-texture background. Start from one of six templates (brand, interior, fashion, wedding, web/UI, travel), then arrange everything by hand: drag, resize from eight handles, rotate, re-order, duplicate and delete each tile, with snap & alignment guides and a one-tap auto-arrange grid. Select any photo to sample its dominant colour or a whole six-swatch palette straight onto the board. A live WYSIWYG preview shows the exact result; export a high-resolution PNG (up to 3200 px wide), copy it to the clipboard, or save the whole board (images included) to your browser and load it later — 100% on your device, nothing uploaded.
Four tile types: uploaded image tiles, colour swatches, text notes and shapes (rectangle / ellipse / line)
Freeform drag / 8-handle resize / rotate, z-order, snap & alignment guides, plus a one-tap auto-arrange grid
Five board shapes (4:3, 16:9, 1:1, 3:4, 9:16) on a solid / gradient / inline-texture background
Sample a dominant colour or a six-colour palette from any uploaded photo, on-device
Six templates + export high-resolution PNG (1600–3200 px) or save/load the board as JSON in your browser — nothing uploaded
What is
Mood board
A mood board (also called an inspiration or vision board) is a visual collage that gathers images, colours, textures, type and short notes onto a single surface to capture the look, feel and direction of a creative project — a brand, an interior, a fashion story, a wedding, a product UI or a trip. Unlike a rigid photo grid it is usually FREEFORM: overlapping tiles are placed, scaled and rotated by hand to build a visual rhythm, and a small colour palette is pulled from the imagery. A mood board maker is a tool that composes those image, swatch, text and shape tiles on a chosen board shape and exports the result as an image.
No. Every image you add is decoded and composited locally on an in-page canvas, colour sampling reads the pixels on an off-screen canvas on your device, and the board is drawn and exported entirely in your browser. Nothing is uploaded and there is no server or CDN in the editing or export path.
The Mood Board Maker is 100% client-side. Each tile is a plain typed object (an image reference, a colour swatch, a text note or a shape) held in the page, and a pure engine draws them onto an in-browser HTML5 canvas. When you upload a photo it is read straight into a local data URL and composited on-device — it never leaves your computer and is never sent anywhere. Sampling a colour draws a downscaled copy of your image to a detached off-screen canvas and reads its pixels locally. Export renders the same scene to a canvas and saves it with canvas.toBlob, and Save/Load stores the whole board (images embedded as data URLs) only in this browser’s localStorage. There is no analytics, no tracking and no CDN in the processing path; the only optional network use is consent-gated ads. The tool works offline once cached, and closing the tab discards anything you did not save or export.
There is no built-in stock-photo library — on purpose, since that would mean fetching from a third-party server and break the privacy promise. You upload your own images; templates give you a palette, notes and empty image frames to drop them into.
Unlike cloud tools that bundle a huge stock library, this maker deliberately ships NO external stock imagery, because pulling real photography would require calling a third-party server and would break the “nothing leaves your device” promise. Instead you bring your own images: click “Upload image tile(s)” (you can add several at once) and each becomes a tile you can drag, resize, rotate, round the corners of, give a white polaroid frame, and crop-to-fill (cover) or fit (contain). The six starter templates seed a cohesive colour palette, a couple of text notes and empty image FRAMES laid out for you — you just drop your own photos into the frames. Local vector shapes and colour swatches let you build a rich board even before you add a single photo.
Select an uploaded image tile and click “Dominant colour” or “Extract palette”. The tool draws a small copy of the image, buckets its pixels by colour and adds the most common ones as swatch tiles, each labelled with its hex code — all on your device.
Colour sampling uses fast bucket quantisation. When you pick a selected photo and choose “Dominant colour” or “Extract palette”, the engine draws a downscaled copy of the image (about 48–64 px on the long edge) onto an off-screen canvas, reads the pixels, skips transparent ones, and groups the rest into 4-bit-per-channel buckets. It averages each bucket, orders them by how many pixels fell into each, de-duplicates colours that are perceptually close, and drops the top one (dominant) or top six (palette) onto the board as swatch tiles showing their hex codes. It is a quick approximation of the prominent colours rather than a designer’s hand-picked or perceptually-clustered palette, so treat the swatches as a starting point and nudge, recolour or delete them to taste. Everything runs locally — the image is never uploaded to compute the palette.
Yes. Export a PNG at up to 3200 px wide (or copy it to the clipboard), and use Save to keep the whole board — images included — in your browser, then Load it next time. Both run entirely on your device.
Because the same render routine draws the live preview and the export, the file you download matches the board exactly (true WYSIWYG). Pick a PNG width of Standard (1600 px), High (2400 px) or Ultra (3200 px) — the height follows your board shape — then download it or copy it straight to the clipboard. Save serialises the board to JSON (with each photo embedded as a data URL) into this browser’s localStorage, and Load restores it and re-decodes the images; this keeps one board per browser and never touches a server. Note the practical limits: localStorage quota is usually around 5 MB, so a board with several large photos may be too big to save (just export the PNG in that case), and canvas text renders with the fonts installed on the viewing device, so metrics can vary a hair between browsers.
Detailed Explanation
📖How It Works
Mood Board Maker — A Real, Private Freeform Collage Editor
The Mood Board Maker is a 100% client-side design editor for mood / inspiration boards — a free, private alternative to Milanote, popular design apps or a Pinterest board for a single board. You pick a board SHAPE (4:3, 16:9, square, 3:4 portrait or 9:16 story), then compose freeform TILES over a solid, gradient or subtle inline-texture background: your own uploaded IMAGES, COLOUR SWATCHES, TEXT notes and simple SHAPES. Every tile is placed by hand — dragged, resized from eight handles, rotated, re-ordered — with snap and alignment guides and a one-tap auto-arrange grid. Six templates (brand, interior, fashion, wedding, web/UI, travel) seed a palette, notes and empty image frames. Crucially there is no external stock imagery: you bring your own photos, and everything is drawn and exported on your device.
Four freeform tile types: uploaded image, colour swatch, text note, shape (rect / ellipse / line)
Five board shapes: 4:3, 16:9, 1:1, 3:4 and 9:16, each with a design-unit artboard
Snap + alignment guides, z-order, duplicate, delete, and a one-tap auto-arrange grid
Six templates seed a palette, notes and empty image frames — no external stock photos
⚙️Methodology
Method: A Design-Unit Layer Model Shared With the Flyer Editor
The board uses the same proven geometry approach as the Flyer and Brochure editors. All tile geometry lives in a uniform, square DESIGN-UNIT space whose width is always 1000 and whose height is 1000 divided by the board aspect ratio — because the height already carries the ratio, one design unit maps to the same number of real pixels on both axes, which keeps rotation, hit-testing and eight-handle resize simple and correct at any output resolution. Each tile is a plain typed object with position, size, rotation, opacity, corner radius and drop-shadow. A single renderBoard() routine draws the background then every tile (translate to centre, rotate, apply opacity, rounded-rect clip, cast a shadow) for BOTH the low-resolution live preview and the full high-resolution export, so the preview is genuinely WYSIWYG. Snapping compares the moving tile’s edges and centre against the other tiles, the board edges and the board centre, returning both the adjusted position and the guide lines to draw.
Tiles are typed objects: position, size, rotation, opacity, radius, shadow
One renderBoard() draws the preview and the export — WYSIWYG by construction
Rotation-aware hit-testing picks the top-most tile under the pointer
Snapping aligns tile edges/centre to other tiles and the board centre + edges
🔧Technical Details
Interaction, Colour Sampling and Export Internals
Pointer input is mapped from screen pixels into design units via the stage’s bounding rectangle, so hit-testing and handle tolerance stay correct at any display scale. A transparent SVG overlay (viewBox in design units, non-scaling strokes) renders the selection outline, eight resize handles, a rotate grip and the dashed snap guides, and captures pointer events; resize is computed in the tile’s local, un-rotated frame with the opposite edge/corner fixed in world space (correct even for rotated tiles), and image corners or Shift lock the aspect ratio. Colour sampling draws a downscaled copy of the selected image (≈48–64 px) to a detached off-screen canvas, reads the pixels, skips transparent ones, buckets the rest at 4 bits per channel, averages and orders the buckets by population, de-duplicates perceptually-close colours, and adds the dominant one or the top six as hex-labelled swatch tiles. PNG export renders the board to an off-screen canvas at a chosen width (1600 / 2400 / 3200 px) and calls canvas.toBlob. Because uploaded photos are read into local data URLs the canvas is never tainted, so download, clipboard copy, colour sampling and Save/Load all work offline.
Screen→design pointer mapping via getBoundingClientRect keeps hit-tests accurate
SVG overlay draws the selection box, eight handles, rotate grip and snap guides
Images come from local data URLs, so the canvas never taints — everything works offline
📋Use Cases
When to Reach for This
Use it to pull together a look fast, privately, without an account or a watermark: a brand direction board (logo space, palette, type), an interior materials-and-tones board, a fashion look/silhouette board, a wedding colour-and-detail board, a product/UI design-system board, or a travel destination board. Start from the matching template, upload your own reference photos into the empty frames, sample a palette from the strongest image, add a couple of text notes, then auto-arrange or hand-place the tiles and export a PNG to drop into a deck, brief or client email — or Save it in your browser to keep iterating. It suits designers, brand and interior stylists, photographers, planners, product teams, students and anyone assembling a private inspiration board from their own images.
Great for brand, interior, fashion, wedding, web/UI and travel boards
Six tuned templates give a fast, fully-editable starting point
No account, subscription or watermark; works offline once cached
Sample a palette from your own photos and drop hex-labelled swatches on the board
Best for a single board, not an infinite multi-board canvas with connectors
⚠️Limitations
Honest Limitations
This is a focused, private single-board editor, not a cloud design suite. There is deliberately NO built-in stock-photo library — real photography would mean fetching from a third-party server and would break the privacy promise — so you bring your own images (templates ship empty frames plus a palette and notes). Exports are a fixed-resolution raster PNG (not vector or PDF) in screen RGB. The colour sampler uses fast bucket quantisation on a downscaled copy of the image: it is a quick approximation of the prominent colours, not a designer’s hand-picked or perceptually-clustered (median-cut / k-means) palette, so nudge the swatches to taste. Canvas text renders with the fonts installed on the viewing device (portable system stacks) and metrics can vary a hair between browsers. Save/Load keeps a single board in localStorage, whose quota is limited (often ~5 MB), so a board with several large photos may be too big to save — export the PNG instead. There is no multi-board/infinite canvas, no arrows or connectors, and no vector pen.
No external stock imagery by design — bring your own photos (privacy over convenience)
Raster PNG only, screen RGB — not vector, PDF or CMYK
Colour sampler is fast bucket quantisation, an approximation — refine swatches by hand
Save/Load uses localStorage (~5 MB) — large-photo boards may not fit; export instead
Single-board editor — no infinite canvas, connectors or vector drawing tools
🔒Privacy & Security
Private by Design
Everything happens on your device. Each tile is a small object of numbers and text held in the page; the engine draws the board on an in-browser HTML5 canvas, and any photo you add is decoded into a local data URL and composited on-device — it is never uploaded and never transmitted. Colour sampling reads the image’s pixels on a detached off-screen canvas locally. PNG export renders the same scene to a canvas and saves it with canvas.toBlob, and Save/Load stores the whole board (images embedded as data URLs) only in this browser’s localStorage. There is no server and no CDN in the editing or export path; the only optional network use is consent-gated ads. The tool works offline once cached, keeps no accounts and sets no tracking; close the tab and anything you did not save or export is gone.
Tiles are local objects; the board is drawn on an in-page canvas
Uploaded images are read locally as data URLs and never leave the device
Colour sampling and PNG export are local canvas operations — no upload, server or CDN
Save/Load is browser localStorage only; works offline once cached
No accounts, no tracking; unsaved, unexported work is discarded on tab close
Ways to make a mood board
Approach
How it works
Trade-off
Used here
This client-side maker
Compose image / swatch / text / shape tiles on an in-browser canvas; sample colours locally; export PNG
Private + free + no watermark; you bring your own images, raster PNG
Yes
Cloud board (e.g. Milanote / popular design apps)
Drag images, stock assets and notes on a hosted canvas, exported from their servers
Huge asset library and sharing, but uploads your images and may watermark or paywall
No
Pinterest board
Pin images found on the web into a shared online board
Great for discovery, but public/social and not a composed, exportable artwork
No
Slides / word processor
Drop images into a slide or document and arrange by hand
Familiar, but weak freeform control, no colour sampling and clumsy layout
No
All editing, colour sampling and export here run in the browser; images are never uploaded. As of July 2026.