GitHub – danterolle/tilf
Tilf (Tiny Elf) is a simple yet powerful pixel art editor built with PySide6.
It’s designed for creating sprites, icons, and small 2D assets with essential tools, live preview, undo/redo, and export options.
There are several Pixel Art Editors that do the same things and even much more,
but many require an account registration or the insertion of an e-mail or have a certain business model.
I’m not interested in all that, my goal is to be able to create sprites freely, with (almost) zero dependencies,
zero setup time, zero installations:
Tilf starts and I begin to draw what I want.
It runs on Windows, MacOS and GNU/Linux.
Download the latest release from the releases page.
Windows 11 -> Download
MacOS 15.6 -> Download
GNU/Linux (ParrotOS 6.4) -> Download
I’m aware that the code quality isn’t great.
I didn’t prioritize it when writing this.
This project was something I put together during my spare time, and a lot of it could be written much better.
There’s definitely room for improvement, so I’m more than happy to accept PRs from anyone willing to contribute.
Because I mainly used it for learning and personal purposes.
Publish it as an Open Source project might be interesting for others as well.
- Drawing tools:
- Pencil
- Eraser
- Fill (bucket)
- Eyedropper
- Rectangle (stroke)
- Ellipse (stroke)
- Canvas:
- New image with custom dimensions
- Zoom 1–50x (mouse wheel or slider)
- Editable background color (alpha supported)
- Optional grid with customizable color
- Clear canvas
- Workflow:
- Undo/Redo with history up to 50 states
- Drag & drop images to open
- Real-time preview in a side dock (you can move it wherever you want)
- Import/Export:
- Open PNG, JPEG/JPG, BMP
- Export to PNG (with or without transparency), JPEG/JPG, BMP
- Handy details:
- Hold Shift while drawing rectangles/ellipses to constrain to squares/circles
- Grid is shown when zoom (cell size) is at least 4
- Python 3, virtualenv
- OS: Windows, MacOS or GNULinux
- Dependencies:
I did not use uv or poetry for this project;
I don’t think it is necessary to introduce a tool of that kind for a project that is, all things considered, simple.
- Clone the repository:
git clone https://github.com/danterolle/tilf.git && cd tilf
- This project has a Makefile
that automates all the necessary build and cleanup operations for Tilf (for MacOS and GNU/Linux only), so we just need to run:
- The executable will be in the
dist
folder.
Enjoy!
- Clone the repository by using Git Bash:
git clone https://github.com/danterolle/tilf.git
- Create a virtual environment:
- Activate the virtual environment:
- Install the dependencies:
pip install pyside6 pyinstaller pillow
Note:
- And finally, run the application:
- Clone the repository by using Git Bash:
git clone https://github.com/danterolle/tilf.git
- Install the dependencies:
pip install pyside6 pyinstaller pillow
- Run PyInstaller:
pyinstaller --name tilf --onefile --windowed --icon assets/icon.icns --add-data assets:assets --add-data style.qss:. main.py
- The executable will be in the
dist
folder.
- File:
- New: Ctrl+N
- Open: Ctrl+O
- Save: Ctrl+S
- Edit:
- Undo: Ctrl+Z
- Redo: Ctrl+Y
- Tools:
- Pencil: B
- Eraser: E
- Bucket: G
- Eyedropper: I
- Rectangle: R
- Ellipse: C
- Shapes:
- Constrain to square/circle: hold Shift
- Export formats:
- PNG: optionally keep transparency.
- JPEG/JPG, BMP: no transparency.
On close, if there are unsaved changes, a recovery .png is automatically saved into a tilf_autosaves
folder next to the startup script, with a timestamped filename.
Ensure your virtualenv is active and run: pip install pyside6
- Open issues for bugs or feature requests.
- For PRs, please keep the code style consistent and explain changes clearly.
- Feature ideas are welcome (e.g. advanced fills, selections, layers). Thank you!
GPL v3.0, see the LICENSE file for details.