Descify is a cross-platform desktop application that generates titles, keywords, and descriptions for images in batch using AI models. Built with Tauri, React, and TypeScript, it streamlines metadata workflows for stock photographers, e-commerce catalogs, and content managers.
- Gemini (free tier available) and OpenRouter (paid) support -Supports local AI models via LM Studio (optional).
- Configurable AI prompt templates with variables (
${titleLimit},${descriptionLimit},${keywordLimit},${fileName},${currentDate}) - Built-in preset templates for Stock Photo, Product Catalog, and Social Media
- Create and save custom templates with custom instructions
- Avoid Words list to exclude specific terms from generated metadata
- Batch processing for multiple images at once
- Sequential mode — process one by one to avoid rate limiting on free/trial API keys
- Parallel mode — process up to 5 images simultaneously with paid API keys
- Configurable request delay (0–10s) between AI requests
- ExifTool integration for embedding metadata directly into image files
- Secure API key storage (Gemini & OpenRouter)
- Category tagging and organization
- Metadata export and embedding
git clone https://github.com/arrifat346afs/Descify.git
cd Descify
pnpm installpnpm run tauri devpnpm run tauri build- Configure API Keys — Open Settings and add your Gemini or OpenRouter key
- Import Images — Use the Upload button to select one or more images
- Select Mode — Choose Sequential (free APIs) or Parallel (paid APIs)
- Generate — Click Generate to produce AI-powered metadata
- Review & Save — Edit results, save metadata, or export
| Layer | Technology |
|---|---|
| Desktop Shell | Tauri 2.x |
| Frontend | React 18 + TypeScript 5.6 |
| Bundler | Vite |
| Styling | Tailwind CSS 4 + Radix UI |
| AI SDK | Vercel AI SDK (Google & OpenRouter providers) |
| State | Redux Toolkit |
| Backend (Rust) | Tauri commands for file I/O, ExifTool, and OS integration |
Descify/
├── src/ # React application source
│ └── app/ # Application components
├── src-tauri/ # Tauri Rust backend
├── public/ # Static assets
├── img/ # Logo & screenshots
├── scripts/ # Utility scripts
├── package.json
└── vite.config.ts
Warning
OpenAI is not supported. The project uses Gemini (free) and OpenRouter (paid).
| Service | Get Key |
|---|---|
| Gemini | Google AI Studio |
| OpenRouter | OpenRouter |
Contributions, issues, and feature requests are welcome. Feel free to open a pull request or issue.
Distributed under the MIT License. See LICENSE for more information.

