GUIDES OPEN APP

Using AI pixel art sprites in Godot 4 (crisp, not blurry)

9 June 2026 · 5 min read · SpriteLab Guides

Godot is friendlier to pixel art than most engines, but the defaults still smear your sprites. Two settings fix almost everything; here's the full checklist for Godot 4, including animating from a sprite sheet.

Fix 1: nearest filtering (the blur)

Godot's default texture filter is linear, which blurs pixel art. Set the project-wide default:

  1. Project, then Project Settings.
  2. Rendering, then Textures.
  3. Set Canvas Textures > Default Texture Filter to Nearest.

That covers every 2D node in the project. To override per-node instead (or back the other way for one asset), every CanvasItem has CanvasItem > Texture > Filter in the Inspector; set it to Nearest there.

Fix 2: integer scaling (the shimmer)

For a low-res game presented on a big screen, configure the stretch settings so the pixel grid scales cleanly:

  1. Project Settings, then Display, then Window.
  2. Set Stretch > Mode to viewport (renders the game at your design resolution and scales the result; the strictest pixel-perfect option).
  3. Set Stretch > Scale Mode to integer so the upscale is always a whole multiple. No half-pixels, no shimmer during movement.

If viewport stretch feels too rigid for your game (UI wants to be sharp at native resolution, say), canvas_items mode with nearest filtering is the common compromise; you lose strict grid alignment but keep crisp sprites.

Animating from a sprite sheet

The easiest path is AnimatedSprite2D:

  1. Add an AnimatedSprite2D node and create a new SpriteFrames resource on it.
  2. Open the SpriteFrames editor (bottom panel) and click the grid icon: Add Frames from Sprite Sheet.
  3. Pick your sheet PNG, set the horizontal/vertical frame counts (a SpriteLab animation sheet is a uniform horizontal strip, so vertical = 1), and select all frames.
  4. Set the animation's FPS (8 to 12 suits most pixel art) and autoplay if you want it looping on load.

Alternative for simple cases: a plain Sprite2D with Hframes set to the frame count, animating the frame property from an AnimationPlayer. More manual, but handy when an animation needs to sync with other tracks (sounds, hitboxes) in one AnimationPlayer timeline.

The usual suspects

Two-line summary: Default Texture Filter to Nearest, stretch mode viewport with integer scale. Everything else is detail.

Source resolution

Same advice as every engine: import sprites at native size (a 32px character should be a 32px PNG) and let the stretch system do the scaling. Pre-upscaled art breaks integer scaling math and bloats memory for nothing. SpriteLab exports at true native resolution, so files drop straight into res:// and just work; if your art source only does big images, see AI pixel art vs true pixel art for how to downscale without ruining it.

Need the sprites themselves?

Generate clean, native-resolution sprites with transparent backgrounds, ready for these settings.

TRY SPRITELAB FREE 25 free credits + 5 daily. No card needed.

More reading

PIXEL ART IN UNITY

The Unity equivalent: Point filtering, no compression, slicing and PPU.

SPRITE SHEETS WITH AI

Animation strips, multi-sprite packs and rotations without the usual mess.

PIXEL ART PALETTES

How many colours, which classic palettes to steal, and when dithering helps.