Premium apps

SVG Repeat Pattern Generator

Create a seamless, editable SVG pattern from simple shapes.

More options

Try an example: Ink dots on paper · Translucent diamonds · Horizontal stripes · Checkerboard

More about this tool

How it works

Make repeating dots, squares, diamonds, stripes or checkerboards with adjustable spacing, color and opacity. Preview and download a self-contained SVG with an optional transparent background.

  • A square SVG pattern tile uses user-space units, so its spacing is measured in the canvas coordinate system.
  • A centered dot, square, diamond or horizontal or vertical stripe repeats across the canvas. Mark size is bounded by tile spacing; for stripes it is the band thickness. A checkerboard uses two squares in diagonally opposite half-tiles, and its mark size cannot exceed half the spacing.
  • An optional solid background lies below the pattern; foreground opacity applies to the marks. The SVG embeds no external assets.
  • For a reliably repeatable canvas swatch, make both dimensions multiples of the tile spacing.

Sources

Part of Lumina

  • Lumina Photo editor & image toolkit

    Bring out what you saw. A free photo studio, right in your browser.

    Open Lumina

Related tools

How to create a repeating SVG pattern

Generate a reusable dot, square, diamond, stripe or checkerboard pattern with optional transparency.

What it is for

Make a repeating vector pattern for a background, illustration or design mockup. Choose dots, squares, diamonds, horizontal or vertical stripes, or checkerboard, set the tile spacing and mark size, and download a self-contained SVG. The canvas dimensions determine the visible output; the same tile repeats regardless of canvas size.

Worked example

Choose Dots, a width of 672 px, height of 480 px, spacing of 48 px and mark size of 16 px. Enter #264F59 for the marks and #F5EEDD for the background, with mark opacity set to 1. The tool answers "Created a repeating dot pattern with 48 px spacing." The metrics show a tile spacing of 48 px, a mark size of 16 px and a 672 × 480 px canvas, and the result reports a tile origin of (16, 16): the 16 px dot is centered in its 48 px tile. Because 672 and 480 are both whole multiples of 48 (14 × 10 tiles), there is no warning, and the downloaded SVG repeats cleanly as a background tile.

Now try Vertical stripes on a 640 × 480 px canvas with 64 px spacing, a 24 px band, #8A3B2E marks on #FFF8EC and opacity 0.8. The origin becomes (20, 0), because a vertical band starts (64 − 24) / 2 = 20 px from the tile edge and runs the full tile height. This time the tool warns that the 640 × 480 px canvas is not a whole multiple of the 64 px spacing: 480 / 64 is 7.5, so the last row of tiles is cut in half.

How to read the result

The output includes SVG markup, the tile size, the mark size and the mark origin: the top-left corner of the motif's bounding box within the tile (for a checkerboard, the first of its two squares). The tile uses SVG user-space units, so spacing is measured in canvas pixels. The file contains one pattern definition and a rectangle filled by it. A warning appears when the canvas is not a whole number of tiles.

Tips and common mistakes

  • Mark size cannot exceed spacing. At equal size, marks touch the edges of each tile.
  • For stripes, mark size controls band thickness and spacing controls the distance between consecutive bands. Each band crosses the tile edge to join its neighbors.
  • A checkerboard uses two equal squares in opposite quarters of a tile. Its mark size cannot exceed half the spacing; with even spacing, use exactly half for an edge-to-edge checkerboard, or a smaller size to leave gaps. Odd spacing cannot be halved into whole-pixel marks.
  • The canvas can crop a partial tile at its edge. To export a repeatable rectangular swatch, use dimensions that are exact multiples of spacing; the tool warns you otherwise.
  • Colors use six-digit HEX values. Only the background accepts none.
  • The file holds one motif in an SVG pattern definition, so editing it changes every repeat.
  • Some SVG importers do not support pattern fills; test the target application.

FAQ

Is the whole downloaded image a seamless tile?

The pattern repeats inside the SVG canvas, but the canvas can end partway through a tile. To use the entire downloaded image as a repeated rectangular swatch, choose both width and height as multiples of the spacing: with 40 px spacing, 400 × 240 px holds ten by six complete tiles, while a 410 px width ends ten pixels into another tile and shows a seam.

Can I place the pattern over an existing image?

Yes. Enter none for the background; unpainted areas stay transparent, and an opacity below 1 lets the design show through the marks too.

Does the tool upload my own images?

The generator accepts shape settings and colors; it does not take an image upload or contact a third-party pattern service. The generated SVG consists of shape geometry, validated colors, and a local reference to its pattern.

Guide last updated:

For scripts and AI agents

  • JSON API: POST https://luminarepeatpattern.usefulweb.app/api/v1/calculate (same calculation as this page)
  • Interface description: OpenAPI 3.1 · AI guide: llms.txt
  • MCP server (Streamable HTTP): https://luminarepeatpattern.usefulweb.app/mcp · tool name lumina_repeat_pattern
Example request
curl -s -X POST https://luminarepeatpattern.usefulweb.app/api/v1/calculate \
  -H 'content-type: application/json' \
  -d '{"width":672,"height":480,"spacing":48,"size":16,"shape":"dot","foreground":"#264F59","background":"#F5EEDD","opacity":1}'
Feedback · ideas & bug reports welcome