# Telegram Sticker Converter
Converter for Telegram stickers and animations into various formats.\
Supports **TGS**, **WEBP**, **WEBM**, with the ability to extract single
frames, frame sequences, or convert to video.
## Features
- Support for main Telegram sticker formats: `TGS`, `WEBP`, `WEBM`
- Conversion to static images, animations, and videos
- Flexible frame extraction: first, single, range, or all frames
- Resizing on transformation
- Easy to use as a Go library
## Requirements
- **Go** ≥ 1.24\
- **ffmpeg** ≥ 7.1.1 (for video/animations)
## Supported conversions
| Input | Output |
| -------- | ------------------------------------------------------------------------------------------------------------ |
| **TGS** | PNG (first, all, N-th, range)
JPEG (same)
WEBP (same)
Lottie JSON
GIF
WEBM
MP4 |
| **WEBP** | PNG
JPEG |
| **WEBM** | MP4
GIF
PNG (first, all, N-th, range)
JPEG (same)
WEBP (same) |
## Installation
``` bash
go get github.com/yazmeyaa/telegram_sticker_converter
```
## Usage examples
> General pattern: open input file, create output file, pass
> `TransformOptions`.
### Extract frame from TGS
``` go
conv := tgs.NewConverter()
r, _ := os.Open("./sticker.tgs")
defer r.Close()
w, _ := os.Create("./sticker.png")
defer w.Close()
opts := converter.TGSTransformOptions{
Format: converter.FormatPNG,
Frame: converter.FrameN,
FrameIndex: 10,
ResizeWidth: 1024,
ResizeHeight: 1024,
}
_ = conv.Transform(context.Background(), r, w, opts)
```
### Convert TGS → MP4
``` go
opts := converter.TGSTransformOptions{
Format: converter.FormatMP4,
ResizeWidth: 1024,
ResizeHeight: 1024,
}
_ = conv.Transform(ctx, r, w, opts)
```
### Convert TGS → ZIP with frames
``` go
opts := converter.TGSTransformOptions{
Format: converter.FormatPNG,
Frame: converter.FrameAll,
ResizeWidth: 1024,
ResizeHeight: 1024,
}
_ = conv.Transform(ctx, r, w, opts)
```
## License
GPLv3