Skip to content

Repository files navigation

einspect

einspect icon

einspect is a small desktop app for viewing EXIF metadata embedded in local image files. Select a file and the app displays each metadata entry's IFD, tag, and value in a readable table.

Files are parsed locally by the Rust backend; einspect does not upload the selected file.

Features

  • Native, single-file picker
  • EXIF output grouped into IFD, tag, and value columns
  • Entry count and selected filename in the app header
  • Support for common image containers and several camera RAW formats
  • Cross-platform desktop shell powered by Tauri

File formats

The image picker accepts:

  • JPEG (.jpg, .jpeg)
  • PNG (.png)
  • HEIC/HEIF (.heic, .heif)
  • AVIF (.avif)
  • TIFF (.tif, .tiff)
  • Phase One IIQ (.iiq)
  • Fujifilm RAF (.raf)
  • Canon CR3 (.cr3)

The picker also exposes MP4, MOV, 3GP, MKV, WebM, and MKA files. Track metadata for those video and audio formats is not currently displayed because the backend uses nom-exif's image EXIF reader. A file with no readable EXIF entries is shown as no exif data.

Requirements

Development

Install the dependencies:

pnpm install

Launch the desktop app in development mode:

pnpm tauri dev

Tauri starts the Vite development server automatically on port 1420 and opens the native application window. Running pnpm dev by itself only serves the frontend; file selection and metadata extraction require the Tauri runtime.

Build

Create a release build and platform-specific installer:

pnpm tauri build

Generated bundles are written beneath src-tauri/target/release/bundle/.

Checks

Run the Svelte and TypeScript checks:

pnpm check

Build the static frontend:

pnpm build

Check the Rust backend:

cargo check --manifest-path src-tauri/Cargo.toml

How it works

  1. src/routes/+page.svelte opens Tauri's native file dialog.
  2. src/lib/core/exif.ts sends the selected path to the extract_exif_data Tauri command.
  3. src-tauri/src/exif.rs reads the file with nom-exif and serializes each EXIF entry into an ifd, tag, and value string.
  4. The Svelte frontend renders the returned entries in a table.

Parsing failures and files without readable EXIF metadata currently produce the same empty result.

Project structure

src/
├── lib/core/exif.ts       # Typed frontend wrapper for the Tauri command
└── routes/
    ├── +page.svelte       # File picker and metadata table
    └── layout.css         # Tailwind CSS and daisyUI theme setup
src-tauri/
├── capabilities/          # Tauri window permissions
├── src/exif.rs            # Rust EXIF extraction command
├── src/lib.rs             # Tauri application and plugin setup
└── tauri.conf.json        # Window, build, and bundle configuration

Tech stack

About

einspect is a small desktop app for viewing EXIF metadata embedded in local image files. Select a file and the app displays each metadata entry's IFD, tag, and value in a readable table.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Contributors

Languages