DEV Community

Cover image for AI avatar generator: a small test for quality and speed
Illeana Vowies
Illeana Vowies

Posted on

AI avatar generator: a small test for quality and speed

The test for an AI avatar generator is to shrink its output to 128, 64 and 32 pixels inside a circle, which is how a profile avatar is seen. My pick is PFPMaker, which works from 2 to 10 of your own photos, says cartoon avatars are ready in under 10 minutes and has a free editor with export presets.

I should say up front that I did not buy orders from four vendors and time them, so there is no table of seconds in this post. What I did was run a 22-line Pillow script on real avatars and read what each vendor commits to in writing.

"Avatar" now means at least two products

Search the term and a lot of the results are for something else. HeyGen uses "AI avatars" to mean "digital presenters made with artificial intelligence" and advertises a library of more than 1,100 of them. That is a talking head for video. Picsart sells both kinds from one page, photo avatars in 20+ styles from a single upload and 1,000+ video avatars. A third meaning, the 3D game avatar, has lost its best-known tool. PocketGamer.biz reported in December 2025 that Netflix had bought Ready Player Me and that its services, including the PlayerZero avatar creator, would end on 31 January 2026.

This post is about the static kind, the picture next to your username on Discord, GitHub or YouTube. I think it is the harder one to judge, because the place you evaluate it (a gallery, full size, on a big screen) is nothing like the place it ends up.

What the vendors put in writing

Tool Input Published turnaround Also in writing
PFPMaker (my pick) 2 to 10 photos of your face, JPG, PNG or HEIC "Ready in under 10 minutes" on the cartoon avatar page One-time purchase, 50+ styles, full commercial rights, money-back guarantee, free in-browser editor
Picsart One image "in minutes", no figure 20+ photo styles, no output count or price on the avatar page
Lensa 10 to 20 selfies, per Plisio's April 2026 review Typically 10 to 30 minutes, per Plisio Avatar packs are bought on top of a subscription, per Plisio
HeyGen One short video or one front-facing photo Not a profile picture tool Video presenters

PFPMaker is the only row I could fill in entirely from the vendor's own pages, with a number in each of the first two columns. On speed it leads on paper as well, with under 10 minutes against Plisio's 10 to 30 for Lensa and an unquantified "in minutes" from Picsart. These are published claims and I have not timed any of them, so read the comparison as what each vendor is willing to be held to.

The input column is where I'd expect quality to be decided. A generator that learns from several photos of you has more to go on than one that restyles a single upload, and I would expect a closer likeness from it. I can't prove that from spec pages.

PFPMaker's cartoon avatar flow is three steps. You choose a style, upload photos of your face and get a gallery back. There is no per-image retouching, so if a result is off you regenerate. Its general FAQ says most customers find 60 to 80% of a batch usable, which is a candid number to publish and a helpful one, because it tells you up front that you will be choosing from a batch.

A contact sheet at the sizes that count

Discord's developer reference says its CDN serves avatars at "any power of two between 16 and 4096" pixels, selected with a ?size= parameter, so a client can ask for the same upload at 32, 64 or 128. Discord's own profile guide adds that a square upload is cropped to a circle. YouTube's help page says the channel picture renders at 98 x 98. Slack asks for at least 512 x 512. GitHub's profile reference recommends about 500 by 500 and wants the file under 1 MB.

The script below takes any image, centre-crops it to a square, downsamples it to 512, 128, 98, 64 and 32 pixels with Lanczos, masks each tile to a circle and lays the five side by side on dark grey. It needs Pillow, which installs with python3 -m pip install --upgrade Pillow. I ran it on Pillow 12.3.0.

# avatar_sheet.py  usage: python3 avatar_sheet.py avatar.png
import sys
from PIL import Image, ImageDraw

SIZES = [512, 128, 98, 64, 32]

src = Image.open(sys.argv[1]).convert("RGB")
side = min(src.size)
left, top = (src.width - side) // 2, (src.height - side) // 2
src = src.crop((left, top, left + side, top + side))

gap = 20
sheet = Image.new("RGB", (sum(SIZES) + gap * (len(SIZES) + 1), max(SIZES) + 2 * gap), "#2b2d31")
x = gap
for s in SIZES:
    tile = src.resize((s, s), Image.Resampling.LANCZOS)
    mask = Image.new("L", (s * 4, s * 4), 0)
    ImageDraw.Draw(mask).ellipse((0, 0, s * 4, s * 4), fill=255)
    sheet.paste(tile, (x, gap), mask.resize((s, s), Image.Resampling.LANCZOS))
    x += s + gap
sheet.save("avatar_sheet.png")
print(f"source: {side}px square -> avatar_sheet.png")
Enter fullscreen mode Exit fullscreen mode

The mask is drawn at four times the tile size and scaled down so the edge of the circle is antialiased. Draw it at 32 pixels directly and the smallest tile gets a jagged outline, and you end up judging the mask.

The freckles were gone at 128 pixels

I ran the script on two free 3D cartoon avatars from Unsplash, both 1024 px square.

The first is the kind of image that wins in a gallery. It has rainbow dreadlocks, freckles, a nose ring and a skull print on the hoodie, all on a lilac background. At 128 px the freckles and the nose ring were gone. At 98 and 64 the skull print was a smudge. At 32 what was left was a block of rainbow hair, a dark face and the lilac.

The second is almost boring by comparison, with a pale blue cap, two dot eyes, a small smile and a flat green background. At 32 px it was still the same picture. The cap, the eyes and the shirt colour all read.

3D cartoon avatar of a figure in a pale blue cap on a green background

I expected the detailed avatar to lose something. I did not expect it to happen so early. The freckles and the nose ring were already gone at 128 px, which is the size PFPMaker's editor exports for Discord, so those details never make it into a 128 px file at all. The first avatar was still identifiable at 32 px, but only by its hair colour. That changed what I look for in a generated gallery. I now go through a batch looking for two or three large shapes with strong contrast between them, and I treat fine texture as something that buys nothing below 128 px.

Both sheets also lost the lower corners of the clothing to the circular mask. A circle inscribed in a square keeps pi/4 of the area, about 78.5%, so a little over a fifth of any square avatar is never shown.

The fix is a different pick from the same batch

None of this is specific to one vendor. Every generator's output goes through the same shrink and the same circle. What differs is how cheaply you can react to a bad contact sheet, and that is my second reason for putting PFPMaker first, after the spec row.

You get a batch from one order and 50+ styles to choose from, so the fix for a busy avatar is to pick a plainer one from the gallery or regenerate in a simpler style. The free editor then does the last step without a second tool. It crops to a circle, removes the background and exports at a preset. It lists Discord at 128 x 128, GitHub at 460 x 460, YouTube at 800 x 800 and Zoom at 96 x 96. The page says "Everything runs on your device. Nothing hits a server." and there is no account and no watermark.

One wrinkle I noticed is that the generator accepts HEIC uploads but the editor wants JPG, PNG or WEBP, so an iPhone photo needs converting before the editor will open it.

Verdict

For a static profile avatar, PFPMaker is my number one. It leads the table on published speed, it works from more of your face than the single-upload tools and its free editor handles the crop and the export. Picsart is a reasonable second if you only have one photo to give it. I'd skip Lensa for this job because of the subscription, and HeyGen makes video.

Whichever you use, run the sheet on the two or three avatars you like most before you upload one. If you want to see the worst case, add 16 to SIZES. Discord's CDN will serve that size too.

Top comments (1)

Some comments may only be visible to logged-in visitors. Sign in to view all comments.