Celtic Knots

The form below can be used to generate random Celtic knots. Simply choose the various settings and press the 'Render' button to create the knot (or press it again for a new knot). For details of the parameters, see the information below the form.



Grid size Tile size
Width: Height: Width: Height:
Rope style Rope gaps
Thickness: Border: Horizontal: Vertical:
Other gubbins  
Orientation: Weirdness: Symmetrical: Guides:


Celtic Knot

Knot Generating Details

The knot is generated using the neat technique described by Andy Sloss in his book "How to Draw Celtic Knotwork - A Practical Handbook". Instead of using pre-set tiles though, the knot is generated dynamically using Bézier curves.

You can change the following parameters to alter the knot.

  • Grid size: the number of tiles high and wide for the knot.
  • Tile size: the size of each tile in pixels.
  • Rope style: the thickness and border size for the rope.
  • Rope gaps: the distance in pixels between the edge of each tile and the rope.
  • Orientation: Whether the knot runs horizontally or vertically.
  • Weirdness: A value between 0.0 and 1.0 that determines the proportion of non-crossing tiles. Choose 0.0 for a traditional Celtic knot; the closer to 1.0 the less traditional the knot will be.
  • Symmetrical: Select this for a knot with 180° rotational symmetry.
  • Guides: Select this to turn on rendering of grid lines and the Bézier control lines. This is primarily for debug purposes!

The knot is actually generated server-side using the LibGD rendering library. As such, input validation for the parameters also happens server side, so if you choose crazy values these may get clamped to within range for the final render.

If you'd like to play around more with Celtic knots, you can also download a standalone application for Windows or Linux that will also render 3D Celtic knots.