Skip to main content
L
Loopaloo
Buy Us a Coffee
All ToolsImage ProcessingAudio ProcessingVideo ProcessingDocument & TextPDF ToolsCSV & Data AnalysisConverters & EncodersWeb ToolsMath & ScienceGames
Guides & BlogAboutContact
Buy Us a Coffee
L
Loopaloo

Free online tools for developers, designers, and content creators. Your files are processed in your browser and are never uploaded - no accounts required. A few network utilities (like What's My IP and Currency Converter) call public APIs to do their job and say so on their pages.

support@loopaloo.com

Tool Categories

  • Image Tools
  • Audio Tools
  • Video Tools
  • Document & Text
  • PDF Tools
  • CSV & Data
  • Converters
  • Web Tools
  • Math & Science
  • Games

Company

  • About Us
  • Contact
  • Blog
  • FAQ

Legal

  • Privacy Policy
  • Terms of Service
  • Disclaimer

Support

Buy Us a Coffee

© 2026 Loopaloo. All rights reserved. Built with privacy in mind.

Privacy|Terms|Disclaimer
  1. Home
  2. Image Processing
  3. Texture Generator
Add to favorites

Texture Generator

Twelve procedural patterns that tile exactly, verified live with a measured wrap error and a 3 by 3 repeat view. Perlin, fractal, ridged, Voronoi, marble, wood and geometric grids.

Edits stay in your browserMore image processingJump to full guide

Initializing in your browser…

You might also like

Image Background Remover

Remove backgrounds from images with smart edge detection. Supports color picker, corner detection, and preset colors with adjustable tolerance.

Image to Icon Generator

Generate favicons and app icons in all required sizes. Supports iOS, Android, Windows, and web platforms with one-click preset generation.

Sprite Sheet Generator

Create sprite sheets from multiple images with JSON metadata, or slice existing sprite sheets into individual frames. Perfect for game development.

Texture Generator: a worked example

You need a seamless tileable noise texture for a CSS background that does not show its repetition.

Input

Fractal noise · 4 features · warp 0.3 · 512x512 PNG
What Texture Generator produces

Output

texture-fbm-1234-512.png, wrap error 6.7e-16, no seam in the 3x3 repeat

Tiling here is structural: the Perlin lattice wraps modulo an integer period and each fractal octave doubles both frequency and period, so every layer meets on the same boundary. Sampling one tile over returns the identical value, which the tool measures and shows you. The 3 by 3 preview is where a seam would be obvious, and it is the view the texture will actually be used in.

About the Texture Generator

Generate procedural textures that genuinely tile. Twelve patterns from Perlin and fractal noise to Voronoi, marble, wood and geometric grids, all built from functions that wrap exactly across the tile. A live 3 by 3 repeat and a measured wrap error show you the seam really is gone.

How to use

  1. 1Pick a pattern, or start from one of the eight presets
  2. 2Set how many features run across the tile, and adjust octaves, warp and contrast
  3. 3Build a colour gradient with as many stops as you need
  4. 4Check the 3 by 3 repeat view and the wrap error readout
  5. 5Export at 256, 512, 1024 or 2048 pixels

Where this helps

  • Website backgrounds

    Produce a subtle repeating background that covers any viewport without showing where the tile ends.

  • Game and 3D textures

    Generate seamless diffuse, roughness or height maps that join cleanly across adjacent surfaces.

  • Print and pattern design

    Build a repeating motif for wrapping paper, fabric or packaging where the repeat must be invisible.

  • Placeholder and mood art

    Make quick abstract imagery for mockups without hunting for stock images or worrying about licensing.

Key features

  • Every pattern tiles exactly, verified at around 1e-15 wrap error
  • Live 3 by 3 repeat view, so you can see the seam is gone
  • Measured wrap error shown in the interface
  • Twelve patterns including ridged multifractal, marble and wood
  • Periodic Perlin lattice and toroidal Voronoi, not a cosine trick
  • Whole-number feature counts, so nothing is clipped at the edge
  • Domain warping that stays seamless
  • Fisher-Yates seeded permutation, so nearby seeds differ properly
  • Gradient editor with up to six positioned stops
  • Colouring separated from the noise, so gradient edits are instant
  • Export at 256 to 2048 pixels, regenerated at full resolution
  • Eight presets and a shareable link carrying the whole configuration

Tips & best practices

  • Watch the wrap error readout. Anything at ten to the minus nine or below means the texture is mathematically seamless, not just approximately so.
  • Use the 3 by 3 repeat view while you work. A seam that is invisible on a single tile is obvious the moment the texture repeats, which is how it will actually be used.
  • Feature count is whole numbers on purpose. Half a dot at the edge of a tile is the classic cause of a visible grid when the texture repeats.
  • Add domain warp to break up the regularity of fractal noise. It displaces the sampling position with a second periodic field, so it stays seamless while looking far more organic.
  • Export at the size you will actually use. The field is regenerated at the export resolution, so a 2048 tile has genuine fine detail rather than an upscaled 384 preview.
  • Ridged noise is the one to reach for when you want mountains or cracked surfaces; fractal noise gives clouds and smoke.

Examples

  • A CSS background that never shows its grid

    Pick fractal noise at 4 features with a low contrast gradient, check the 3 by 3 repeat shows no seam, and export 512 pixels. Set it as a CSS background-repeat and it covers any size without the tell-tale grid of a badly tiled texture.

  • A game terrain height map

    Choose ridged noise at 6 octaves, turn contrast up a little and export 1024 in greyscale by setting both gradient stops to black and white. Because it tiles exactly, adjacent terrain chunks join without a ridge along the seam.

  • Stone for a 3D material

    Load the Stone preset, which is Voronoi at 8 cells with a warm grey gradient. Voronoi feature points wrap on a torus, so the cells continue across the tile edge instead of being clipped.

How it works

Seamless tiling is this tool's headline claim, so it is now structural rather than a checkbox. Every pattern is built from functions that are periodic across the tile: the Perlin gradient lattice wraps modulo an integer period, each fractal octave doubles both its frequency and its period so all layers meet on the same boundary, Voronoi feature points live on a wrapping cell grid, and the geometric patterns are locked to whole numbers of features. The result is that sampling one tile to the right or one tile down returns the identical value, measured in the browser at around ten to the minus fifteen, which is floating point noise. The panel shows that wrap error live, next to a 3 by 3 repeat of the current texture, so you can see for yourself that the edges meet.

That matters because the previous version did not tile. Its seamless branch handled Perlin only and fell through to the ordinary path for everything else, so the toggle did nothing at all for Simplex, Voronoi, fractal noise, dots, lines, grid and waves. Even for Perlin it averaged four samples taken at the cosine and sine of the coordinate, which is periodic but mirror symmetric about the centre of the tile, so the texture visibly folded into quadrants. Two patterns needed rethinking to tile honestly: a checkerboard only meets itself with an even number of squares, so odd counts are rounded up, and wood grain cannot be concentric rings, because distance from a point is not periodic, so it is built from a bent, noise-roughened grain that completes whole cycles across the tile.

Twelve patterns are available: Perlin and Simplex smooth noise, layered fractal noise, ridged multifractal for mountainous creases, cellular Voronoi, marble veins, wood grain, and the geometric dots, lines, grid, checker and interfering waves. Shaping controls cover the number of features across the tile (whole numbers only, because a fractional count would cut the last feature in half at the edge, which is precisely what breaks tiling), octaves and persistence for the fractal patterns, a domain warp that displaces the sampling position with a second periodic noise field, a contrast control that pushes toward hard edges without ever clipping, invert, and a seed. The seed drives a Fisher-Yates shuffle of the permutation table, so adjacent seeds give genuinely different textures rather than near-duplicates.

Colour is a multi-stop gradient of up to six stops, each with its own position, mapped through a 256 entry lookup table. Crucially the noise field and the colouring are separate stages: the field is computed once and recoloured on demand, so dragging a gradient stop is instant even at high feature counts, where the previous build re-ran the entire noise calculation for every colour change. Export renders at 256, 512, 1024 or 2048 pixels, regenerating the field at that size rather than scaling the preview up, so a large tile carries real detail and still meets itself at the edges. Eight presets cover clouds, marble, stone, mountains, wood grain, lava, blueprint and polka dots, and the whole configuration travels in the shareable link.

Frequently asked questions

Are the textures really seamless?

Yes, and you can check. Sampling one tile to the right or one tile down returns the identical value; the measured difference is around ten to the minus fifteen, which is floating point rounding. The interface shows that wrap error live and offers a 3 by 3 repeat view so you can see the edges meeting.

How is that different from the old version?

The old seamless option only did anything for Perlin, and for the other seven patterns the toggle had no effect at all. Even the Perlin path averaged samples taken at the cosine and sine of the coordinate, which is periodic but mirror symmetric, so the texture folded into visible quadrants. Tiling is now built into every pattern rather than applied afterwards.

Why can I only set whole numbers of features?

Because a fractional count cuts the last feature in half at the tile edge, and when the tile repeats those halves do not line up. Locking the count to whole numbers is what lets dots, grids, checkers and cellular patterns meet themselves exactly.

Why does the checker jump by two when I change the feature count?

A checkerboard only meets itself across the seam when there is an even number of squares, so odd counts are rounded up to the next even one. With an odd count the square at the right edge and the square at the left edge would share a colour and the repeat would show a visible band.

What does domain warp do?

It displaces the position at which the pattern is sampled, using a second noise field, which turns regular-looking noise into something more organic and flowing. The displacing field is itself periodic, so warping never breaks the tiling.

Does exporting at 2048 just scale up the preview?

No. The noise field is recomputed at the export resolution, so a large tile contains genuine fine detail rather than an interpolated version of the 384 pixel preview, and it still tiles exactly.

Is anything uploaded?

No. The textures are generated by JavaScript in your browser and drawn to a canvas. Nothing is sent anywhere and nothing is downloaded except the PNG you export.

Private by design

Images are decoded, edited, and exported entirely inside this browser tab. No originals, exports, or metadata are uploaded.