Telegram sticker requirements
Size, format and limits · last checked August 2026
Telegram rejects stickers that miss the spec, and the error messages are not always specific about which rule you broke. These are the actual numbers, taken from Telegram's own documentation, plus a way to check a file before you waste a round trip.
Video stickers
| Dimensions | One side must be exactly 512 px. The other side can be 512 px or less. |
|---|---|
| Format | .WEBM container, VP9 codec |
| File size | 256 KB maximum |
| Duration | 3 seconds maximum |
| Frame rate | Up to 30 FPS |
| Audio | None. The file must have no audio stream at all |
| Looping | Should be looped |
Static stickers
| Dimensions | One side must be exactly 512 px. The other side can be 512 px or less. |
|---|---|
| Format | .PNG or .WEBP |
| Design | Telegram recommends a transparent background, a white stroke and a black shadow |
The four rules people actually break
"Exactly 512" means exactly
A 500×500 sticker is invalid. So is 512×600. One dimension has to land on 512 precisely, and the other has to be 512 or smaller. Scaling to "fit inside 512×512" is the safe way to think about it, because it puts the longest side on 512 and leaves the shorter one below.
256 KB is small
That is the whole file, for up to three seconds of video. It is the constraint that decides your quality, not your resolution. Three seconds inside 256 KB works out to roughly 700 kbit/s for everything including container overhead, so a video bitrate around 400 to 500 kbit/s leaves comfortable headroom.
Audio has to be stripped, not silenced
A silent audio track is still an audio track, and it will still be rejected. The stream has to be absent from the file.
3 seconds is a hard ceiling
Not "about three seconds". If your trim lands at 3.05 s it can fail. Cut with a margin.
Checking a file before you upload it
If you have ffmpeg installed, ffprobe answers every
question above at once:
ffprobe -v error -select_streams v:0 \
-show_entries stream=codec_name,width,height,r_frame_rate \
-show_entries format=duration,size \
-of default=noprint_wrappers=1 sticker.webm
You want to see codec_name=vp9, one of width or height equal to 512, a duration at or
under 3.0, and a size at or under 262144 bytes. To confirm there is no audio, this should print nothing
at all:
ffprobe -v error -select_streams a -show_entries stream=index -of csv=p=0 sticker.webm
Making one from a video? The companion guide has a tested ffmpeg command that produces a spec-valid sticker in one pass, and the shorter route if you would rather not touch a terminal: How to make a Telegram video sticker.
Requirements above are from Telegram's official sticker documentation. Telegram occasionally adjusts these, so this page notes when it was last checked.