Skip to content

Smart Collections

A smart collection is a collection defined by filter criteria instead of hand-picked games. You set filters ("SNES games tagged RPG", "Zelda franchise", "playable in the browser") and RomM keeps the list in sync as you add ROMs and edit metadata.

For hand-curated collections, see Collections, and for auto-generated groupings, see Virtual Collections.

How filters work

A smart collection holds a fixed set of filter fields (it isn't a generic rule engine). Each field accepts one or more values, and multi-value fields take a <field>_logic companion that picks any (OR) or all (AND) within that field. Different fields are always combined with AND.

This model has some limits:

  • No top-level OR. You can't express "Franchise = Zelda OR Title contains 'zelda'". Different fields always AND.
  • No negation. Filters are inclusion-only. There's no "Status is not Complete" or "exclude Genre RPG".
  • No nesting. A smart collection can't filter on another smart collection.

Supported fields

Multi-value

Each takes one or more values. All (except platform_ids) also accept a <field>_logic companion of any (OR, the default) or all (AND).

Field Matches
platform_ids One or more platforms
genres Game genres
franchises Franchises
collections Membership in named collections
companies The combined company credit
publishers Publishers specifically
developers Developers specifically
age_ratings ESRB / PEGI categorical labels
regions Region tags
languages Language tags
tags Arbitrary filename tags
statuses Your play status (backlogged, playing, etc.)
player_counts Supported player counts
metadata_providers Which provider matched the game

Boolean

Field Matches
matched Games a metadata provider matched
verified Games with a verified match
favorite Your favourites
duplicate Games with more than one version
playable Platforms with a browser player
has_ra Games with a RetroAchievements set
has_saves Games you have a save for
has_states Games you have a state for
has_soundtrack Games with tracks in the Jukebox
missing Games flagged missing from the filesystem
physical Physical games, entries with no file on disk

Single-value

Field Matches
search_term Case-insensitive substring match against the title
collection_id, virtual_collection_id Membership in one specific collection
hltb_main_story_min, hltb_main_story_max A game length range

Game length

Lengths come from HowLongToBeat, so you need HLTB_API_ENABLED=true and a scan that matched the game. It's main story time, and you can set a floor, a ceiling, or both. The gallery sorts and filters by it too, without needing a collection. Games HowLongToBeat never matched have no length at all and drop out of a length filter entirely.

Examples

"SNES RPGs I'm playing or haven't started"

Platform: snes
Genre: RPG
Status: Never Played, Playing

Filters are inclusion-only, so list the statuses you want and leave out the rest.

"Arcade games playable in browser"

Platform: arcade
Playable in browser: yes

"Short games I own physically and haven't started"

Physical: yes
Status: Never Played
Main story: up to 8 hours

"Zelda franchise"

Franchise: The Legend of Zelda

To match by title substring instead, use Title: zelda. You can't OR the two together in one collection (different fields always AND).

Public / private

Smart collections use the same visibility model as standard collections:

  • Private: only you see it. Personal-data fields (Status) only make sense here.
  • Public: everyone on the instance sees it. Your personal-data filters still apply, so a public smart collection filtering on Status will reflect your statuses for every viewer.

Refresh behaviour

Smart collections refresh when ROMs are added, removed, or edited, and on scan, so you don't need to refresh them manually.