ImageTagger is a desktop annotation tool for image/text pairs, built with PyQt6 for ML dataset curation workflows.
It is designed for teams and solo practitioners who need to keep large caption/tag corpora clean, consistent, and model-ready.
Windows:
- Double-click
install.bat(or run it from a terminal). - Double-click
run.batto launch.
Linux / macOS:
chmod +x install.sh run.sh update.sh./install.sh./run.sh
To update dependencies later: run update.bat (Windows) or ./update.sh (Linux/macOS).
Then:
- Open a folder containing images.
- Start an LLM server endpoint:
- Ollama (default): https://ollama.com on port 11434.
- OpenAI-compatible server (for example vLLM) on a non-11434 port such as 8000.
- Enter the endpoint and fetch models.
- Qwen3-VL-8B is the current recommended model for the best practical performance/quality balance.
- Select one or more images.
- Generate, validate, and resolve fixups.
Supported image formats: jpg, jpeg, png, bmp, gif, webp.
- Docs index: docs/README.md
- Full usage guide: docs/usage.md
- Ollama settings: docs/ollama_settings.md
- Screenshots: docs/screenshots/main_window.png, docs/screenshots/merge_dialog.png
- Batch operations on selected images for Generate, Validate, and AI Find.
- Fixup workflow backed by per-image .fixup files.
- Expression-based filtering with fixup, quoted tags, freetext, AND/OR, and parentheses.
- Editable prompt tabs for Description, Tagging, Validation, and AI Search.
- Preview context menu with Open in Default App and Open With support.
Main window:
Merge dialog:
This project is heavily inspired by TagGUI.
TagGUI deserves full credit for the core UI layout direction and practical workflow ideas.
For transparency and legal disclosure, this codebase was 100% AI-generated with GitHub Copilot.

