Reduces an image's colors to those in a specific palette.

Does not directly consider other restrictions of said hardware. Say, what we now consider low resolution is a lot more pixels than the entire screen had, and most early home computers could not do anything remotely like full screen sprites, so dithering was most useful in few late-home-computer, early-PC years.

Actual sprite design was -- and thanks to retrogaming still is -- an artform.
Still, the aesthetic works.

The font used here is C64 TrueType

Image file
Scale down ...if width or height larger than pixels.
(lower imitates the blocky resolutions of the time)
Palette name:
Dither

Dithering is quite noisy at lower resolutions, unnecessarily so for already-crisp images. At higher resolutions, dithering is less noticeable and does a better job of color approximation, at least to human eyes.

When not dithering you can optionally denoise, which makes smooth areas look less messy (and more banded), while preserving edges.
Scale up:

A nearest-neighbour scale-up making chunkier 'pixels' of this size, useful to keep them looking square-pixely in contexts that do smooth rescales (will look the same in this webpage only because on this page I ask it to do nearest-neighbor rescale via CSS)