Upload a photo, then drag to push pixels.

Or try an example

Brush size
Strength

Drag on the photo. The brush pushes pixels along the stroke. Photos wider than 1400 pixels are scaled down first.

Help Us Improve

—

(—)

Liquify a photo

Push pixels with a brush to liquify a photo, then download a PNG. Runs in your browser. Free, no sign-in.

What this liquify tool does

Drag on a photo to push pixels along the stroke. Brush size sets how wide the push is. Strength sets how far those pixels move. Wave, twirl, bulge, and stretch are on Image Distorter.

The brush

Each drag moves the pixels under the cursor.
  1. Push: Pixels follow the direction of the stroke, with a soft falloff at the edge of the brush.

  2. Brush size: A larger brush moves a wider patch of the photo.

  3. Reset: Reset puts the loaded photo back, before any strokes.

How to liquify a photo

Load a photo and drag.
  1. Load a photo

    Use an example or upload a PNG, JPEG, or WebP.

  2. Drag on the photo

    The stroke pushes pixels as you move. Short strokes make a small nudge.

  3. Download the PNG

    Save the result, or reset and start again.

Tips

How to keep the push readable.
  • 01

    Use a smaller brush on a face

    A tight brush moves an eye or a smile without dragging the whole portrait.

  • 02

    Lower the strength

    A lower strength makes several short strokes easier to control.

  • 03

    Use a warp for the whole frame

    A wave, twirl, or bulge across the whole photo is on Image Distorter.

When to use this page

Jobs this brush is built for.
  • A local nudge

    Push one part of a photo and leave the rest in place.

  • A playful portrait

    Stretch a smile or a feature with a short stroke.

  • A quick experiment

    Reset as often as you want, then download the version you keep.

What you get

A brush that edits the pixels in the page.
  1. No account: The photo stays in the page. There is no sign-in step.

  2. A full reset: Reset restores the photo from the moment it loaded.

  3. A PNG: The download is the photo after your strokes.

Technical details

How a stroke moves pixels.
Input
PNG, JPEG, or WebP. The working image is limited to 1400 pixels on the long edge.
Brush
Pixels inside the radius move along the drag. The shift fades to zero at the rim.
Sampling
Each moved pixel is sampled from the previous frame with bilinear interpolation.
Where it runs
In your browser.

Sources & References

Where the pixel reads come from.
  • “The CanvasRenderingContext2D method getImageData() of the Canvas 2D API returns an ImageData object representing the underlying pixel data for a specified portion of the canvas.”
    — MDN Web Docs — CanvasRenderingContext2D.getImageData()

    getImageData(): Each stroke reads the current pixels, shifts the ones inside the brush, and writes them back. developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/getImageData

  • “The Canvas API provides a means for drawing graphics via JavaScript and the HTML <canvas> element.”
    — MDN Web Docs — Canvas API

    Canvas API: The photo and the liquify result live on a canvas in the page. developer.mozilla.org/en-US/docs/Web/API/Canvas_API

Frequently Asked Questions

Quick answers about this tool—open a question to read more.