Skip to content

FMO - File Meta Organizer

Introduction

FMO (File Meta Organizer) is an Electron application for organizing files using custom metadata that the filesystem doesn't natively support. Instead of being forced to place a file in a single folder, you can tag files with multiple categories and find them using powerful custom queries.

Problem It Solves

Files don't come with the metadata you need:

  • Ratings: Most file formats don't support star ratings or custom scores
  • Multi-category classification: A file can only be in one folder - is a "punk classical" song punk or classical?
  • Custom attributes: Want to store release year, artist, BPM, or any custom property? Most formats don't support it
  • Flexible searching: File systems offer basic name/path matching - not "punk & classical & rating:>=4"

Solution

FMO lets you:

  1. Add custom tags to any file - a song can be both "punk" and "classical"
  2. Define attributes - store any custom properties (year, artist, BPM, etc.)
  3. Search with queries - find files using powerful syntax like tag1 & tag2 or @year:2020
  4. Create databases - separate collections for different purposes

Core Concepts

Entities

An entity represents a file in your database. Each entity has:

  • Path - The filesystem path to the actual file
  • Tags - Free-form categories you assign (e.g., "rock", "favorite", "work")
  • Attributes - Key-value pairs for custom metadata (e.g., {year: 2020, artist: "John"})
  • Embedded data - Automatically extracted from files (EXIF, ID3, etc.)

Databases

FMO uses SQLite databases to store entity information. You can:

  • Create multiple databases for different collections
  • Import/export databases
  • Use system-wide databases across multiple instances

Query Syntax

Search entities using a powerful custom query language:

Syntax Description Example
tagname Entities with this tag rock
tag1 & tag2 AND - entities with both tags rock & 2024
tag1 | tag2 OR - entities with either tag rock | metal
-tag Negation - entities without this tag -pop
@key:value Attribute query @year:2020
@key:>value Numeric comparison @rating:>4
~filename Path/filename search ~example
"tag with spaces" Tags with spaces "dead kennedys"

Tags

Tags are free-form categories that can contain spaces and special characters:

  • Use / as a separator for hierarchical tags: /artist/punk
  • Spaces are fully supported: "dead kennedys", classic rock
  • No limits on tag names or structure

Variables

Variables are database-level settings that control behavior:

  • System variables: control app-wide behavior
  • Database variables: control per-database settings
  • Examples: file_types, file_filter, directory_filter

Key Features

Tag-Based Organization

  • Add multiple tags to any entity
  • Search by single tags or complex combinations
  • Hierarchical tags using / separator
  • Full support for spaces in tag names

Custom Search Queries

  • Boolean operators: & (AND), | (OR), - (NOT)
  • Attribute queries with comparisons: =, !=, >, <, >=, <=
  • Pattern matching: like operator with wildcards
  • Path/filename search with ~ prefix

Attribute Tracking

  • Store any custom key-value pairs
  • Search by attributes using @key:value syntax
  • Support for multiple value types (string, number, boolean, etc.)
  • Auto-extraction from file metadata (EXIF, ID3 tags, etc.)

Database Management

  • Create multiple SQLite databases
  • Import/export databases
  • System database for global settings
  • Database selection and switching

MCP Server Integration

  • Model Context Protocol server for AI integration
  • Allows AI assistants to query and manage your database
  • HTTP transport with bundled proxy for stdio clients
  • Full CRUD operations via MCP tools

Clipboard & Export

  • Multi-clipboard system for bulk operations
  • Export selections as M3U8, TXT, or JSON
  • Copy paths, tags, and attributes
  • Paste external data to create entities

Media Handling

  • Thumbnail generation for images and videos
  • Media player integration for audio/video
  • FFmpeg integration for media metadata extraction
  • EXIF data extraction from images