A modern web application for reading, editing, and transferring EXIF metadata between images. Built with React, TypeScript, and TailwindCSS, featuring an intuitive drag-and-drop interface for photographers and image processing workflows.
- Read & Edit EXIF Data - View and modify comprehensive metadata from images with an interactive editor
- Transfer EXIF Data - Copy metadata between different images seamlessly
- Preserve Image Quality - Lossless EXIF operations without image degradation
- Multiple Format Support - Works with JPEG, PNG and other common formats
- Detailed EXIF Display - View organized metadata with human-readable labels and collapsible sections
- GPS Data Control - Option to preserve or remove GPS location information
- Fuji Film Simulation Support - Special handling for Fujifilm camera recipes and film simulations
- Dual Mode Operation - Separate modes for EXIF editing and data transfer
- Drag & Drop Upload - Intuitive file upload experience with visual feedback
- Real-time Preview - Instant image and EXIF data visualization
- Interactive EXIF Editor - Click-to-edit functionality for modifying metadata values
- Dark/Light Theme - System preference aware theme switching
- Responsive Design - Mobile-first approach optimized for all devices
- Export Options - Download processed images or export EXIF data as JSON
- Vite 6 - Lightning-fast build tool with Hot Module Replacement
- React 19 - Latest React with concurrent features
- TypeScript - Full type safety and IntelliSense support
- TailwindCSS 4 - Utility-first CSS with modern design system
- EXIF Libraries -
exif-readerandpiexif-tsfor robust metadata handling - Fuji Recipes -
fuji-recipeslibrary for Fujifilm film simulation support
- ESLint + Prettier - Consistent code formatting and linting
- Git Hooks - Pre-commit hooks with lint-staged for quality assurance
- Modern Tooling - Optimized development workflow with hot reloading
- TypeScript Config - Strict type checking with path mapping support
- Node.js 18+
- pnpm (recommended package manager)
# Clone the repository
git clone https://github.com/innei/exif-transfer
cd exif-transfer
# Install dependencies
pnpm install
# Start development server
pnpm dev- Upload Image - Drag and drop or click to select an image with EXIF data
- View & Edit - Browse organized EXIF sections and click on values to edit them
- GPS Control - Choose to preserve or remove GPS location data
- Export Options - Download the modified image or export EXIF data as JSON
- Upload Source Image - Select an image with EXIF data you want to copy
- Upload Target Image - Select the image you want to add EXIF data to
- Transfer EXIF - Click "Transfer EXIF" to copy metadata from source to target
- View Results - Inspect the transferred EXIF data in the organized display
- Download - Save the processed image with embedded EXIF metadata
src/
โโโ components/ # Reusable UI components
โ โโโ ui/ # Base UI components (buttons, accordion, etc.)
โ โโโ common/ # App-specific components
โ โโโ ExifDisplay.tsx # Interactive EXIF metadata display
โ โโโ ImageUploader.tsx # Drag & drop image uploader
โ โโโ GpsDisplay.tsx # GPS coordinate display
โโโ pages/ # Application pages
โ โโโ reader/ # EXIF editor interface
โ โโโ transfer/ # EXIF transfer interface
โโโ hooks/ # Custom React hooks
โ โโโ useExif.ts # EXIF data extraction hook
โโโ lib/ # Utility functions and configurations
โ โโโ exif-tags.ts # EXIF tag mapping and translations
โ โโโ exif-converter.ts # EXIF format conversion utilities
โ โโโ cn.ts # Class name utilities
โโโ providers/ # Context providers
โโโ atoms/ # Jotai state management
โโโ styles/ # Global styles and Tailwind config
- Organized Sections - Collapsible sections for different EXIF categories
- Click-to-Edit - Interactive editing of EXIF values with proper formatting
- Human-Readable Labels - Friendly names for technical EXIF tags
- Value Formatting - Automatic formatting for exposure, ISO, GPS coordinates, etc.
- Fuji Recipe Support - Special handling for Fujifilm film simulation data
- Drag & Drop - Visual feedback for file operations
- Image Preview - Immediate preview with proper aspect ratio
- File Validation - Support for JPEG, PNG, and other common formats
- Error Handling - Graceful handling of invalid or corrupted files
- Robust Extraction - Uses
exif-readerfor comprehensive metadata reading - Metadata Injection -
piexif-tslibrary for embedding EXIF data - Format Conversion - Seamless conversion between different EXIF formats
- Binary Data Handling - Proper encoding/decoding of complex EXIF structures
The application handles comprehensive EXIF metadata including:
- Camera Settings - Aperture (f/stop), shutter speed, ISO sensitivity, focal length
- Image Technical - Resolution, color space, orientation, compression
- GPS Information - Latitude, longitude, altitude, timestamp
- Timestamps - Original capture time, modification dates
- Equipment Details - Camera make/model, lens information, firmware
- Exposure Data - Exposure mode, metering mode, white balance, flash settings
- Fujifilm Specific - Film simulation recipes, dynamic range settings
- Exposure Time - Displayed as fractional seconds (e.g., "1/250s")
- Aperture - F-number format (e.g., "f/2.8")
- ISO - Standard ISO notation (e.g., "ISO 800")
- Focal Length - Millimeter notation (e.g., "50mm")
- GPS Coordinates - Decimal degrees with hemisphere indicators
- Timestamps - Localized date/time formatting
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is open source and available under the MIT License.
Built with โค๏ธ for photographers and image processing enthusiasts
2025 ยฉ Innei, Released under the MIT License.
Personal Website ยท GitHub @Innei