Pixel Art Resizer
Scale pixel art up or down with nearest-neighbour sampling, so edges stay hard and no colour is invented. Free, no sign-up, and every pixel stays in your browser.
Nothing is uploaded — the image is decoded and resized inside your browser.
How to resize pixel art without blurring it
Four steps, and one setting that does most of the work.
- 1Load your spriteDrag a PNG, WebP, GIF or JPEG onto the drop area, pick a file, or paste an image straight from the clipboard.
- 2Check whether it is already upscaledThe tool measures the size of the uniform blocks in the image. If it reports 8× upscaled, the art is really an eighth of what the file says — scale from the native size instead of stacking a second upscale on top.
- 3Pick a whole scale factor2×, 3×, 4× or 8×, or type your own. Whole numbers give every source pixel the same size in the output; a fractional factor makes some pixels wider than others.
- 4Download the PNGThe result is a lossless PNG at the exact size shown, with transparency preserved.
Why nearest neighbour, and when not to use it
Every image resize has to decide what colour each new pixel should be. Bilinear and bicubic resampling — the defaults in almost every image editor — average the surrounding source pixels. That is exactly right for a photograph, where the underlying subject really is continuous and the pixels are just samples of it.
Pixel art is not a sample of anything. Each pixel was placed deliberately, and the palette is usually a handful of chosen colours. Averaging invents colours that were never in the palette and turns a one-pixel outline into a three-pixel gradient. Nearest neighbour instead copies the closest source pixel unchanged, so the output uses the same palette and the edges stay where the artist put them.
The tool keeps a smooth option for the case where you have a photo or a rendered sprite that genuinely benefits from it — but it is off by default, because for pixel art it is the wrong answer.
Whole factors and why 1.5× looks wrong
At 3× every source pixel becomes a 3×3 block. At 1.5× it cannot: 1.5 pixels is not a thing, so the resampler alternates — one source pixel becomes a 2×2 block, the next becomes 1×1. Nothing is blurred, yet the sprite looks subtly wrong, as if the art had been drawn on uneven graph paper.
The tool flags this the moment your target size is not a whole multiple of the source. If you need an in-between size — fitting a sprite to a fixed UI slot, say — scale to the nearest whole factor and centre the result, rather than accepting the uneven one.
Undoing an upscale
A recurring problem with downloaded assets: the sprite is a 512×512 PNG, but the art inside it is 64×64 blown up 8×. Importing that into an engine wastes texture memory, and any further scaling compounds the block size.
To recover the original, the tool looks at the runs of identical pixels across every row and column. In a clean upscale, every run length is a multiple of the scale factor, so the greatest common divisor of all of them is the factor. A single stray pixel — an anti-aliased edge, a JPEG artefact, one manual edit — drops that divisor to 1, which is the honest answer: the image is not a clean upscale and dividing it down would destroy detail.
When it does find a factor, each output pixel takes the most common colour of its block rather than one sampled pixel. That matters when the image passed through a smoothing filter at some point: sampling a single pixel might land on an interpolated edge, while the majority vote cannot.
When you need this
Store and marketing shots
Engines render sprites at whatever scale you like, but a Steam capsule or an itch.io thumbnail needs a real file. Export at 4× or 8× so the art reads at a glance without turning to mush.
Mixed-resolution assets
An asset pack drawn at 32×32 next to one drawn at 16×16 will never sit right. Bring the smaller one up by a whole factor so both share a pixel size.
Reclaiming a bloated asset
A 2048×2048 PNG holding 256×256 of actual art costs texture memory for nothing. Restore it to native resolution and let the engine do the scaling.
Icons and UI
Favicons, cursors and inventory icons need exact pixel dimensions. Set the target size directly and keep the aspect ratio locked.
Supported formats
Input: PNG, WebP, GIF and JPEG — anything your browser can decode. PNG and WebP carry an alpha channel, so transparency survives the round trip. A JPEG source is already lossy: the compression artefacts around hard edges get scaled up along with the art.
Output: a lossless PNG at the exact target dimensions, with the alpha channel intact. The file name follows the source, with the new dimensions appended.
Keeping it crisp in your engine
Exporting at the right size is half the job — the importer can still blur it.
Godot
In the import dock set Filter to Nearest, then reimport. For project-wide defaults, turn off rendering/textures/canvas_textures/default_texture_filter smoothing in Project Settings.
Unity
Texture Type Sprite (2D and UI), Filter Mode Point (no filter), Compression None, and set Pixels Per Unit to match your art's pixel size.
Phaser / web
Add pixelArt: true to the game config, and use image-rendering: pixelated in CSS for any sprite shown as a plain <img>.
Frequently asked questions
How do I resize pixel art without it getting blurry?
Resize with nearest-neighbour sampling instead of the default smooth filter, and scale by a whole number. Nearest neighbour copies each source pixel into a block of identical pixels, so no new colours are invented and every edge stays hard. This tool uses it by default.
Should I scale by 2x, 3x or 4x?
Any whole number works; the number itself matters less than it being whole. 2x and 4x are the usual choices because they also land on power-of-two texture sizes. Avoid 1.5x or 2.3x: at a fractional scale some source pixels become two output pixels wide and others three, so the art reads as unevenly stretched even though nothing is blurred.
Can I make pixel art smaller?
Yes, but understand what happens. Shrinking throws pixels away, and once detail is gone scaling back up will not bring it back. Downscaling is only lossless when you are undoing a previous upscale — which is what the “back to native resolution” mode is for.
My sprite was saved at 512x512 but the art is really 64x64. Can I get the original back?
Usually yes. The tool checks whether the image is built from uniform square blocks and reports the factor it finds — here, 8x. Switch to “back to native resolution” and it divides the image down by that factor, taking the most common colour in each block, which recovers the original pixels exactly when the upscale was clean.
Why does my image get blurry when I resize it in Photoshop or Paint?
Those tools default to bicubic or bilinear resampling, which averages neighbouring pixels to produce smooth gradients. That is correct for photographs and wrong for pixel art, where every pixel is a deliberate choice. In Photoshop, set Image Size → Resample to “Nearest Neighbor (hard edges)”.
Are my images uploaded to a server?
No. The image is decoded and resized with the Canvas API inside your browser. Nothing leaves your machine, and the tool keeps working offline once the page has loaded.
What format should I export pixel art in?
PNG. It is lossless and carries an alpha channel, so transparent backgrounds survive. Never save pixel art as JPEG — the compression smears colour across hard edges and adds ringing artefacts around every outline.
Related guides
How to Resize Pixel Art Without Blurring
Nearest neighbour, whole scale factors, and the import settings that undo your work.
How to Import a Sprite Sheet into Godot
Slice it with AnimatedSprite2D, kill the blur, and know when Godot's slicer gives up.
How to Import a Sprite Sheet into Unity
Sprite Mode, the Sprite Editor's three slice modes, and the import settings that quietly ruin pixel art.
How to Convert an Image to a Game Boy Palette
Four shades, the one setting that decides whether the picture still reads, and where extra colours creep back in.
How to Scale a UI Panel Without Stretching
Four numbers hold the corners still — and the default stretch mode undoes them in all three engines.
Related tools
Sprite Sheet Cutter
LiveSplit a sprite sheet into individual PNG frames by grid, auto-detection or an Aseprite JSON, then download them as a ZIP.
Sprite Sheet Generator
LivePack individual frames into one sprite sheet atlas, with a TexturePacker JSON manifest.
Sprite Animation Previewer
LivePlay a sprite sheet at any FPS — or with Aseprite's own per-frame timing and tags — and export a GIF.
Pixel Art Palette Converter
LiveRead an image's palette, reduce it to a fixed colour count, or remap the art onto a console palette — then export it.
Browse everything on the game asset tools page.